馃敟 PROGRAMACI脫N SHELL EN LINUX: AUTOMATIZAR TAREAS

Programaci贸n Shell en Linux: Automatizar tareas

驴Qu茅 es la programaci贸n shell?

Ya que hemos aprendido a utilizar algunos editores como vim y nano, podemos empezar a escribir algo de c贸digo para la shell.

La programaci贸n shell o shell scripting tiene como objetivo automatizar tareas repetitivas mediante la creaci贸n secuencias de c贸digo contenidos dentro de un programa llamado script.

Ejemplo de un script de shell

Vamos a crear un nuevo archivo llamado saludar.sh ya sea con vim o nano.

La primera l铆nea del archivo contendr谩 la referencia al interprete de shell que ser谩 utilizado, en este caso /bin/bash, esta referencia es conocida como “shebang” que le indica al script que lenguaje es utilizado.

#!/bin/bash

Ahora vamos a crear un comentario, un comentario es una l铆nea de c贸digo que es ignorada al momento de ejecutar el script, pero que permite documentar la finalidad de este.

#!/bin/bash
# Este programa saluda a la persona que lo utiliza

Podemos por ejemplo mostrar un saludo a la persona que esta usando el script.

#!/bin/bash
# Este programa saluda a la persona que lo utiliza
echo "Hola $LOGNAME que gusto verte"

驴C贸mo asignar permisos de ejecuci贸n de un shell script?

Para ejecutar el script que acabamos de crear lo invocamos desde la terminal.

./saludar.sh
permission denied

La raz贸n del porque no es posible ejecutar el script es debido a que en Linux existen 3 tipos de permisos de un archivo: escritura, lectura y ejecuci贸n. Para visualizar los permisos del script usamos ls.

ls -l saludar.sh
-rw-rw-r--

Los permisos se ver谩n mas a detalle en cap铆tulos posteriores, pero b谩sicamente el 煤ltimo bloque de 3 permisos (permisos para el usuario) solo tiene habilitado la “r” que es el permiso de lectura (read). Para poder ejecutar un shell script necesitamos agregarle primero el permiso de ejecuci贸n, para ello usamos el comando chmod +x para habilitar su ejecuci贸n.

chmod +x saludar.sh

Y ahora podemos ejecutar el comando de 2 formas.

驴C贸mo ejecutar el comando usando su path absoluto?

/home/luis/saludar.sh

o usamos el path relativo, en el caso que nuestro archivo este en el mismo directorio…

./saludar.sh

驴C贸mo utilizar condicionales en la programaci贸n shell?

Los condicionales en programaci贸n proveen diferentes rutas posibles a la direcci贸n de un programa. En el siguiente ejemplo vamos a comprobar si la el directorio actual en el que se encuentra el usuario $PWD es el directorio del home de este $HOME.

if [ "$PWD" == "$HOME" ]
then
  echo "Estas en el directorio home"
else
  echo "Estas en el directorio $PWD"
fi

Cuando ejecutamos el script dependiendo de si $PWD es igual a $HOME o no, se imprimir谩 el primer o segundo mensaje.

驴C贸mo crear loops en la shell utilizando la sentencia for?

Podemos utilizar de forma sencilla el loop for para recorrer un listado de pa铆ses

for pais in Italia Alemania Francia Holanda
do
  echo "$pais"
done

El resultado que tendr铆amos seria

Italia
Alemania
Francia
Holanda

Tambi茅n es posible recorrer rangos de n煤meros

for numero in {1..10}
do
 echo "$numero"
done

Nuestra salida ser铆a la impresi贸n de n煤meros del 1 al 10, uno en cada l铆nea.