Simplemente Bash



Si un administrador de sistemas no es experto en Bash, no hace bien su trabajo. Bash es la principal herramienta con la que contamos para automatizar las tediosas tareas de administración. Su facilidad para manipular archivos en texto plano y encadenar programas con los pipes de Unix hacen que este lenguaje de scripts sea el más atractivo, rápido y KISS.

Sin embargo, aunque Bash fue concebido para realizar scripts muy sencillos, sus características le permiten implementar tareas mucho más complejas, que en principio deberían reservarse para otro tipo de lenguajes procedimentales u orientados a objetos. La sintaxis de Bash produce unos programas complejos difíciles de mantener, bastante ofuscados, por lo que personalmente no recomiendo que Bash se utilice para escribir programas completos como los que voy a comentar a continuación. Son programas que reflejan este potencial oculto de Bash y que en algún caso resultará sorprendente que programas de uso generalizado, sobre los que se ha escrito en todos los blogs de Linux no sean más que simples scripts de Bash.


Pass

Definido así mismo como el gestor de contraseñas estándar de Unix. Mucho se ha escrito sobre este programa que permite manipular contraseñas almacenadas como archivos, sin necesidad de bases de datos, mediante las herramientas básicas de línea de comandos. Lo que poca gente sabe es que Pass no es más que un wrapper de GPG escrito en Bash de apenas 650 SLOC. Una pequeña joya que puede integrarse fácilmente con otros programas (como dmenu) gracias a la modularidad conseguida por el seguimiento de la filosofía Unix.

ScreenFetch

Probablemente sea el programa más popular de la lista. Su uso es prácticamente obligatorio para todos los amantes de la personalización de escritorios. Por si fuera poco, una de sus mayores alternativas, neofetch, también está escrito en Bash y ofrece a mi modo de ver mejores opciones y recorta unas cuantas líneas de código. Honestamente, hay que decir que son programas muy farragosos debido a su orientación necesaria hacia la compatibilidad con todos los sistemas basados en Unix que se os puedan ocurrir. La variedad de formas en las que estos SOs almacenan la información del sistema y los enormes logotipos de ASCII art que incluye, le obliga a sobrepasar las 5000 SLOC pero el resultado es un programa impecable, funcional y popular.

Bocker

Este software merece una mención especial al conseguir implementar Docker en Bash. Concretamente en poco más de 100 SLOC. Es el mayor exponente que conozco del potencial de Bash para escribir software que reutilice recursos generados por otros programas. Esto se debe a que Docker es una interfaz para una serie de recursos del kernel como cgroups, namespaces e IPtables, que combinados dan lugar a los contenedores que están tan de moda entre los DevOps. Bocker consigue manejar todas esas tecnologías con un puñado de líneas de Bash. Quién sabe cuál será el gran logro de Bash, un lenguaje de scripts para administradores de sistemas que ha sobrepasado todas las expectativas de popularidad, utilidad y funcionalidad.