Xonsh: Lenguaje de Shell y Prompt de comandos multiplataforma
Estos días recientes he estado curioseando el Internet, buscando información útil relacionada con Shell Scripting. Con el objetivo de actualizar el código de una pequeña y útil herramienta de software que creé hace poco más de una década. Aplicación que en su momento, se llamaba Linux Post Install – Script Bicentenario (LPI-SB), y estaba generada únicamente con órdenes de comandos basadas en Bash. Y en medio de esa búsqueda he conocido un interesante utilitario o programa llamado «Xonsh».
Para quienes nunca han escuchado de esta aplicación, vale adelantar que la misma es, una genial herramienta de software para terminales que ofrece un Lenguaje de Shell y un Prompt de comandos multiplataforma que funciona con Python.
Y como de costumbre, antes de entrar de lleno en el tema de hoy sobre herramientas y usos del Terminal, y más específicamente sobre la útil aplicación llamada «Xonsh», dejaremos para aquellos interesados los siguientes enlaces a algunas anteriores publicaciones relacionadas. De manera tal, de que puedan explorarlas fácilmente, en caso de ser necesario, luego de finalizar de leer esta presente publicación:
“Shell Scripting es la técnica (habilidad / destreza) de diseñar y crear Script (archivo de automatización de tareas) mediante un Shell (preferiblemente) de un Sistema Operativo, o un Editor de Texto (Gráfico o Terminal). Este es un tipo de lenguaje de programación que generalmente es interpretado. Es decir, que mientras la mayoría de los programas son compilados (codificados), porque son convertidos permanente a un código especifico (especial) antes de que puedan ejecutarse (proceso de compilación), un script de shell permanece en su forma original (su código fuente en forma de texto) y son interpretados comando por comando cada vez que se ejecutan”. Shell, Bash y Scripts: Todo sobre Shell Scripting
Xonsh: Shell para Bash, Python y más
¿Qué es Xonsh?
Según su sitio web oficial, la aplicación «Xonsh» es descrita brevemente de la siguiente forma:
“Es una shell potenciada por Python. Un lenguaje de shell y un prompt de comandos multiplataforma y con tecnología Python. El lenguaje es un superconjunto de Python 3.6+ con algunas shells adicionales a las que estás acostumbrado de Bash e Python. Funciona en todos los sistemas principales, incluyendo Linux, OSX y Windows. Xonsh está pensado para el uso diario de expertos y novatos”.
Sin embargo, luego agregan que con ella:
“Cualquier usuario de terminal puede mezclar fácilmente comandos de Python y del Shell (como Bash) en un enfoque potente y simplificado de la línea de comandos”.
Lo que, en palabras más sencillas se traduce en que al ejecutar «Xonsh» se nos ofrece un Shell o ambiente de terminal donde podremos ejecutar tanto comandos simples como órdenes de comandos complejas de Bash Shell como de Python. Lo cual puede ser extremadamente útil, tanto para SysAdmin y Devs, como para entusiastas y principiantes de la terminal, ya sea para aprender como para empezar a trabajar.
Características
Actualmente, «Xonsh» va por su la última versión de número 0.11.0, liberada el día 17/11/21. Y puede ser instalada de muchas formas, por ejemplo, por consola, de forma tradicional con el gestor de paquetes usado de costumbre en cada Distro GNU/Linux, como por el gestor Pip de Python, o mediante un archivo AppImage o usando Docker.
Entre sus características o funciones generales tiene las siguientes:
- Permite combinar comandos de (Bash) Shell con Python o viceversa.
- Permite el uso de extensiones de terceros, xontribuciones o xontribs, los cuales no son más que, un conjunto de herramientas y convenciones para extender la funcionalidad de xonsh.
- Ofrece una interfaz robusta en cuanto a manejo del historial, dado que, crea archivos de historial con una rica estructura y metadatos y una API para interactuar con ellos.
- Incluye una potente personalización de los avisos, que se materializa mediante la terminación de pestañas, los enlaces de teclas y los estilos de color personalizables, incorporados por defecto.
Mientras que, en esta última versión actual se incluyeron novedades, tales como:
- Adicción de la unión de las teclas CTRL-Derecha para completar una sola palabra de autosugestión.
- Visualización del tipo y la descripción de las variables de entorno al completarlas.
- Mejoramiento del completador de pip/xpip.
- Adicción de la tecla CTRL-Retroceso para eliminar una sola palabra mediante $XONSH_CTRL_BKSPC_DELETION.
Para más información sobre «Xonsh» puedes visitar su sección oficial en PyPi y GitHub, o directamente su sección de Documentación y Tutorial, en su sitio web oficial.
Pantallazos
En nuestro caso, luego de instalada con la orden de comando «sudo apt install xonsh»
y la siguiente «sudo pip3 install prompt_toolkit»
, ya pudimos empezar a ejecutarla y teclear comandos de Bash y Python en una sola Shell, tal como se muestra a continuación:
Apertura del Terminal
Ejecución de la Shell de Xonsh
Ejemplos comandos de Bash
Ejemplos de comandos de Python
Por último, para explorar más artículos sobre Shell Scripting en DesdeLinux puedes hacer clic en el siguiente enlace. Y si te da curiosidad ver la aplicación que estoy desarrollando con Bash puro, te recomiendo ir a mi Canal de YouTube y ver los vídeos sobre el Linux Post Install – Script de Optimización Automatizada (LPI-SOA).
Resumen
En resumen, «Xonsh» es una genial herramienta de software para terminales (CLI). Qué además, es extremadamente útil para aquellos amantes de hacer scripts o practicar Shell Scripting, no solo sobre Bash sino sobre Python, entre otros (Zsh, Fish, y Plumbum). Por ende, esperemos que tan interesante herramienta siga desarrollándose en beneficio de los apasionados usuarios de GNU/Linux, y el Terminal.
Esperamos que esta publicación, sea de mucha utilidad para toda la «Comunidad de Software Libre, Código Abierto y GNU/Linux»
. Y no dejes de comentarla más abajo, y de compartirla con otros en tus sitios webs, canales, grupos o comunidades favoritas de redes sociales o sistemas de mensajería. Por último, visita nuestra página de inicio en «DesdeLinux» para explorar más noticias, y únete a nuestro canal oficial de Telegram de DesdeLinux.