domingo, 2 de septiembre de 2007

Scripts en Bash

Bash, es un interprete de comandos, hay otros como pueden ser ksh, csh, tcsh, Bourne Shell (Bash). Ubuntu trae por defecto bash. Para ver que interprete de comandos se esta ejecutando cuando abres una terminal. Para averiguar esto introduce :

$ echo $shell
/bin/bash
$ echo $BASH_VERSION
3.2.13(1)-release
Esta es la versión que me vino a mi instalada con la versión 7.04 de Ubuntu. Por que usar scripts en bash u otro interprete de comandos. En linux casi todo es un fichero, y los comandos de bash nos permiten manipular ficheros, los programas equivalen a comandos. A parte de esto bash permite el uso de variables , operaciones matemáticas, trabaja con expresiones regulares, permite capturar las señales del sistema,...

Para escribir un scirpt es bash es muy sencillo solo hay que editar un fichero y darle permisos de ejecución. El fichero es de texto plano. Otra característica de los interpretes de comandos es que son lenguajes interpretados no compilados. Vamos con el primer ejemplo un "Hola Mundo" que clásico.

Vamos a usar los siguientes comandos : echo, touch, chmod y cat. "echo" lo que hace es sacar por la salida standard (la pantalla) lo que se le pasa por parámetro, puede ser texto o una variable que es lo que vimos en el ejemplo de antes. "touch" lo usaremos para crear un fichero vacio y "chmod" para cambiarle los permisos al fichero y hacerlo de esta manera ejecutable. "cat" muestra el contenido de un fichero.

Que vamos a hacer en nuestro primer script. Crearemos un fichero vacio con touch, con echo iremos direccionando la salida standard al fichero que hemos creado para ir escribiendo en el. Después le daremos permisos de ejecución al usuario. Una vez hecho esto ejecutaremos el script para ver el resultado y visualizaremos el contenido de nuestro script.

¿? Como es el formato de un fichero para que sea interpretado como un script. Pues el formato es muy sencillo. La primera linea ha de especificar la ubicación del interprete que se va a usar. El resto de lineas equivalen a los comandos. Para escribir los comentarios se usa el caracter de escape #.

#!/bin/bash
#
# Esto es un comentario
#
comando
comando
comando
.....

Vamos allá para crear nuestro primer script abrir una terminal ( Aplicaciones/Accesiorios/Terminal) hacer click e introducir lo siguiente :

$ touch Hola_Mundo.sh
$ echo '#!/bin/bash' > Hola_Mundo.sh
$ echo '#' >> Hola_Mundo.sh
$ echo '# 1º script : Hola Mundo' >> Hola_Mundo.sh
$ echo '#' >> Hola_Mundo.sh
$ echo 'echo "Hola Mundo"' >> Hola_Mundo.sh
$ chmod +x Hola_Mundo.sh
$ ./Hola_Mundo.sh
Hola Mundo
$ cat Hola_Mundo.sh
#!/bin/bash
#
# 1º script : Hola Mundo
#
echo "Hola Mundo"

En los scripts venideros abstenerse de crealos así. Quiero decir las próximas veces que vayáis a hacer un script usar un editor de textos ("gedit" Aplicaciones/Accesorios/Editor de Textos) o si os gusta más la consola podéis usar el vi o el Emacs. En este ejemplo lo hemos hecho así para que aprendieses más de un comando y no solo el echo. Para introduciros en el mundo de las tuberías. A ver si os ibais a pensar que la imagen que esta en el post no tenia nada que ver con su contenido. Por cierto si hacéis click sobre la imagen podéis echaros una partidilla , es un juego :).

Las tuberías lo que vienen a hacer en linux es controlar los flujos de datos generados por los programas, pudiendo coger la salida de un programa y pasársela a otro como parámetro. En este ejemplo que acabamos de hacer no hay ninguna tubería pero si direccionamientos. El carácter que se usa para los direccionamiento es el ">" ó "<". Con este carácter podemos coger la salida de un programa y enviársela a otro programa o a un fichero como en este caso. También se puede hacer al revés coger el contenido de un fichero y pasárselo a un programa. En el ejemplo usamos el > para pasar la salida del echo a un fichero. Luego de este usamos ">>" para que escriba a modo "append" en el fichero, quiero decir añadiendo lineas y no sobreescribiendo la primera.

En este ejemplo también se muestra la forma de ejecutar un script, se puede hacer de 2 maneras :

$ ./ [script]
ó
$ source [script]

Bueno si el tema os ha parecido interesante podéis esperar a que escriba el siguiente post sobre el tema o ir leyéndoos este manual sobre bash que ta bastante bien para gente que se inicia en el mundillo. Si con ese no os llega seguir con este bash avanzado.


No hay comentarios: