Muchas veces necesitamos automatizar algunas tareas, que se resumen en una sucesión de comandos. Para ello existen los
scripts, que son una especie de "programas" que en lugar de utilizar un lenguaje de programación, utilizan comandos propios del sistema en el que se ejecutan.
Dentro de los scripts, podemos utilizar
variables. Las variables son como espacios de memoria que guardan datos y se utilizan bajo un nombre.
- Por ejemplo: "NOMBRE=Miguel". Con ello tenemos la variable NOMBRE que ahora guarda el dato Miguel. Para utilizarla ejecutamos "echo $NOMBRE" y saldría por pantalla Miguel.
De esta forma podremos guardar la salida de comandos en variables, para después utilizarla en otros comandos. Para profundizar más sobre variables accede
aquí.
Si lo que deseas es
guardar la salida de los comandos en un fichero de texto, puedes utilizar la
redirección "
>" para ello. Por ejemplo:
echo "Hola Mundo" > hola.txt guardará en hola.txt el texto
Hola Mundo.
Análogamente, para
introducir como entrada de un comando el contenido de un fichero de texto, se utiliza la redirección "
<".
Para introducir
comentarios en el script basta con poner "
#" al inicio de la línea.
Los
condicionales y
bucles (
if [ cond ]; then ... fi ó for i in 1..4 do ... done) nos ayudan a controlar el flujo del script. Por ejemplo bajo el valor de una variable ejecutar un comando u otro (
if), o ejecutar un comando muchas veces (
for). Para aprender a utilizar estas estructuras accede
aquí.
Al inicio del fichero de un script hay que indicar cómo se interpreta el código. Puede ser un script en python, shell, bash, etc. En este caso vamos a hacer un script en
bash como ejemplo, por lo que al inicio del documento debe ir la siguiente línea:
#!/bin/bash
Seguidamente ya podemos empezar a introducir los comandos que necesitemos.
Ejemplo:
Un ejemplo muy sencillo de script es uno que utilizo a menudo. Para actualizar los paquetes instalados, como bien sabemos, hay que actualizar los repositorios y después actualizar los paquetes. Para simplificar, vamos a hacer un script "
actualizar.sh" que ejecute los dos comandos:
#!/bin/bash
#Comprobamos que sea root con el condicional
# $(whoami) ejecuta el comando whoami y la salida se utiliza en la comparación con root
if [ $(whoami) != "root" ]; then
#Informamos de que no ha ejecutado el script como root
echo "Ejecuta el comando como root"
exit
fi
#Actualizamos los repositorios
echo "Actualizando repositorios..."
apt-get update
#Actualizamos paquetes
echo "Actualizando paquetes..."
apt-get --assume-yes upgrade
Guardamos el texto del script como
actualizar.sh y le damos permisos de ejecución como sigue:
- $ sudo chmod +x actualizar.sh
Ahora ya podemos utilizar el script desde una terminal escribiendo:
Para que el script sea accesible desde cualquier carpeta hay que moverlo a una carpeta de ejecutables, o lo que es lo mismo, una carpeta del
PATH. Por convenio los programas de usuario están en
/usr/bin/, pero personalmente los scripts prefiero meterlos en mi carpeta personal, en
/home/usuario/bin/
- $ mv actualizar.sh ~/bin/
Espero que sirva de ayuda,
Un saludo!
________________________________
PD: En caso de que no os aparezca la carpeta /home/usuario/bin en el PATH acceder
aquí para introducirla.