You are on page 1of 37

Introducci on a Shell

Sistemas Operativos

Departamento de Sistemas Telem aticos y Computaci on (GSyC)


so-profes@gsyc.es

Febrero de 2009

GSyC - 2009

c 2009 GSyC Algunos derechos reservados. Este trabajo se distribuye bajo la licencia Creative Commons Attribution Share-Alike disponible en http://creativecommons.org/licenses/by-sa/2.1/es

GSyC - 2009

Contenidos
1 2 3 4 5 6 7

Introducci on Funcionamiento b asico Operaciones con cheros Sustituciones Redirecciones y ltros Shell scripts Comandos u tiles

GSyC - 2009

Introducci on

Contenidos
1 2 3 4 5 6 7

Introducci on Funcionamiento b asico Operaciones con cheros Sustituciones Redirecciones y ltros Shell scripts Comandos u tiles

GSyC - 2009

Introducci on

Interfaz gr aco

Supone un gran avance Excelente para usuarios no t ecnicos, o para tareas que hagamos de vez en cuando Uso exhaustivo del rat on Mucho menos eciente No son est andar Unix Exigen tener gr acos (mucho m as lento...) Unix dispone de interfaz gr aco desde los 80. X-Window. Sobre las X-Window va el gestor de ventanas y el escritorio (actualmente KDE o Gnome)

GSyC - 2009

Introducci on

Interfaz de texto

Casi todos los sistemas operativos tienen un interfaz de texto, para usarlo (por ejemplo) cuando el sistema gr aco no funciona M etodo de entrada: teclado Para usar un interfaz de texto:
Terminal X (xterm, gnome-terminal, konsole. . . ) Consola: terminales virtuales (Ctrl+Alt+F1 . . . Ctrl+Alt+F6) (vuelta a la sesi on X con Ctrl+Alt+F7) Para cerrar una sesi on de texto: exit.

GSyC - 2009

Introducci on

Qu e es una shell?

Programa interfaz entre el usuario y el Sistema Operativo Doble funci on:


Int erprete de la l nea de comandos (comunicaci on con el S.O.) Lenguaje de programaci on

Shells m as habituales:
command.com, cmd.exe (MS-DOS, MS-Windows) sh o Bourne Shell csh (C SHell) tcsh (Trustedi C Shell) ksh (Korn SHell) bash (Bourne Again SHell)

GSyC - 2009

Funcionamiento b asico

Contenidos
1 2 3 4 5 6 7

Introducci on Funcionamiento b asico Operaciones con cheros Sustituciones Redirecciones y ltros Shell scripts Comandos u tiles

GSyC - 2009

Funcionamiento b asico

C omo funciona una shell?

1 2 3 4 5 6

Muestra el prompt Lee una l nea La analiza Ejecuta los comandos de la l nea Espera a que terminen Vuelve al punto 1

GSyC - 2009

Funcionamiento b asico

Comandos, argumentos

Cada l nea que ejecute la shell consiste en una lista de comandos separados por ;. Cada comando est a compuesto de un nombre, seguido opcionalmente de argumentos $ comando1 ; comando2 arg1 arg2 ; ... Ejemplo de comando: echo $ echo Hola, mundo $ echo First line ; echo ; echo Third line

GSyC - 2009

10

Funcionamiento b asico

P aginas de manual
Para consultar una p agina de manual: man comando (dentro de man: q para salir) Para buscar p aginas relacionadas con algo: apropos palabra Las p aginas de manual se organizan por secciones (man 1 write, man 2 write)
1 2 3 4 5 6 7 8

Comandos de usuario Llamadas al sistema Llamadas a funciones de biblioteca Ficheros especiales Ficheros, formatos y protocolos Juegos Convenciones, miscel anea Comandos de administrador y privilegiadas

La p agina m as importante de cada secci on: man secci on intro


GSyC - 2009 11

Funcionamiento b asico

Control de la ejecuci on

