next up previous
Next: Filtros - Básicos Up: Curso de GNU/Linux para Previous: Emacs

Subsecciones

Scripts de Shell - Básicos

Siempre que interactuamos con el shell estamos creando pequeños programas. Cuando a estos pequeños programas los guardamos en un archivo que pueda ejecutarse luego, lo llamamos un "script". Estos scripts sirven, entre otras cosas, para tareas de automatización.

Los scripts de shell son básicamente programas escritos en el lenguaje del shell, se parecen a los archivos .BAT del DOS. Aunque es cierto que, si se van a escribir más de varias decenas de líneas de script, es mejor recurrir a un lenguaje diferente del shell, pensar en que los scripts de shell son solamente pequeños programas sería cometer una injusticia con la flexibilidad y comodidad que ofrecen al usuario.

Normalmente los scripts de shell se crean cuando es necesario combinar en una única acción una tarea rutinaria.

Estos scripts pueden ser muy breves (una sola línea), o bastante largos (varias pantallas). Vamos a empezar con algunos ejemplos muy sencillos.

Primer Script de Shell

Creamos un archivo que contenga: who | wc -l, esto lo podemos hacer utilizando el comando echo, con la salida standard a un archivo, o bien utilizando el editor vi. El archivo lo llamaremos cuantos.

Para poder ejecutar este pequeño script, tenemos que utilizar el intérprete del shell. Hay dos formas de hacerlo: sh cuantos, invocará al sh para que interprete nuestro script y lo ejecute.

El archivo no lo podemos ejecutar directamente, porque al crearlo, lo hemos creado como archivo de texto, y no tiene permisos de ejecución. Para que podamos ejecutarlo tenemos que agregarle el permiso: chmod u+x cuantos. Una vez que le hemos agregado el permiso, nuestro archivo ha pasado a ser un ejecutable, y se lo puede invocar como a cualquier comando. La línea para invocarlo será: ./cuantos.

La variable PATH

Llama la atención el ./ que tenemos que agregar al principio para poder ejecutar el archivo. Esto simboliza al directorio actual. Lo que estamos haciendo es diciéndole al shell que busque el archivo "cuantos" en el directorio actual. Esto se debe a que el directorio actual no está en la lista de los directorios en los que el shell busca para encontrar un determinado comando.

Los directorios en los que el shell busca son /bin, /usr/bin y algunos otros. Están definidos en una variable llamada PATH.

Para poder ver el contenido de la variable PATH, podemos ejecutar desde línea de comandos: echo $PATH. Es importante recalcar que la variable se llama PATH, pero para ver su contenido le agregamos el símbolo $ adelante, este símbolo es un metacaracter de shell, como los vistos anteriormente, y le dice al shell que lo que viene a continuación es una variable.

Variables de entorno

Así como PATH también existen muchas otras variables. Algunas determinadas por el sistema, y otras determinadas por nosotros.

Llamamos entorno al conjunto de variables, como el PATH, el nombre de usuario, el directorio actual, el directorio principal, las preferencias de lenguaje, etc. que determinan a la consola que estamos utilizando en este momento. Podemos ver cuales son las variables de nuestro entorno escribiendo: set.

A estas variables de entorno, nosotros podemos agregar nuevas variables. Para ello podemos escribir: variable=valor. Y haciendo echo $variable podremos ver el valor que le asignamos a la variable.

Al ejecutar un programa, este programa recibe una copia de nuestro entorno, donde algunas variables pueden mantenerse (variables exportadas), y otras pueden no estar. Un programa puede modificar las variables que tiene en su entorno, pero no las del entorno anterior. A su vez, dentro de ese programa podemos ejecutar un nuevo programa, que tendrá su propio entorno, con sus propias variables.

Para hacer que los programas hereden las variables que nosotros definamos, existe un comando llamado export, que nos asegura que los programas que se ejecuten, reciban esa variable en su entorno.

Ejemplos

Parámetros de los comandos

Cuando ejecutamos un comando, puede suceder que necesite parámetros. En el caso de los scripts, los parámetros se encuentran en variables especiales que identificamos como $1, $2, $3, etc. El nombre de la variable nos indica la ubicación del parámetro.

Para ver esto en un script muy sencillo, armaremos un script que contenga la línea echo $1, de forma que -al invocarlo- nos mostrará el parámetro que le pasemos al ejecutarlo.

Para tener el caso de un script un poco más útil, vamos a hacer un script que nos permitirá convertir rápidamente en ejecutables a los próximos scripts que realicemos: chmod +x $1. Le pondremos de nombre cx. Para hacer ejecutable este script, vamos a aprovechar lo que ya escribimos y haremos: sh cx cx.

Podemos mejorar este script, de tal manera que reciba más parámetros y pueda hacer ejecutables más archivos a la vez. Podríamos escribir, por ejemplo. chmod +x $1 $2 $3 ..., pero existe una manera más elegante (y más eficiente): chmod +x $*. Al encontrar el $*, el shell lo reemplazará por todos los parámetros que haya recibido el script.

Por último, veremos la utilidad de las comillas dobles ("), en su relación con los parámetros. Usaremos un script que contenga la línea: echo "Buen día $1". Al ejecutarlo con un parámetro (por ejemplo, Pedro), la salida del comando será Buen día Pedro.

Si en el ejemplo anterior hubiéramos utilizado comillas simples, la salida del comando hubiera sido Buen día $1, ya que dentro de las comillas simples el metacaracter $ no es interpretado, mientras que dentro de las comillas dobles si.


next up previous
Next: Filtros - Básicos Up: Curso de GNU/Linux para Previous: Emacs
hecho por Margarita Manterola y Maximiliano Curia