Introducción a Bash Scripting
Aprende Bash Scripting Rápido
(#!/bin/bash)
Crear scripts en bash es una tarea bastante sencilla y poderosa al mismo tiempo. Con un script (i.e. un archivo con instrucciones) puedes optimizar procesos y automatizarlos para darle solución a problemas personalizados. Puede verse como un tipo de programación, pero bash scripting está más que nada asociado a la administración de servidores (para SysAdmins).
No hay requisitos, pero se recomienda:
- Tener conocimientos básicos de línea de comandos, e.g.
ls
,mkdir
,cd
echo
,nano
etc. Aquí hay un tutorial en el que puedes aprender Linux. - Utilizar la terminal de macOS, Ubuntu (Linux) o utilizar herramientas en línea como Google Cloud Platform o cloud9, que es gratuita.
Aunquer es posible ejecutar bash scripts en Windows (haciéndolo universal), la creación del script en este tutorial es a través de comandos típicos Unix.
No es recomendable utilizar imágenes Ubuntu de docker para crear scripts.
Lo que vamos a hacer:
Automatizaremos un proceso sencillo en el que cada vez que leamos un libro nuevo, correremos el script y este nos preguntará los detalles (título y autor), después tomará nuestras respuestas, y las agregará a una lista de libros (un archivo llamado libros.txt), y nos la enviará por correo electrónico. Todo al ejecutar un solo comando: ./miScript.sh
Imagina todo lo que podrías hacer con #!/bin/bash
Puedes ver el siguiente vídeo con la explicación, o seguir el tutorial explicado en texto e imágenes/gifs:
Lo que haremos es escribir el script, y a la hora de ejecutarlo solamente usaremos bash miScript.sh
- Vamos a crear un archivo de texto llamado
libros.txt
usandotouch
- Ingresaremos algunos títulos utilizando redireccionamiento
>>
- Escribiremos el bash script
miScript.sh
- Haremos que el script sea ejecutable
#chmod 777 miScript.sh
- Correremos el script
./miScript.sh
- Verificamos que efectivamente hayamos recibido el correo con la lista de libros actualizada.
Instrucciones
- Crea un nuevo directorio para este tutorial
$ sudo mkdir scripts
$ cd scripts
2. Crea el archivo que contendrá la lista de libros, nómbralo libros.txt
$ sudo touch libros.txt
Aquí empieza lo divertido y esto también involucra el uso de dos de las herramientas más poderosas que ofrecen los sistemas Unix: el redireccionamiento (standard input y output) y la transmisión (pipes).
Esto es poder decirle a la consola que el texto que ingresemos pueda ser redireccionado (dependiendo el tipo de input) no a la consola en sí, sino a un archivo de texto, por ejemplo, a nuestra lista de libros. Veamos cómo funciona en el siguiente paso:
3. Redirecciona un hilo de texto a libros.txt
usando echo
$ echo "Frankenstein — Mary Shelly" > libros.txt
*Si recibes un error como “permission denied” tienes que cambiar los permisos o el propietario del archivo, es sencillo, solo remplaza <usuario> con el valor correspondiente (tu usuario)
$ sudo chown <usuario>:<usuario> libros.txt
Antes, nuestra lista de libros estaba vacía, pero ahora, si verificas el contenido de ese archivo (puedes utilizar cat libros.txt
verás que este primer libro ya está en la lista).
$ ls
libros.txt miScript.sh
$ cat libros.txt
Frankenstein - Mary Shelly
3. Crea el archivo miScript.sh
utilizando nano
$ nano miScript.sh
4. Ingresa la ruta a bash en la primera línea. Al abrirse el editor escribe (por ahora) #!/bin/bash
. Para cerrar el editor, da click en ctrl
+ x
y luego presiona return
(dale enter).
Lo padre de los bash scripts es que siempre empiezan con la misma línea, lo cual le dice al sistema qué compilador debe utilizar (en este caso bash). Sin darte cuenta, muchos de los instaladores que utilizas cuando bajas programas de internet son precisamente esto, bash scripts.
5. Haz que miScript.sh
sea ejecutable, legible y re-escribible usando chmod
:
$ sudo chmod 777 miScript.sh
Esto permite que el script sea ejecutable. Si quisieramos ejecutarlo en este momento, no pasaría nada porque el script está vacío. En la siguiente parte escribiremos por fin el script sencillo que manipulará los archivos que creamos aquí para poder darle dinamismo a nuestra lista de libros.
Al final, cada vez que leas un libro sólo tienes que correr el script, y tendrás la lista actualizada en tu correo.
O bien, ya sabes, buscar en internet todas apariciones de un término, o filtrar entre todos tus archivos, seleccionar solo los que tengan atributo x o y, y enviarlo a tu jefe. Los usos son infinitos, y cada vez es más valioso — dada su universalidad — saber bash scripting.
Otros tutoriales:
> Scripts — Parte 2
> Introducción a Línea de Comandos Linux
> Aprende Linux+ Docker