Normalmente, la shell espera a que termine la ejecuci on de un comando antes de leer la siguiente l nea y empezar con el siguiente. Pero hay 3 excepciones: Si se postpone el car acter & al comando a ejecutar, ese comando se ejecuta as ncronamente, en background. La shell no espera a que termine y sigue aceptando l neas y ejecutando otros comandos, simult aneamente a la ejecuci on de este. Podemos interrumpir un proceso antes de que termine con la combinaci on de teclas ^C (control + C) Podemos parar temporalmente la ejecuci on de un proceso con la combinaci on de teclas ^Z (control + Z)

GSyC - 2009

12

Funcionamiento b asico

Primer plano, segundo plano


Para la shell, hay 3 estados en la ejecuci on de un proceso: En primer plano (foreground)
Ejecuci on normal. La shell espera a que termine la ejecuci on para seguir con la siguiente orden.

En segundo plano (background)


Es el estado en el que est an los comandos en los que se ha indicado el car acter &.

Parado, suspendido (stopped, suspended)


Es el estado en el que est an los procesos al recibir una combinaci on de teclas ^Z

Se puede consultar la lista de procesos en ejecuci on (en segundo plano, o parados) con la orden jobs, y cambiar el estado de un proceso con bg o fg

GSyC - 2009

13

Funcionamiento b asico

Control de trabajos
cespedes@blas:~$ sleep 3600 & [1] 5954 cespedes@blas:~$ cat (control+Z) [2]+ Stopped cat cespedes@blas:~$ jobs [1]- Running sleep 3600 & [2]+ Stopped cat cespedes@blas:~$ kill %2 [2]+ Terminated cat cespedes@blas:~$ jobs [1]+ Running sleep 3600 & cespedes@blas:~$ fg sleep 3600 (control+Z) [1]+ Stopped sleep 3600 cespedes@blas:~$ bg [1]+ sleep 3600 & cespedes@blas:~$
GSyC - 2009 14

Operaciones con cheros

Contenidos
1 2 3 4 5 6 7

Introducci on Funcionamiento b asico Operaciones con cheros Sustituciones Redirecciones y ltros Shell scripts Comandos u tiles

GSyC - 2009

15

Operaciones con cheros

Arbol de directorios
Todos los cheros est an estructurados en un arbol jer arquico La ra z del arbol se representa con / Cualquier nodo del arbol se puede representar como su camino desde la ra z, con todos los nombres de los nodos intermedios (directorios) separados por / /usr/share/doc/base-files/copyright Tambi en se pede representar de manera relativa, como el camino que hay que seguir desde el directorio actual base-files/copyright Directorios con signicado especial:
.: directorio actual ..: directorio padre

GSyC - 2009

16

Operaciones con cheros

Moverse por los directorios

Al iniciar la sesi on, estamos normalmente en el directorio de inicio, tambi en llamado $HOME o simplemente HOME. El directorio $HOME suele ser /home/login. pwd cd ls Indica cu al es el directorio actual Cambia el directorio actual por otro Sin argumentos: cambia al directorio $HOME Muestra el contenido de un directorio ls -a: Muestra tambi en cheros ocultos ls -l: Muestra informaci on detallada Muestra el contenido de un chero

cat

GSyC - 2009

17

Operaciones con cheros

Creaci on, borrado

touch mkdir rmdir cp

mv ln rm

Crea un chero (vac o) Crea un directorio Borra un directorio Copia un chero cp origen destino cp orig1 orig2 ...directorio Renombra y/o mueve un chero Crea un enlace de un chero a otro Borra un chero rm -r: Borra un directorio y su contenido

GSyC - 2009

18

Operaciones con cheros

Permisos de cheros

Regulan el acceso por parte de los usuarios a cada chero. Cada chero tiene:
Permisos para el propietario Permisos para el grupo Permisos para el resto

Los tipos de permisos son:


Lectura (r) Escritura (w) Ejecuci on (x)
cespedes@draco:~$ ls -l /etc/shadow -rw-r----- 1 root shadow 1176 2008-11-06 23:53 /etc/shadow

