Introducción a los scripts de Bash: Ejemplos de scripts de automatización sencillos para empezar
En el artículo anterior, aprendimos las "palabras" básicas (comandos) de Bash, como cd y ls. Aunque teclear comandos uno por uno es útil, el verdadero poder de Bash reside en combinar estas palabras para crear "frases" o "historias", y hacer que el ordenador trabaje para ti de forma automática. Esto es un script de Bash.
¿Tienes tareas tediosas y repetitivas como "preparar la misma estructura de carpetas para cada proyecto", "redimensionar múltiples imágenes a la vez" o "hacer copias de seguridad de archivos periódicamente"? Si aprendes a hacer scripts de Bash, puedes hacer que esas tareas terminen en un instante, como por arte de magia.
Este artículo está dirigido a principiantes que ya se han familiarizado un poco con las operaciones de comandos. Explicaremos desde la forma básica de escribir un script de Bash hasta los fundamentos de la programación como variables, bifurcaciones condicionales (if) y bucles (for), todo con ejemplos de scripts de automatización sencillos que puedes copiar y pegar para que funcionen. ¡Como si escribieras una receta de cocina, vamos a crear tu propia herramienta de automatización!
1. Tu primer script de Bash - El primer paso en la automatización
Un script de Bash no es más que un simple archivo de texto con una secuencia de comandos que quieres ejecutar en orden. No necesitas ninguna herramienta especial para crearlo. Vamos a crear y ejecutar un script sencillo de inmediato.
Paso 1: Crear el archivo de script
Primero, crea un archivo de texto llamado hello_script.sh y escribe el siguiente contenido. Es una práctica común usar la extensión .sh para los archivos de script.
#!/bin/bash
# Muestra un mensaje en la pantalla
echo "¡Hola, bienvenido al mundo de los scripts de Bash!"
echo "La fecha y hora actuales son:"
date
Piensa en la primera línea, #!/bin/bash, como un "hechizo mágico". Es una línea especial (llamada shebang) que le dice al sistema: "Oye, por favor, ejecuta este archivo con Bash".
Paso 2: Otorgar permisos de ejecución
Un archivo de script recién creado aún no se reconoce como un "programa ejecutable". Vamos a usar el comando chmod para darle al archivo permiso de ejecución.
$ chmod +x hello_script.sh
Paso 3: Ejecutar el script
¡Todo listo! Vamos a ejecutar el script con el siguiente comando. El ./ significa "en el directorio actual".
$ ./hello_script.sh
¡Hola, bienvenido al mundo de los scripts de Bash!
La fecha y hora actuales son:
dom jul 6 09:47:45 JST 2025
Los comandos que escribiste se ejecutaron en orden. ¡Este es el principio básico de un script de Bash!
2. Variables y argumentos - Creando scripts flexibles
Un script que solo puede hacer una cosa fija no es muy interesante. Por eso, vamos a usar "variables" y "argumentos" para hacer nuestros scripts más flexibles.
Variables: "Cajas" para almacenar datos
Una variable es una "caja con nombre" donde puedes guardar los datos que quieras (cadenas de texto o números). Se define con el formato NOMBRE_VARIABLE=valor y se usa escribiendo $NOMBRE_VARIABLE.
#!/bin/bash
# Almacena una cadena de texto en una variable llamada GREETING
GREETING="Bienvenido/a,"
USER_NAME="Alice"
# Muestra un mensaje usando las variables
echo "¡$GREETING $USER_NAME!"
Argumentos: Dando información a un script desde el exterior
Es un fastidio tener que reescribir el interior de un script cada vez que quieres ejecutarlo. Ahí es donde entran los "argumentos". Este es un mecanismo para pasar información al script desde el exterior cuando lo ejecutas. Puedes recibir esta información con $1, $2, y así sucesivamente, por número.
Vamos a crear el siguiente script llamado greet.sh.
#!/bin/bash
# Almacena el primer argumento del tiempo de ejecución en la variable USER_NAME
USER_NAME=$1
echo "¡Hola, $USER_NAME!"
Cuando ejecutes este script, lo harás con un nombre después de él.
$ ./greet.sh Bob
¡Hola, Bob!
Como puedes ver, usar argumentos hace que los scripts sean mucho más fáciles de reutilizar.
3. Bifurcación condicional con 'if' - Cambiando acciones según la situación
Un concepto fundamental de la programación, "si esto, entonces aquello", también se puede escribir fácilmente en un script de Bash. Para esto, usamos una declaración if.
Por ejemplo, creemos un script que compruebe si existe un archivo especificado.
#!/bin/bash
FILE_NAME=$1
# si existe un "archivo" con el nombre $FILE_NAME, entonces
if [ -f "$FILE_NAME" ]; then
echo "El archivo '$FILE_NAME' fue encontrado."
else
echo "El archivo '$FILE_NAME' no existe."
fi
La [ -f "nombre_de_archivo" ] es la expresión condicional que comprueba, "¿Existe ese archivo?". Vamos a ejecutar este script.
Si el archivo existe:
$ touch sample.txt
$ ./check_file.sh sample.txt
El archivo 'sample.txt' fue encontrado.
Si el archivo no existe:
$ ./check_file.sh another.txt
El archivo 'another.txt' no existe.
4. Bucles 'for' para tareas repetitivas - Acaba con el trabajo tedioso
La esencia de la automatización reside en la "repetición". Si tienes que repetir el mismo tipo de tarea muchas veces, deja que el ordenador lo haga por ti. Para eso, el bucle for es muy práctico.
Veamos un script de ejemplo que crea múltiples archivos HTML a la vez como plantilla para un sitio web.
#!/bin/bash
# Repite un proceso para los nombres about, works y contact
for page in about works contact
do
# Genera dinámicamente el nombre del archivo y la etiqueta H1 usando la variable de la página
FILE_NAME="${page}.html"
TITLE_TEXT=$(echo "$page" | sed 's/./\u&/') # Poner en mayúscula la primera letra
# Usa un heredoc para escribir todo el HTML de una vez
cat << EOF > $FILE_NAME
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>$TITLE_TEXT Page</title>
<style>
body { font-family: sans-serif; line-height: 1.6; color: #333; }
h1 { color: #0056b3; }
</style>
</head>
<body>
<h1>Esta es la página de $TITLE_TEXT.</h1>
<p>El contenido de la página $page va aquí.</p>
</body>
</html>
EOF
echo "Creado ${FILE_NAME}."
done
echo "¡Todas las páginas han sido creadas!"
Este script realiza un bucle para las tres palabras about, works y contact, y genera un archivo HTML completo para cada nombre. La parte de << EOF a EOF se llama heredoc, y es útil para imprimir cadenas de varias líneas tal cual.
Vamos a ejecutarlo.
$ ./create_pages.sh
Creado about.html.
Creado works.html.
Creado contact.html.
¡Todas las páginas han sido creadas!
Verifiquemos el contenido de un archivo generado.
$ cat about.html
<!DOCTYPE html>
<html lang="es">
...
<h1>Esta es la página de About.</h1>
...
</html>
¡Brillantemente, se crearon tres archivos HTML, cada uno con contenido diferente, en un instante!
Resumen
Esta vez, como primer paso en el mundo de los scripts de Bash, vimos la sintaxis básica y ejemplos sencillos de automatización.
- Simplemente poniendo una serie de comandos en un archivo, se convierte en un script.
- Usar variables y argumentos hace que los scripts sean más flexibles y reutilizables.
- Con una declaración if, puedes bifurcar procesos según las condiciones.
- Con un bucle for, puedes dejar el trabajo tedioso y repetitivo al ordenador.
Scripting puede sonar difícil, pero al final, no es más que "escribir los comandos que siempre tecleas a mano, en orden". Primero, intenta pensar si puedes convertir las tareas que haces a menudo en un script. Ese pequeño paso debería liberarte del trabajo tedioso y permitirte concentrarte en tareas más creativas.
Ahora que has aprendido la forma básica de escribir scripts, probablemente querrás aprender formas más prácticas y "buenas" de escribirlos, y consejos para evitar errores comunes de principiantes. En el próximo artículo, explicaremos estas mejores prácticas.
[Guía definitiva] 5 patrones de Bash que debes aprender y cómo evitar errores