Bash scripting

De Hacklab La Paz - r00thouse

La idea de los scripts es colocar en archivos de texto (scripts) , suceciones de comandos o instrucciones que normalmente se colocarían a través de la línea de comandos. Estos scripts no sólo permiten colocar series de comandos, también proporcionan la posiblidad de hacer que estas órdenes se ejecuten de acuerdo a condiciones dentro o fuera del sistema tal como un lenguaje de programación.

Utilidad de los scripts

Imaginémos que necesitamos inciar la interfaz gráfica en el sistema operativo. Una forma de hacerlo sería; escribiendo órdenes una a una según el computador para llamar a los programas adecuados y de la forma adecuada para realizar esta tarea.

Este es por así decirlo un trabajo tedioso si introduciríamos las órdenes una a una y más aún hacerlo cada vez que necesitemos la interfaz gráfica...

Afortunadamente, existe la posibilidad de realizar este tipo de tareas repetitivas y/o tediosas a través de scripts que una vez escritos y probados reducirán el trabajo de por ejemplo iniciar la interfaz gráfica a ejecutar el script que realiza la tarea.

Es más, es posible hacer que otro script llame o ejecute otro script para automatizar aún mas las tareas.

Para la tarea de iniciar la interfaz gráfica, por ejemplo el script que se ejecuta para ello es /etc/init.d/gdm si el computador usa gdm como gestor de inicio de sesion.

Bash scripting

Como en este curso hemos usado la shell bash, los scripts a continuación son bash scripts por que se ejecutan usando el programa bash.

Primer script

La línea de comandos:

echo "Hola mundo"

Muestra en la pantalla:

"Hola mundo"

Imaginen que queremos mostrar este mismo mensaje cada 2 segundos 2 veces, la siguiente línea lo hará:

sleep 2; echo "Hola mundo" ; sleep 2 ; echo "Hola Mundo"

Ahora si quisiéramos seguir introduciendo más líneas deberíamos seguir con los ; después de cada oden. Esto no es factible para muchas líneas y además no nos da un mayor control como por ejemplo usar variables.

El siguiente script hace que el script termine en el numero de segundos que se introduzca: Lo primero que hay que hacer es abrir un nuevo archivo de texto y escribir:

#!/bin/bash
echo "Introduzca el tiempo (numero):"
read TEMP
echo "pausa de $TEMP segundos"
sleep $TEMP
echo "FIN"

exit 0

Hay que notar la primera linea

#!/bin/bash

Esta línea es muy necesaria ya que le dice al intérprete de comandos que use el programa ubicado en: /bin/bash que es el intérprete bash

Para ejecutar el script:

  • Guardar ese archivo con el nombre sp1.sh (por ejemplo).
  • Darle permisos de ejecución al script:
chmod +x sp1.sh
  • Ejecutar el script desde la consola bash:
./sp1.sh


Más información

  1. http://www.tldp.org/LDP/abs/abs-guide.pdf