GSyC - 2009

19

Operaciones con cheros

Permisos en directorios

En los directorios, el signicado de los tipos de permisos es ligeramente distinto al del resto de cheros:
r: Se puede ver el nombre de los cheros que contiene el directorio. w: En ese directorio se pueden crear, borrar o renombrar cheros. x: Se puede acceder al contenido del directorio, y a subdirectorios de este.

GSyC - 2009

20

Operaciones con cheros

chmod

chmod es el comando que se utiliza para cambiar los permisos de un chero Solo el due no de un chero puede cambiar sus permisos Dos modos de uso:
chmod 752 fichero Asigna ese modo en octal (rwxr-xrw-) chmod u+r fichero A nade al due no permiso de lectura u (user) + (a nade) r (lectura) g (group) - (quita) w (escritura) o (other) = (asigna) x (ejecuci on) a (all)

GSyC - 2009

21

Sustituciones

Contenidos
1 2 3 4 5 6 7

Introducci on Funcionamiento b asico Operaciones con cheros Sustituciones Redirecciones y ltros Shell scripts Comandos u tiles

GSyC - 2009

22

Sustituciones

Variables

Asignaci on de una variable a un valor:


NOMBRE=valor

Uso de una variable: $NOMBRE en cualquier parte de una l nea Lista de variables: set Borrar una variable: unset VARIABLE Se puede delimitar el nombre de una variable con llaves:
echo una${variable}dentrodeunapalabra

Variables predenidas, con nombre especial:


HOME PATH

GSyC - 2009

23

Sustituciones

Sustituci on de comando

Ejecuci on de una orden antes de evaluar la l nea, se inserta el resultado en la l nea actual Se utilizan comillas invertidas cmd, o bien $(cmd) Ejemplos: cespedes@coco:~$ AHORA=date cespedes@coco:~$ echo $AHORA Mon Feb 21 12:55:40 CET 2005 cespedes@coco:~$ echo Nombre: whoami, dir: $(pwd) Nombre: cespedes, dir: /home/cespedes

GSyC - 2009

24

Sustituciones

Sustituci on de nombres de chero

Existen algunos caracteres comod n, que se utilizan para referirse a varios cheros simult aneamente * Cualquier cadena de longitud 0 o m as ? Cualquier car acter [ach] Cualquier car acter de la lista [a-f] Cualquier car acter del rango [!wxz] Cualquier car acter que no est e en la lista Ejemplo: echo *.txt

GSyC - 2009

25

Sustituciones

Comillas

Se utilizan para agrupar argumentos y para evitar sustituciones "Comillas dobles" Sustituye variables y ordenes, no sustituye nombres de chero
cespedes@gizmo:~$ echo "$HOSTNAME, pwd, *" blas, /home/cespedes, *

Comillas simples No se realiza ninguna sustituci on Comillas invertidas Ya las hemos visto, son una sustituci on de orden: se ejecuta la orden entre las comillas y se sustituye todo por el resultado de esa orden

GSyC - 2009

26

Sustituciones

Car acter de escape \

Se puede utilizar el car acter \ para: Dividir una orden en varias l neas:
cespedes@epi:~$ ls \ > -al

