Upload
sebas-nunez
View
39
Download
0
Embed Size (px)
Citation preview
Introducción al Shell UNIX
Interfaz de usuario basada en caracteres con el sistemaoperativo tipo UNIX (Linux, AIX, SunOS, etc.)
Interacción con el usuario por línea de comandos
Salida de los programas basada en texto
Traduce las líneas de comandos en instrucciones del sistema operativo
UNIX es uno de los primeros SO en hacer la interfaz de usuario independiente del SO
Alcance:
– Interfaz de usuario
– Entorno de programación. Shell scripting.
Bourne Again Shell (BASH)
Origen:
– En 1978 Stephen Bourne desarrollo y distribuyoen la version del Sistema operativo Unix Version7.
– En 1987 Brian Fox escribió para el proyectoGNU sustituyendo al Bourne Shell por el BASH.
– En 1990 Chet Ramey renovó la versiónestableciendo como interprete predeterminadoen la mayoría de los sistemas GNU/Linux, MACOS X, Tiger y escalable en la mayoría de lossistemas operativos tipo unix
Bourne Again Shell (BASH)
Prestaciones más relevantes:
–Edición de la línea de comandos
–Control de trabajos
–Personalización de la shell
–Completo entorno de programación
Bash tiene como objetivo ser una
implementación conforme de la
especificación de Herramientas y Shell IEEE
POSIX (IEEE Working Group 1003.2).
Evolución de Internet
• Ficheros que lee bash cuando se arranca :
• 1./etc/profile
• 2.~/.bashrc, ~/.bash_profile, ~/.bash_login, and
~/.profile
• Más información sobre el bash:
• # man bash
Características de Linux
GNU/Linux (comúnmente Linux a secas) es uno más de los
muchos S.O. que existen en la actualidad que tiene una serie
de características que lo hacen especial: Libre: Se puede descargar de internet, copiar y distribuir sin que por ello se
incurra en ningún tipo de delito. La licencia que establece los términos de uso,
copia y distribución se denomina Licencia GNU (www.gnu.org)
Hecho por voluntarios: Linux no se creó para obtener beneficios con él sino
para satisfacer una serie de necesidades a la hora de trabajar con el ordenador.
Multiusuario: Varios usuarios pueden conectarse y usar el mismo ordenador a la
vez.
Multitarea: Pueden funcionar varios programas al mismo tiempo en la misma
máquina.
Multiplataforma: Hay versiones de Linux para gran cantidad de plataformas:
todos los PCs basados en procesadores Intel o AMD, ordenadores
Digital/Compaq con procesadores Alpha, ordenadores Apple, ultraportátiles como
el Asus Eee e incluso dispositivos móviles como el Sharp Zaurus.
Estable: Linux es un sistema operativo muy maduro, probado durante mucho
tiempo. Hay muchos servidores que llevan funcionando bajo Linux de forma
ininterrumpida muchos años sin un solo cuelgue.
Eficiente: Linux aprovecha bien los recursos hardware. Incluso los viejos
Pentium pueden funcionar bien con Linux y servir para alguna tarea.
Directorios más importantes de Linux:/bin Contiene programas ejecutables básicos para el sistema.
/boot Contiene los ficheros necesarios para el arranque del sistema.
/dev Contiene los ficheros correspondientes a los dispositivos
/etc Contiene ficheros y directorios de configuración.
/homeContiene los directorios de trabajo de los usuarios. Cada usuario tiene su
propio directorio en el sistema dentro de /home/.
/lib Contiene las librerías compartidas y los módulos del kernel
/media Dentro de este directorio se montan los dispositivos como el CD-ROM,
memorias USB, discos duros portátiles, etc
/opt Directorio reservado para instalar aplicaciones.
/sbin Contiene los ficheros binarios ejecutables del sistema operativo.
/srv Contiene datos de los servicios proporcionado por el sistema.
/tmp Directorio de archivos temporales.
/usr
Aquí se encuentran la mayoría de los archivos del sistema,
aplicaciones, librerías, manuales, juegos… Es compartido por todos los
usuarios.
/varContiene archivos administrativos y datos que cambian con frecuencia:
registro de errores, bases de datos, colas de impresión, etc.
/root Directorio de trabajo del administrador del sistema (usuario root).
/proc Aquí se almacenan datos del kernel e información sobre procesos.
Linux vs Unix
A nivel de línea de comandos, apenas hay diferencias. Se pueden usar
los mismos comandos indistintamente en distribuciones Linux o en
sistemas Unix.
A nivel gráfico tampoco hay mucha diferencia ya que ambos sistemas
utilizan X-Windows.
La principal diferencia es que Linux es libre mientras que la mayoría
de Unix no (a veces cuestan mucho dinero).
Otra diferencia importante es el hecho de que hay versiones de Linux
para prácticamente cualquier plataforma, mientras que los diferentes
Unix suelen estar enfocados a un hardware muy específico
Linux vs Windows
La principal diferencia, una vez más, es que Linux es libre
y, en la mayoría de los casos, gratis mientras que Windows
es un software propietario y requiere de licencia. De igual
manera, la gran mayoría de aplicaciones para Linux son
libres y gratuitas mientras que las aplicaciones para
Windows no lo son, aunque a veces es fácil encontrar
programas de evaluación (shareware) para Windows que
permiten probar un determinado programa durante un
tiempo de forma gratuita
¿QUÉ ES UNA DISTRIBUCIÓN
DE LINUX?
Una distribución de Linux es el sistema operativo propiamente dicho,
lo que se suele denominar el núcleo (kernel en inglés) junto con un
programa de instalación y un conjunto de aplicaciones, normalmente
de propósito general.
Distribución = Núcleo de Linux + Programa de instalación +
Aplicaciones
VIZUALIZACIÓN, CREACIÓN Y CAMBIO
DE DIRECTORIO (pwd, ls, cd, mkdir)
pwd
El comando pwd muestra cuál es el directorio de trabajo actual, en otras
palabras, le dice al usuario dónde se encuentra dentro de la estructura de
directorios del sistema. Es muy útil cuando estamos perdidos.
fpuna@fpuna-Virtualvox:~$ pwd
/home/fpuna
ls
El comando ls muestra el contenido del directorio actual. Por defecto,
los archivos ocultos no se muestran. Éste es seguramente el comando
que más se utiliza.
fpuna@fpuna-Virtualvox:~$ ls
VIZUALIZACIÓN, CREACIÓN Y CAMBIO
DE DIRECTORIO (pwd, ls, cd, mkdir)
Cd (change dir)
El comando cd (change dir) permite cambiar de directorio. Si se utiliza tal cual,
sin ningún tipo de argumento, cambia al directorio de trabajo personal. Si se
utiliza seguido de una ruta, cambia al directorio que se indica.
fpuna@fpuna-Virtualvox:~$ pwd
/home/fpuna
fpuna@fpuna-Virtualvox:~$cd /etcfpuna@fpuna-Virtualvox:/etc$ pwd
/etc
En este caso, el usuario estaba en su directorio de trabajo, y ha “saltado” al
directorio /etc. El lector puede teclear el comando ls si tiene curiosidad por ver lo
que hay dentro.
Las rutas pueden ser absolutas o relativas. Una ruta es absoluta cuando
comienza por el carácter “/” y relativa cuando comienza por cualquier otro
carácter
VIZUALIZACIÓN, CREACIÓN Y CAMBIO
DE DIRECTORIO (pwd, ls, cd, mkdir)
mkdir
Se pueden crear directorios con el comando mkdir. Por ejemplo, para crear
una estructura de carpetas donde un estudiante guardará información sobre
sus asignaturas según el siguiente esquema
/Documentos
/Escritorio
/Imágenes
/Música
/SO/examenes_antiguos
/home/fpuna /apuntes
/lcik /curso_03/Estructura
/Redes/libros_de_ejercicios
/videos
/informatica /compiladores_pascal
/Video
VISUALIZACIÓN DE FICHEROS
(cat, more, less, head, tail)
Los comandos cat, more y less sirven para mostrar el contenido
de ficheros de texto. La diferencia radica en cómo se muestra el
contenido. A todos estos comandos hay que pasarles como argumento
el fichero que se quiere mostrar. Se puede indicar una ruta, en caso de
que el fichero que se quiere mostrar no esté en el directorio actual.
El comando cat muestra por pantalla el contenido de un fichero y,
cuando termina, el usuario está otra vez de vuelta en la línea de
comandos.
Por ejemplo,~$ cat /var/log/dmesg
Muestra el contenido del archivo pero como es muy grande no podrá
visualizar desde el principio
VISUALIZACIÓN DE FICHEROS
(cat, more, less, head, tail)
El comando more hace lo mismo que cat, a diferencia de que muestra el
fichero pantalla a pantalla, es decir, llena de texto la pantalla y se espera a
que el usuario pulse la tecla <espacio> para pasar a la siguiente
~$ more /var/log/dmesg
El comando less es el más versátil de los tres, ya que permite moverse
hacia delante y hacia atrás dentro del fichero, utilizando los cursores o las
teclas de “AvPág” y “RePág”:
~$ less /var/log/dmesg
En cualquier momento se puede interrumpir la visualización y volver al
símbolo del sistema pulsando la letra “q”.
VISUALIZACIÓN DE FICHEROS
(cat, more, less, head, tail)
Los comandos head y tail permiten mostrar de forma parcial el
contenido de un fichero. Como su nombre indica, head muestra las
primeras líneas del fichero (la cabecera) y tail muestra las últimas líneas
(la cola).
Veamos algunos ejemplos
~$ head /boot/grub/grub.cfg
Les muestra las primeras líneas del texto
~$ tail /boot/grub/grub.cfg
Por defecto, tanto head como tail muestran 10 líneas, pero eso se puede
cambiar con la opción –n
~$ tail –n4 /boot/grub/grub.cfg
Desplegará las 4 ultimas lineas
Editores de ficheros(touch, vi,
joe,nano,gedit, mcedit)
El comando touch permite crear un fichero vacío. Con cualquier editor de
texto se puede crear un fichero vacío pero con touch es especialmente
cómodo y rápido.
~$ touch prueba.txt
Se puede ver en el ejemplo cómo se ha creado el archivo prueba.txt pero al
visualizar su contenido con cat, no aparece nada en pantalla, por tanto está
vacío.
Probar los editores citados (vi, joe,nano,gedit, mcedit)
Comandos Bash
Manejo de Directorios y Ficheros
• cp: copiar un fichero en otro o ficheros en un directorio
• cp [-R] [directorio/fichero origen] [directorio/fichero destino]
• rmdir: elimina un directorio (debe estar vacío)
• rmdir [nombre_directorio]
• rm: elimina un fichero
• rm [-r] [-f] nombre_fichero
Practiquemos
Crear en el directorio $HOME un directoriocon tu nombre. Utilizar el comando mkdir(comprobar la utilidad de la opción -p) paracrear los directorios y el editor de textos desu preferencia para crear los ficheros dentrola estructura de directorios …
Practiquemos1. /Home/FPUNA
a. Nombre del alumno
i. SO
1. File1
2. File 2
ii. Estructura
1. File1
2. File 2
iii.Redes
2. File1
1. File 2
i. Matemáticas
1. File1
2. File 2
RedirecciónPodemos redirigir la entrada, salida y el error estándar de
los mandatos.
mandato < fichero. En el mandato se usará fichero comoentrada y no el teclado. # cat < prueba
Mandato >fichero. La salida del mandato será enviada a fichero y no a la pantalla. # cal > prueba
Mandato 2> fichero. Los mensajes de error que un mandato puede generar también pueden ser redirigidos a un fichero, pero normalmente preferimos que se visualicepor pantalla.
mandato >> fichero. Añade la salida de mandato al final del fichero indicado.
Tuberías (pipe)
• Consiste en redirigir la salida estándar de un mandato
directamente a la entrada estándar de otro.
• ●No se crea ningún fichero intermedio.
• ●Se consigue separando los mandatos con el carácter
“|”(pipe).
• ●# ls -al /home | grep login_name
• ●# ls -al /home | wc -l
tar y gziptar es el empaquetador estándar de linux. Reune varios
ficheros en uno.
– # tar -cvf archivo.tar archivos_a_comprimir (para crear archivos tar).
– # tar -xvf archivo.tar (para desempaquetar un tar).
– # tar -tvf archivo.tar (muestra los archivosempaquetados).
gzip es el compresor estándar de linux, en general se usajunto a tar.
– # gzip -f archivo (para comprimirlo)
– # gzip -d archivo.gz (para descomprimirlo).
tar y gzip
• Empaquetando y comprimiendo a la vez.
– # tar -cvfz prueba.tar.gz /home/usuario/*
– # tar -xvfz prueba.tar.gz (previamentenos situamos)
Scripts
Scripts = Guiones.
Muy importantes desde el punto de vista del
Administrador.
Los servicios de Linux arrancan mediante scripts.
Permite:
• Construcciones de bucle
• Construcciones condicionales
• Funciones de shell
• Funciones built-in
Compilador GCC
El gcc es el compilador por excelencia con licencia
pública GNU. Es un compilador flexible y riguroso con el
estándar ansi C.
Proporcionamos al compilador un programa fuente y nos
devuelve un archivo binario compilado para nuestra
arquitectura
– # gcc [options] file.... Ejemplos hola.c Entrada.c
Para mas información man gcc
Opciones más comunes del gcc -o mediante esta opción podemos especificar el nombre del ejecutable
$gcc hola.c -o hola
-g incluye en el binario información necesaria para utilizar un depurador posteriormente.
-Wall No omite la detección de ningún warning.
-O <nivel> indica a gcc que utilice optimización en el código, posiblesvalores desde 0 a 3. Aumenta el tiempo de compilación.
-S Preprocesa y compila, pero no ensambla ni enlaza
-c Preprocesa, compila y ensambla pero no enlaza.
-L <dir> Especifica un directorio adicional donde gcc debe buscar laslibrerías necesarias en el proceso de enlazado.
-l <library> Especifica el nombre de una librería adicional que deberáser utilizada en el proceso de enlazado.
Compilando un programa C
Editando un programa
Con el editor de preferencia. Opción: gedit
• Compilando un programa:
# /usr/bin/gcc miprograma.c –o miprograma.exe
• Verificando y asignando permisos
# ls –l miprograma.exe
# chmod 755 miprograma.exe
• Ejecutando un programa:
# ./miprograma.exe
Compilación• Vamos a compilar el primer programa.
• # include <stdio.h>
• main()
• {
• printf(“hola, mundo\n”);
• }
# gcc hola.c -o hola