Introducción a Bash Scripting

Aprende Bash Scripting Rápido

(#!/bin/bash)

Mariano Morales Ramírez
Technicolor >

--

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:

  1. 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.
  2. 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

  1. Vamos a crear un archivo de texto llamado libros.txt usando touch
  2. Ingresaremos algunos títulos utilizando redireccionamiento >>
  3. Escribiremos el bash script miScript.sh
  4. Haremos que el script sea ejecutable #chmod 777 miScript.sh
  5. Correremos el script ./miScript.sh
  6. Verificamos que efectivamente hayamos recibido el correo con la lista de libros actualizada.

Instrucciones

  1. 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
cat te permite ver el contenido (solo verlo) de cualquier archivo que sea legible.

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).

La primera línea de un bash script siempre es #!/bin/bash

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

--

--

Mariano Morales Ramírez
Technicolor >

I teach STEM related courses with AI. I like helping students find and unleash their true potential by enabling opportunities. Former Texas Tech student.