Tanto si quieres convertirte en un Hacker, un administrador de sistemas de la nube, o aumentar tu productividad como desarrollador, hay un lenguaje que muchos profesionales de IT en mi opinion llegan a usar muy a menudo de una u otra forma y que vale la pena dedicarle algunas horas de estudio.
De hecho este lenguaje es más facil que aprender con otros, y ademas sirve para poder acelerar tareas que hacemos a diario y puede ayudarnos a entender mucho más como funcionan los sistemas operativos y los programas de terminal.
Este lenguaje es Bash, y a pesar que ya ha pasado mucho tiempo desde que se creo (por el año 1987), este sigue muy vigente, y aprenderlo puede darte una habilidad que puedes usar indpendientemente del area de TI (Tecnologías de la información) a la que te dediques.
pero para los que no lo conocen primero veamos que es bash.
¿Qué es Bash?
Bash es un lenguaje de script de shell y a su vez un intérprete de comandos Open Source para sistemas operativos tipo Unix (Linux, Mac).
Es decir este es el programa que cuando abrimos una terminal nos permite ejecutar programas como:
- cd: cambia el directorio actual.
- ls: muestra el contenido de un directorio.
- mkdir: crea un nuevo directorio.
- rm: elimina archivos o directorios.
- mv: mueve o renombra archivos o directorios.
- cp: copia archivos o directorios.
- touch: crea un nuevo archivo.
- cat: muestra el contenido de un archivo.
- grep: busca en un archivo o archivos coincidencias con una cadena de texto.
- find: busca archivos y directorios que coinciden con ciertos criterios.
- chmod: cambia los permisos de un archivo o directorio.
- ssh: inicia una sesión de shell segura en un servidor remoto.
- scp: copia archivos de forma segura entre un servidor remoto y un cliente local.
- top: muestra información en tiempo real sobre los procesos que se están ejecutando en el sistema.
- ping: envía paquetes de datos a una dirección IP para comprobar la conectividad de la red.
- curl: descarga archivos desde una URL.
- tar: crea y extrae archivos de archivo tar.
- unzip: extrae archivos de archivos zip.
- history: muestra una lista de comandos utilizados anteriormente en la sesión actual.
- man: muestra la página del manual de un comando específico.
Entre otros comandos que tambien podemos instalar y empezar a probar desde nuestra terminal.
Bash es un Shell, Lo que quiere decir que Bash proporciona una interfaz de linea de comandos (CLI) para que un usuario pueda interactuar con el sistema operativo a través de comandos de texto, De hecho los shells no son programas nuevos, por mencionar alguno datos importante:
- Ken Thompson (en los laboratorios Bell) desarrolló el primer shell parar UNIX llamado V6 shell en 1971, y el programa tenia el nombre de sh (
/bin/sh
) - Posteriormente, en 1977, Stephen R. Bourne desarrolló el shell Bourne (sh), que fue el primer shell disponible en el sistema operativo Unix que se convirtió en un estándar de facto durante mucho tiempo.
- hasta que en 1989, se hizo publico el primero lanzamiento de Bash (Bourne-Again SHell*), desarrollado por Brian Fox para el proyecto GNU de la Free Software Foundation (FSF). en el que el nombre hace referencia a su relación con el shell original de Unix, llamado Bourne shell (sh), ya que Bash es una versión mejorada y extendida de sh, de hecho este tambien es un juego de palabras con "born again" que singnifica nacido de nuevo, haciendo referencia a que este shell es el sucesor de sh. Desde entonces, Bash se ha convertido en la shell más utilizada en sistemas operativos basados en Unix
Ahora si hablamos actualmnete de bash este es compatible con varios sistemas operativos, incluyendo Linux, macOS, BSD y otros sistemas tipo Unix, y siendo muy usado en tareas como la gestión de archivos, copiando, eliminando y moviendo por ejemplo; tambien permite procesar de texto, y es muy usado en la administración de redes.
Aunque una de sus caracteristicas principales es la ejecución de Scripts, ya que permite usar su propio lenguaje de programacion practicamente, para que podamos automatizar tareas con pocas lineas de código. lo que recibe el nombre de Bash Scripting.
Bash Scripting
Cuando hablamos de Bash scripting nos estamos refiriendo a un lenguaje de programación interpretado, lo que significa que los scripts se ejecutan línea por línea en lugar de ser compilados antes de la ejecución. Estos Bash scripting utiliza una sintaxis similar a la de otros lenguajes de programación de scripts, como Perl y Python.
Y entre las caracteristicas de este lenguaje podemos ver:
Que admite una variedad de tipos de datos, incluyendo cadenas, enteros, arreglos y objetos.
Utiliza variables para almacenar valores y puede realizar operaciones matemáticas y lógicas en estas variables.
Admite estructuras de control de flujo como bucles (while, until, for) y condicionales (if, else, elif, case) que permiten a los scripts tomar decisiones y realizar tareas repetitivas.
permite la creación de funciones y la modularización de código para facilitar la reutilización y la organización.
Se integra bien con otros programas de la línea de comandos y puede interactuar con ellos para automatizar tareas y realizar operaciones complejas. como pasar el resultado de un comando a otro comando para que continue procesandose, algo que recibe el nombre de Pipes
Usando estos Scripts podemos hacer todo lo que podemos ejecutar en la terminal manualmente, solo que aqui podemos crear logica más compleja, guardarlos y crear nuevos programas. De hecho tambien podemos lanzar estos programas apenas el shell es abierto. Esto es gracias a que cuando un shell nuevo es abierto puede leer archivos de configuracion como .bashrc
o .bash_profile
por ejemplo. en donde puedes extender la configuracion y es tambien la forma en la que permite a bash ser personalizado con colores y temas, o tambien puedes establecer variables de entono, o ejecutar otros scripts y programas cuando inicie.
Todo esto hace que Bash scripting esa habilidad valiosa para cualquier profesional IT que trabaje en un entorno de línea de comandos y que necesite automatizar tareas, administrar sistemas y procesar grandes cantidades de datos de manera eficiente.
Alternativas a Bash
Ahora por supuesto Bash no es el unico shell, otras opciones que tambien tenemos actualmente son:
- Zsh (Z Shell): Zsh es una shell que ofrece muchas características avanzadas, como autocompletado mejorado, historial de comandos más avanzado, y una sintaxis de script más flexible y extensible.
- Ksh (Korn Shell): Ksh es una shell que fue desarrollada por David Korn y se considera una versión mejorada de sh, al igual que Bash. Ksh tiene muchas características avanzadas, como el autocompletado, el historial de comandos mejorado y la capacidad de definir funciones personalizadas.
- Fish (Friendly Interactive SHell): Fish es una shell moderna y fácil de usar que ofrece características avanzadas como el autocompletado inteligente y una sintaxis de comando más intuitiva. Fish también tiene un modo de ayuda integrado que proporciona información útil sobre los comandos disponibles.
- Dash (Debian Almquist Shell): Dash es una shell más simple y ligera que se enfoca en la velocidad y la eficiencia. Dash se utiliza comúnmente como el shell predeterminado en sistemas operativos basados en Debian, como Ubuntu.
Cada una de estas shells tiene sus propias características y ventajas, y la elección de una u otra dependerá de las necesidades y preferencias personales de cada usuario.
Pero al final Bash sigue siendo un fundamento de todas estas. Asi que si lo tuyo es mejorar como profesional en el manejo de la terminal, tambien dejo el curso de bash en la descripcion y al final del vieo para que puedas aprenderlo más a fondo
En fin este es un resumen muy rapido de lo que es posible con bash, asi que si tienes una duda puedes dejarlo en los comentarios y nos vemos muy pronto