Qué es Bash y cómo crear tu primer script

Autor: Publicado

En pocas palabras: Bash es una shell del sistema: un programa que lee las órdenes del usuario y solicita su ejecución. Permite trabajar con archivos, ejecutar programas y automatizar tareas repetitivas mediante scripts. Se utiliza a menudo en Linux y también está disponible en macOS. En Windows se puede usar, entre otras opciones, a través de WSL o Git Bash.

¿Para qué sirve Bash?

El nombre Bash procede de Bourne Again SHell y hace referencia a la anterior shell de Bourne. Además, juega con la expresión inglesa «born again», que significa «renacido». Bash es a la vez una herramienta interactiva para introducir órdenes y un lenguaje de scripting. Un script es un archivo de texto que contiene instrucciones ejecutadas por un intérprete; en este caso, Bash.

En el modo interactivo, introduces una orden y obtienes el resultado de inmediato. En un script, guardas una secuencia de acciones que puedes volver a ejecutar más adelante sin repetir manualmente cada paso.

Bash resulta útil, entre otras cosas, para:

Por ejemplo, en lugar de mover manualmente decenas de informes al directorio correspondiente, puedes expresar esa operación con una sola orden. Si la tarea también requiere comprobar condiciones y guardar mensajes, resulta más cómodo utilizar un script.

Bash, el terminal y las órdenes son cosas distintas

El terminal es la interfaz donde escribes texto y lees las respuestas. En un ordenador personal, suele ser una aplicación que emula un terminal. La shell, o intérprete de órdenes, funciona dentro de esa sesión e interpreta las instrucciones que introduces. Bash es una de las shells disponibles; otras son, por ejemplo, Zsh, Fish y PowerShell.

Por tanto, abrir un terminal no significa que estés usando Bash. En las instalaciones más recientes de macOS, la shell predeterminada suele ser Zsh, mientras que un terminal en Windows puede abrir, por ejemplo, PowerShell o un entorno Linux.

No todas las órdenes que se usan en Bash forman parte de él. cd, que sirve para cambiar de directorio, es una orden integrada. En cambio, ls, grep y mkdir suelen ser programas independientes que ejecuta la shell. La disponibilidad de estas herramientas y las opciones que admiten dependen del entorno.

Bash permite conectar programas mediante una tubería, representada por el símbolo |. La tubería envía la salida estándar de una orden a la entrada estándar de la siguiente:

printf '%s\n' 'informe.txt' 'foto.jpg' | grep '\.txt$'

Aquí, printf muestra dos nombres y grep selecciona la línea que termina en .txt. Solo se está filtrando texto: el ejemplo no crea ni busca archivos en el disco.

Cómo comprobar si Bash está disponible e iniciarlo

En Linux, Bash suele estar ya instalado. macOS también incluye Bash, aunque la versión suministrada puede ser distinta de las disponibles en otros entornos. Para comprobar si el programa está disponible y qué versión tiene, escribe en el terminal:

bash --version

Esta comprobación no confirma que la sesión actual esté usando Bash: solo ejecuta el programa disponible con la opción de mostrar su versión. La orden bash inicia una sesión de esta shell, y exit la cierra. Una vez dentro de Bash, puedes comprobar la versión de la shell actual con printf '%s\n' "$BASH_VERSION".

En Windows hay dos soluciones populares con usos distintos. WSL, el Subsistema de Windows para Linux, permite utilizar un entorno Linux. Git Bash proporciona Bash y un conjunto de herramientas útiles, entre otras cosas, para trabajar con Git, pero no es un entorno Linux completo. Consulta los requisitos de instalación actuales en la documentación de Microsoft o de Git for Windows.

Tu primer script en un directorio de prueba seguro

El siguiente ejemplo crea dos informes vacíos y los mueve a un subdirectorio. Empieza por crear un nuevo directorio de trabajo y entrar en él:

mkdir bash-prueba
cd bash-prueba

Si el directorio ya existe, elige otro nombre. Continúa solo después de haber entrado correctamente en el nuevo directorio. Con un editor de texto, crea dentro de él un archivo llamado organizar.sh con este contenido:

#!/usr/bin/env bash

directorio="informes"
mkdir -p "$directorio" || exit 1
touch informe-01.txt informe-02.txt || exit 1

for archivo in informe-*.txt; do
  mv -- "$archivo" "$directorio/" || exit 1
done

printf 'Se han movido los informes al directorio: %s\n' "$directorio"

La primera línea, llamada shebang, indica qué intérprete debe usarse cuando se ejecuta el archivo directamente. La variable directorio guarda el nombre del directorio de destino, y el bucle for repite la operación para cada nombre de archivo que coincida con el patrón. La expresión || exit 1 detiene el script si la orden anterior devuelve un error.

Ejecuta el script y comprueba el resultado:

bash organizar.sh
ls informes

Al ejecutarlo de esta manera, el archivo no necesita permiso de ejecución: indicas el intérprete mediante la orden bash. Las comillas alrededor de las variables evitan, entre otras cosas, que los nombres con espacios se dividan en argumentos separados.

Cuándo usar Bash y qué precauciones tomar

Bash es una buena opción cuando la tarea consiste principalmente en combinar herramientas existentes y realizar operaciones con archivos. Si necesitas una lógica más elaborada, estructuras de datos complejas o una aplicación más grande, Python u otro lenguaje de propósito general suele permitir un código más legible y más fácil de probar.

Las órdenes se ejecutan con los permisos del usuario que las inicia. Eliminar un archivo con rm normalmente no lo envía a la papelera, y la redirección > puede sobrescribir el contenido de un archivo existente. No ejecutes instrucciones copiadas con sudo, una herramienta que permite ejecutar órdenes con los permisos de otro usuario, hasta que entiendas lo que hacen.

Para empezar, modifica el script de ejemplo de modo que, en lugar de usar mv, solo muestre los nombres de los archivos con printf. Revisar la lista antes de realizar cambios es un hábito sencillo que también te será útil cuando trabajes con datos reales.

Lee también

Descubre cómo PHP-FPM atiende peticiones PHP, en qué se diferencia de un servidor web y cómo ajustar sus procesos al tráfico y los recursos.
Conoce BIND, el software abierto de servidor DNS: sus funciones, cómo gestiona dominios y cuándo conviene instalarlo por tu cuenta.
Descubre qué son el registro REGON de Polonia y su número, en qué se diferencian de NIP y KRS y cómo verificar los datos de una empresa.