¿Qué es Bash?

Ya hablamos muchísimas veces de por qué es importante aprender a usar la terminal desde el día cero.

Simple: la terminal es sencilla y universal.

Si quiero crear una carpeta en Linux, MacOS o Windows (usando una terminal decente) el comando es: mkdir el-nombre-de-la-carpeta

La interfaz gráfica es lo más, pero a la hora de manipular la compu a otro nivel, necesitamos usar la “caja manual”. O sea, necesitamos ejecutar comandos.

¿Y qué tiene que ver esto con Bash? Cuando escribís algo en la terminal estás escribiendo Bash. Cuando escribís mkdir el-nombre-de-la-carpeta Bash sabe que lo que querés hacer es invocar a la aplicación mkdir y pasarle el-nombre-de-la-carpeta para que lo use como argumento.

Cuando ejecutás el comando ps -A | grep node le estás diciendo a Bash que ejecute ls, le pase el argumento -A (que muestra todos los procesos corriendo en tu máquina, inclusive los que son de otros usuarios) y le pase el resultado de ese comando a grep que a su vez recibe el argumento node para que filtre los procesos que tienen esa palabra en algún lado.

O cuando ejecutás este comando: ps -ef | grep node | awk '{print $2}' https://stackoverflow.com/a/25751123




O sea, los comandos ps, grep y awk no son de Bash, Bash es quien le dice al sistema operativo que tiene que ejecutar esos comandos y “engancharlos”.


Bash es el lenguaje por defecto de la terminal. Cuando escribís algo en la terminal estás escribiendo un pequeño programa escrito en Bash. Entonces ¿puedo escribir cosas como if o for? Pues claro que sí. De hecho, podés crear un archivo y meterle código Bash.


Mirá este repositorio lleno de scripts de este lenguaje:


https://github.com/aviaryan/utility-Bash-scripts


Por ejemplo, este script inicia un timer pomodoro de 25 minutos:


https://github.com/aviaryan/utility-Bash-scripts/blob/master/pomodoro


Si estás en Linux, Mac o usando Git-Bash en Windows, simplemente bajás el archivo o clonás este repo y lo invocás.



Ahora te preguntarás por qué te tiene que importar todo esto. La respuesta es que durante mucho tiempo, Bash fue el lenguaje que estaba omnipresente. Entonces hay muuuuuuchos scripts de Bash que manejan servidores, muchos scripts de Bash que se comparten entre personas de equipos de desarrollo, muchos scripts de Bash que ejecutan procesos vitales para muchas empresas.

Quizás el código que modifica la base de datos o hace “la cosa” no está escrito en Bash, pero seguro el código que llama al programa que hace “la cosa” está escrito en Bash y nadie se anima a tocarlo. Y nadie se animará a tocarlo.


Esto obviamente está cambiando, muchísimos utilitarios para la terminal se escriben en otros lenguajes e inclusive el lenguaje que ejecuta el comando que tipeas, muchas veces no es Bash, hoy se usan muchas alternativas como dash, zsh y fish.



En mi experiencia

Nunca usé muchísimo Bash. Solo lo uso para crear pequeños scripts que me ayudan a trabajar en el día a día. Es como que le voy agregando poderes o “plugins” a mi terminal y sé que cualquier script de Bash que encuentre por ahí lo voy a poder usar en mi compu.

Hoy en día muchas herramientas, te ayudan a tunear la terminal e inclusive a instalarle plugins de formas mas copadas (https://hyper.is/plugins). De todas formas, mucho está hecho en Bash y esos scripts que muchas personas crearon para que todo esto de la internet funcione, vivirán, quizás por siempre, en los servidores del mundo.


Algunos links útiles:

https://codeburst.io/learn-how-to-create-custom-bash-commands-in-less-than-4-minutes-6d4ceadd9590


https://medium.com/better-programming/15-essential-linux-command-line-tips-and-tricks-95e2bfa2890f


Logo de apx
©2021 apx