Bash, abreviatura de "Bourne Again SHell", es un shell de Unix y un lenguaje de comandos que sirve tanto como un intérprete de comandos para el sistema operativo como un lenguaje de programación para escribir scripts de shell. Creado como un reemplazo para el Bourne Shell (sh), Bash incorpora características del Korn Shell (ksh) y del C Shell (csh), lo que lo convierte en una herramienta poderosa y versátil para tareas de línea de comandos y scripting. Bash se utiliza ampliamente en varias distribuciones de Linux, macOS y otros sistemas operativos similares a Unix, y sirve como el shell predeterminado en muchos sistemas.
Bash fue desarrollado por Brian Fox para el Proyecto GNU en 1987 como un reemplazo de software libre para el Bourne Shell (sh). El objetivo era proporcionar a los usuarios un shell más rico en características mientras se mantenía la compatibilidad con los scripts existentes de sh. A lo largo de los años, Bash ha evolucionado gracias a las contribuciones de numerosos desarrolladores, y su crecimiento fue impulsado por la creciente popularidad de Linux y el software de código abierto.
En sus primeros años, Bash ganó rápidamente popularidad entre los usuarios y desarrolladores debido a su extensibilidad y al rico conjunto de características que introdujo. Las características clave incluyeron la edición de línea de comandos, el control de trabajos y capacidades de scripting mejoradas. Hasta ahora, Bash se mantiene activamente, con la versión 5.2 lanzada en septiembre de 2021. Continúa siendo una herramienta estándar para administradores de sistemas, desarrolladores y cualquier persona que trabaje con sistemas operativos similares a Unix.
Bash se ha inspirado en varios otros shells y lenguajes de programación. La sintaxis y las estructuras de comandos del Korn Shell (ksh) y del C Shell (csh) influyeron en gran medida en su diseño. Además, sus características de lenguaje de comandos facilitan la integración con lenguajes de programación como Python y Ruby, que a menudo se utilizan en scripts para mejorar la funcionalidad.
Bash se utiliza ampliamente para scripting y automatización de tareas del sistema, gestión de instalaciones de software, realización de tareas de administración del sistema y manejo de trabajos de procesamiento de datos. Está integrado en los flujos de trabajo de desarrollo de muchas aplicaciones de software y en pipelines de CI/CD, así como en entornos en la nube y prácticas de DevOps.
Bash admite la asignación de variables sin una declaración de tipo previa. Por ejemplo:
name="World"
echo "Hello, $name!"
Bash incluye sentencias condicionales como if-else para el control de flujo:
if [ "$name" == "World" ]; then
echo "Hello, World!"
else
echo "Hello, Stranger!"
fi
Bash permite bucles como for
, while
y until
. Aquí hay un ejemplo de un bucle for
:
for i in {1..5}; do
echo "Iteración $i"
done
Puedes definir e invocar funciones en Bash:
greet() {
echo "Hello, $1!"
}
greet "Usuario"
Bash admite la sustitución de comandos utilizando comillas invertidas o $(...)
:
today=$(date)
echo "Hoy es $today"
Bash admite arreglos indexados unidimensionales:
fruits=("manzana" "plátano" "cereza")
echo "Primera fruta: ${fruits[0]}"
Bash proporciona características de manipulación de cadenas como la extracción de subcadenas:
text="Hello World"
echo ${text:6:5} # Salida "World"
Bash permite operaciones aritméticas básicas utilizando $((...))
:
result=$((5 + 3))
echo "El resultado es $result"
Puedes redirigir la entrada y salida en Bash:
echo "Hello" > output.txt
Bash permite el uso de documentos here para entrada de múltiples líneas, facilitando el paso de cadenas de múltiples líneas a comandos:
cat << EOF
Esta es una cadena de múltiples líneas.
EOF
Si bien los scripts de Bash se pueden editar en cualquier editor de texto, varios entornos de desarrollo integrados (IDEs) ofrecen soporte para Bash. Estos incluyen Visual Studio Code, Atom, Sublime Text y Eclipse con complementos.
Los scripts de Bash son interpretados en lugar de compilados, siendo el propio intérprete de Bash quien ejecuta los scripts. El comando para ejecutar un script es:
bash script.sh
Para construir proyectos, es común crear un Makefile utilizando make
, o usar scripts de Bash para automatizar tareas como la instalación o el despliegue.
Bash se emplea en varios dominios, incluyendo:
Bash encuentra sus comparaciones más cercanas en lenguajes como Python y Perl para scripting, mientras que puede compararse con lenguajes de propósito más general como C o Java en casos de uso específicos.
Bash sobresale en interacciones de línea de comandos y tareas del sistema, mientras que Python es más versátil para tareas de programación complejas, procesamiento de datos y desarrollo de aplicaciones. Python ofrece una rica biblioteca estándar que lo hace adecuado para aplicaciones más grandes.
Perl se utiliza a menudo para el procesamiento de texto y tareas de administración del sistema; sin embargo, tiene una sintaxis más compleja en comparación con Bash. Bash se centra en la ejecución de comandos, mientras que Perl es más centrado en la programación.
JavaScript es predominantemente un lenguaje web del lado del cliente, mientras que Bash sirve como un intérprete de comandos y procesador de scripts para operaciones del sistema. Bash no es adecuado para el desarrollo web, mientras que JavaScript sobresale en ese dominio.
Al traducir scripts de Bash a otros lenguajes, asegúrate de validar los equivalentes de los comandos y verificar las dependencias de características a nivel de sistema. Existen herramientas como sh2py
que pueden convertir scripts de shell a Python, pero las diferencias semánticas deben manejarse cuidadosamente.
Hay algunas herramientas disponibles para la traducción de código fuente a código fuente, incluyendo: