4.  Programación del Shell: SHELL-SCRIPTING

4. 1 Introducción

Vamos a ampliar nuestros conocimientos sobre el shell y si bien hasta ahora solo hemos considerado al shell como un interprete de comandos en esta sección veremos que es mucho más que eso. El shell de Linux que vamos a usar como ya hemos comentado varias veces con el shell bash, que es un superconjunto de la Bourne-Shell. Sin lugar a dudas esta lección le permitirá dar un salto enorme en el aprovechamiento de su SO Linux.

El shell-script es lenguaje muy versátil aunque hay que advertir que es bastante ineficiente (son mucho más eficientes los programas escritos en lenguaje C). Este es el lenguaje en el que se escribió el kernel de Linux y otros muchos SO.

El valor de este lenguaje de programación es que permite hacer cosas complicadas con muy poco esfuerzo en perfecta combinación con una serie de comandos también muy potentes disponibles en Linux.

Algunas partes del SO que no pertenecen al kernel están escritas en shell-script. Por ejemplo muchos comandos que se van ejecutando en secuencia mientras el sistema arranca son programas realizados en shell-script así que la ineficiencia no es ningún obstáculo para ciertas tareas. Por el contrario para un administrador tener ciertos programas del sistema en shell-script le permite retocarlos a su gusto con gran facilidad.

Después de hacer login en el sistema obtendremos una sesión con el interprete de comandos asociado a nuestro usuario. (Esta asociación figura en el fichero '/etc/passwd' junto quizá con la clave encriptada y otras cosas). Decimos quiza porque la clave no siempre es guardada en este fichero. La razón es que pese a estar encriptada /etc/passwd es un fichero que cualquiera puede leer y resulta más seguro otro sistema llamado shadow. Que /etc/passwd sea legible nos permite consultar entre otras cosas cual es nuestra shell en el inicio de una sesión. Desde esta sesión podemos ir introduciendo ordenes desde el teclado pero nuestro interprete de comandos no deja de ser a su vez un programa normal como cualquier otro, así que si tuviéramos que teclear varias cosas podríamos guardar estas ordenes en un fichero y redirigir la entrada estándar de la shell para que tome la entrada desde el fichero en lugar de hacerlo desde el teclado.

Vamos a ver un ejemplo para mostrar fecha y hora en letras grandes. Teclee el comando siguiente:

$ banner `date'+%D %T'`

El comando banner solo muestra lo que le es pasado como argumento en letras grandes (pruebe el resultado con $ banner 'hola').