Obligar a la shell a que no interprete determinados caracteres (, ", $, \), escribi endolos precedidos precedidos del car acter de escape:
cespedes@epi:~$ echo "Cantidad total: \"25\$\"" Cantidad total: "25$"

GSyC - 2009

27

Redirecciones y ltros

Contenidos
1 2 3 4 5 6 7

Introducci on Funcionamiento b asico Operaciones con cheros Sustituciones Redirecciones y ltros Shell scripts Comandos u tiles

GSyC - 2009

28

Redirecciones y ltros

Entrada y salida est andar


Normalmente, los comandos leen l neas del teclado, y las escriben por la pantalla Esto es lo que se llama entrada est andar (stdin) y salida est andar (stdout) Existe adem as una salida de error, que es donde los programas env an sus mensajes de error (stderr) En UNIX, las entradas y salidas est andar y de error, y cualquier entrada o salida que realice un proceso (leer o escribir en un chero, o por la red. . . ) se representa con un descriptor de chero, que es un n umero 0
0: Entrada est andar 1: Salida est andar 2: Salida de error

GSyC - 2009

29

Redirecciones y ltros

Redirecci on de entrada y salida

Se puede cambiar la entrada (stdin) / salida (stdout) est andar o la salida de error (stderr) de cualquier orden. < fichero > fichero >> fichero 2> fichero 2>&1 &> fichero << cadena Toma stdin del chero Env a stdout al chero Env a stdout al nal del chero (a nade) Env a el fd 2 (stderr) al chero Env a stderr a donde vaya stdout stdout y stderr al chero stdin de aqu en adelante hasta encontrar cadena

Adicionalmente: n<, n>, n>>, n>&m

GSyC - 2009

30

Redirecciones y ltros

Pipes (ltros)

Se especican escribiendo dos ordenes en la misma l nea, separadas por el car acter | Las dos ordenes se ejecutan simult aneamente, conectando la salida est andar de la primera a la entrada est andar de la segunda Ejecutar orden1 | orden2 es similar a ejecutar orden1 > /tmp/file seguido de orden2 < /tmp/file, pero ejecutando las dos ordenes simult aneamente Ejemplo:
cespedes@kermit:~$ ls -l | grep jpg -rw------- 1 cespedes cespedes 38016 2007-06-23 15:06 corbata1.jpg -rw------- 1 cespedes cespedes 30816 2007-06-23 15:06 corbata2.jpg -rw-rw-r-- 1 cespedes cespedes 238412 2007-11-12 12:57 viking.jpg

GSyC - 2009

31

Shell scripts

Contenidos
1 2 3 4 5 6 7

Introducci on Funcionamiento b asico Operaciones con cheros Sustituciones Redirecciones y ltros Shell scripts Comandos u tiles

GSyC - 2009

32

Shell scripts

Shell scripts
shell script = Programa en shell Separador de sentencias: cambio de l nea o ;. Comentarios: # hasta el nal de la l nea. La primera l nea indica qu e shell interpretar a el script:
#!/bin/sh

Es necesario que el script tenga permisos de ejecuci on para el usuario que lo ejecute (chmod +x nombre). Ejemplo: #!/bin/sh echo "Hola, mundo"

GSyC - 2009

33

Shell scripts

Variables en scripts

Variables especiales: $# N umero de argumentos $n (n=n umero) Argumento n- esimo del script $* Todos los argumentos. "$*" = "$1 $2 $3..." $@ Todos los argumentos. "$@" = "$1" "$2" "$3"... $$ PID de la shell $! PID del u ltimo comando en background

GSyC - 2009

34

Comandos u tiles

Contenidos
1 2 3 4 5 6 7

Introducci on Funcionamiento b asico Operaciones con cheros Sustituciones Redirecciones y ltros Shell scripts Comandos u tiles

GSyC - 2009

35

Comandos u tiles

Comandos u tiles
Todos estos comandos operan con un chero, o con la entrada est andar: cat: Muestra todo el contenido sort: Ordena l neas uniq: Elimina l neas repetidas wc: Cuenta caracteres, palabras y l neas head: Muestra las primeras l neas tail: Muestra las u ltimas l neas grep: Muestra l neas que encajen con una expresi on regular sed: . . . awk: . . .

GSyC - 2009

36

Comandos u tiles

Expresiones regulares
Una expresi on regular es una secuencia de caracteres. Se utiliza para saber si una l nea encaja con un patr on. Un car acter cualquiera que no sea especial encaja con el mismo car acter. Adem as, hay caracteres especiales: . Un car acter cualquiera * Repetido 0 o m as veces + Repetido 1 o m as veces ? Opcional (0 o 1 veces) [afz] Cualquiera de estos caracteres [^btx] Cualquier car acter salvo estos ^ Principio de l nea $ Fin de l nea
GSyC - 2009 37

You might also like