Qué es Bash y cómo crear tu primer script
Autor: Redacción Domeny.ForSale 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:
- buscar, copiar y organizar archivos;
- ejecutar herramientas de desarrollo y pruebas;
- procesar los resultados de texto de otros programas;
- automatizar tareas de administración en un servidor.
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.
