Conecta con nosotros

Hola, ¿qué estás buscando?

Actualidad

Cómo escribir un pequeño script bash

Seguro que todos los que leéis MuyLinux usáis regularmente la consola, pero ¿cuántos sois capaces de escribir un buen script bash? Estos archivos permiten automatizar tareas y acceder a potentes funciones, y su puesta en marcha no es tan complicada.

Lo demuestra un artículo de Linux.com en el que se nos da una introducción con los primeros pasos a la hora de crear un script bash, algo que no es tan complicado y que poco a poco nos permitirá sacarle mucho partido a nuestra distribución Linux.

Esto es una adaptación del artículo de Linux.com permitirá a aquellos que se sienten incómodos con el inglés poder seguir estos sencillos pasos.

En primer lugar, todos los scripts bash comienzan con lo mismo

#!/bin/bash

Esos dos primeros caracteres tienen un nombre popular, shebang, y permiten determinar qué intérprete se encargará de ejecutar el resto del script. En lugar de bash podríamos usar otros intérpretes de comandos como tcsh, zsh, pero también otros como Perl o Python. A continuación podremos incluir algún comentario:

#!/bin/bash
# Un script simple

Y ahora vamos con el meollo. Supongamos que queremos ejecutar un comando rsync para realizar una copia de seguridad de una de nuestras carpetas.

#!/bin/bash
# rsync script
rsync -avh --exclude="*.bak" /home/user/Documents/ /media/diskid/user_backup/Documents/

Advertencia, desplázate para continuar leyendo

Ahora tendremos que salvar ese fichero que acabamos de editar (con el nombre que queramos, por ejemplo, copiaseguridad) y atención, cambiar los permisos para poder ejecutarlo, con un cómodo:

chmod 700 copiaseguridad

Variables

El script anterior es interesante, pero dispone de rutas permanentes, y sería interesante poder contar con rutas variables, como por ejemplo sucede con este otro script:

#!/bin/bash
# rsync using variables

SOURCEDIR=/home/user/Documents/
DESTDIR=/media/diskid/user_backup/Documents/

rsync -avh --exclude="*.bak" $SOURCEDIR $DESTDIR

Eso permite establecer dos variables que luego podremos reutilizar a lo largo de todo el script.

Entrada de datos

Los scripts también pueden ser interactivos, y nos pueden pedir un dato (por ejemplo, un ruta) para luego tomar esa variable para el resto del script. Si queremos pedir un argumento haríamos lo siguiente:

#!/bin/bash

echo $1

Y eso aplicándolo a un script sencillo podría resultar en un pequeño script que nos pregunte el nombre:

#!/bin/bash

echo -e "Escribe tu nombre, por favor: "
read nombre
echo "Encantado de saludarte, $nombre"

Ese script esperará a que introduzcamos algo y pulsemos Enter para luego tomar nota de esa variable y usarla para el resto del script. Eso, aplicado a la idea inicial del rsync, serviría para algo como esto:

#!/bin/bash

echo -e "De que directorio quieres hacer el backup?"
read directory

DESTDIR=user@host.rsync.net:$directory/

rsync --progress -avze ssh --exclude="*.iso" $directory $DESTDIR

Este script leerá de la entrada el directorio en el que queremos hacer el backup, para luego copiarlo en la máquina del ejemplo (host.rsync.net) y el directorio especificado (directory).

Fácil, ¿verdad? Como indican en el artículo de Linux.com, podéis obtener más información sobre este tipo de scripts en la Bash Guide for Beguinners, aunque hay muchos más recursos también en español, como este blog con scripts ya avanzaditos o esta documentación en formato wiki y en nuestro idioma.

38 Comentarios
Advertencia
Advertencia

Te recomendamos

Actualidad

El uso de la línea de comandos sigue estando muy vigente en Linux, así que vamos a aprovechar la ocasión para presentar a Warp,...

Actualidad

Las quejas han surtido efecto y, tras conocerse que la nueva versión de Visual Studio Code dejaba sin soporte a «distribuciones Linux viejas», los responsables...

Actualidad

Hace un par de días que se anunció el lanzamiento de Visual Studio Code 1.86, la versión mensual del editor de código multiplataforma de Microsoft....

Actualidad

Godot 4.2 ya está disponible como la nueva versión estable del motor de videojuegos distribuido como código abierto, y como ya es habitual por...