1. Introducción
El shell es un componente de Unix con una doble función:
1.-Intérprete de Órdenes
Me permite comunicar con el sistema operativo; admite las órdenes y las ejecuta. Por defecto hay varios intérpretes de órdenes para que yo elija uno de ellos: sh, bash, csh, ksh,… Cada uno de ellos tiene carácterísticas especiales para una determinada situación.
2.- Lenguaje de Programación
Puedo diseñar programas completos. Los Shell-Scripts son archivos de texto en los que puedo introducir comandos
2.GUIONES DEL SHELL ( scripts)
Shell de Presentación
Shell que se ejecuta automáticamente cuando iniciamos una sesíón. Viene especificado en el archivo /etc/passwd.
Este archivo tiene una línea por cada usuario legítimo del sistema con el siguiente formato:
login : password : UID : GID : comentario :
Home
Sp–
login de usuario
–
Password:
contraseña del usuario cifrada
–
UID
Identificador de usuario. El usuario 0 suele ser el administrador
–
GID
Identificador del grupo
–
Comentario
Normalmente aparece el nombre real del usuario
–
Home
Directorio base de ese usuario de forma completa
–
Sp
Shell de presentación.
TIPOS DE SHELL
Va en columnas así (Shell, Directorio, Diseño, Simb. Del sistema, Var entorno, Arch. Inicializacion)
a.)sh (sh-bourne), /etc/old/bin/sh, Original, $, Mayúsculas, .Profile
b.)sh (sh-posix), /etc/bin/sh, Original, $, Mayúsculas, .Profile.
c.)csh (c-shell), /etc/bin/csh, BSD, %, Minúsculas, .Login
d.)ksh (korn-shell), ATT, $ Mayúsculas, .Profile
e.)keysh (Key-shell), /etc/bin/kesh
CarácterÍSTICAS DE C-SHELL Y K-SHELL
– Edición en la línea de órdenes.
– Existencia de Histórico de Órdenes.
– Posibilidad de definir alias de comandos (otro nombre para un comando) normalmente se utiliza para cuando utilizo una orden y sus modificadores constantemente.
3 VARIABLES DEL sh , csh y ksh
– HOME (~)
camino absoluto del directorio particular de unusuario. Cuando inicio sesíón paso automáticamente a /home/username
– PATH muestra una lista de directorios donde se buscan las órdenes y los programas. Todos los directorios se separan con :.
– PS1 y PS2 hacen referencia a los símbolos del sistema.
a) PS1 símbolo del sistema primario. Es aquel que se utiliza para solicitarme órdenes ( $ para el usuario y # para el administrador). Puedo cambiarle de la siguiente forma: PS1=Introduzca Orden>
b) PS2 símbolo del sistema secundario. Aparece cuando he introducido una orden incompleta. En condiciones normales es >.
– LOGNAME contiene el login name del usuario.
– TERM hace referencia al tipo de terminal utilizado
– MAIL directorio que contiene el correo electrónico ya leído.
– MAILFILE fichero de correo electrónico pendiente de lectura.
VARIABLES DEL csh
– home
– path
– cwd (current work directroy) ruta de acceso absoluta. El resultado es el mismo de ejecutar la orden $ pwd o igual que el . .
– prompt para cambiar el símbolo del sistema.
– mail define la frecuencia de comprobación de llegada de e-
mail así como donde se recibe ese e-mail.
EXPORTACIÓN DE VARIABLES
Exportar una variable es hacer que el contenido de una variable está accesible a todas las aplicaciones que se ejecuten.
– Para exportar en sh se utiliza $ export NOMBRE_VAR
– Para exportar en csh se utiliza % setenv nombre_var
VARIABLES DE CONMUTACIÓN
Son variables que pueden estar activadas o desactivadas. Hay dos variables de conmutación:
1) Ignoreeof:
si está activada y escribo ctrl+D a nivel de shell, no se acaba la sesíón.
– Para activarla en sh y csh se utiliza set ignoreeof
– Para desactivarla en sh y csh se utiliza unset ignoreof
2) noclobber
:
si está activa impide la sobreescritura de un archivo ya existente cuando se utiliza el redireccionamiento de salida.
Estas variables suelen estar en los archivos de inicialización .Profile y .Login
4.Definición DE ALIAS
Un alias es una cadena de texto que sustituye a una orden o a una orden con parámetros.
En sh: $ alias conectado=who|grep y en Csh: % alias m mail
– Para saber los alias que están definidos se utiliza la orden: $ alias
– Para quitar algún alias se utiliza la orden $ unalias alias
– Para quitar todos los alias definidos se utiliza la orden: $ un alias -a
5.SUSTITUCIÓN DE ÓRDENES
En Unix hay dos operadores especiales: el grave () y $(). Cualquiera de estos operadores permite la sustitución de la salida estándar de una orden dentro de la línea de órdenes.
6.MODOS DE EJECUCIÓN
Existen dos modos de ejecución
1.)Modo primer plano o principal (Foreground):
Cuando ejecuto en este plano tengo que esperar a que ejecute una orden para ejecutar otra. Cuando ejecuto una orden se crea un proceso par ejecutarla dependiente del shell.
2.)Modo segundo plano o subordinado (Background):
Cuando ejecuto en este plano no hace falta que espere a que termine de ejecutarse la orden, sino que puedo ejecutar otra inmediatamente. Cuando ejecuto una orden se cre un proceso independiente del shell.
CONTROL DE TRABAJOS
Los shell que permiten el control de trabajos son: BSD (csh, ksh) y System V (ksh, csh, jsh)
ÓRDENES
La mayoría necesitan parámetros y operan con procesos que se pueden identificar mediante el PID o mediante procesos relativos a mi.
–
Kill:
Permite finalizar un trabajo en primer o segundo plano.
–
Stop:
Permite detener o pausar un trabajo de segundo plano.
–
Resume:
Permite reanudar un trabajo de segundo plano.
–
Mové:
Permite pasar un trabajo de segundo plano a primer plano.
–
Suspend:
Permite suspender o detener un trabajo de primer plano. (^Z)
–
Jobs:
Muestra una lista de todos los trabajos que se están ejecutando con una línea por cada trabajo con el formato [ID_trabajo] estado orden
–
Fg:
Permite reanudar un trabajo suspendido y pasarlo a primer plano.
–
Bg:
Permite reanudar un trabajo suspendido y pasarlo a segundo plano.
MODO SUBORDINADO
1.)Filtros (Canalización):
$ orden1|orden2|orden3& – >el segundo plano funciona para todas las órdenes individuales
2.)Rediccionamiento de E/S:
Toda orden tiene tres canales de E/S: stdin(entrada), stdout y stderr (salida). Cuando utilizamos una orden en segundo plano, se desactiva la entrada estándar del teclado (stdin). Si esa orden emite información por el canal de salida (stdout, stderr) puede seguir saliendo, es decir, no se desactiva la pantalla y sale mezclado con lo del primer plano. Para que esto no ocurra, redirecciono la salida:
– stdout lo redirecciono a un archivo mediante >
– stderr lo redirecciono a un archivo mediante 2>
Ejemplo: $ orden>m1 2>/dev/null&
3.)nohup orden &:
Es una orden que me permite la ejecución de órdenes en segundo plano sin que se vean afectadas por el cierre de sesíón. Toda la salida se acumula en un archivo llamado nohup.Out