La mayoría de los intérpretes de comandos ('shells') permiten al usuario crear y ejecutar sus propios 'shell scripts', programas comparativamente sencillos a causa de sus limitaciones de sintaxis, interpretados en tiempo de ejecución. Los archivos .bat de la vieja línea de comandos de MS-DOS, los .ps del actual PowerShell de Windows, o los .sh de Bash (y otras shells compatibles) en sistemas Unix son ejemplos de estos programas.
Pero, ¿qué pasaría si pudiéramos escribir scripts para nuestra shell favorita complementando el uso de comandos con una sintaxis más compleja y potente, extraída directamente de un lenguaje de alto nivel? ¿Y si dicho lenguaje fuera Python?
Xonsh se define como un "lenguaje de shell con tecnología Python, multiplataforma y orientado a Unix [aunque] funciona en todos los sistemas principales". Siendo más técnicos, podemos decir que Xonsh es un superconjunto de Python 3.6+; es decir, un Python con elementos extra… elementos que reconocerás si estás acostumbrado a usar tanto Bash como iPython (el shell interactivo de Python).
La mejor forma de entender lo que nos ofrece Xonsh es analizar esta cuatro imágenes que nos ofrece el proyecto en su página web oficial:
Xonsh es la Shell
Xonsh es una shell normal y corriente (con su autocompletado, su coloreado de sintaxis…), que en cualquier momento puede sustituir a Bash, Zsh o similares. Desde ella podremos seguir ejecutando los típicos comandos de Unix como si nada hubiera cambiado.
Xonsh es Python
Cualquier uso que le puedas dar al modo interactivo de Python (que permite introducir expresiones del lenguaje una a una, visualizando inmediatamente el resultado de su evaluación), se lo puedes dar también a Xonsh.
Xonsh es la Shell en Python
Aunque Python es más potente que el Bash scripting, en algunas ocasiones es más rápido y sencillo hacer ciertas cosas recurriendo a los típicos comandos de Bash y utilidades básicas de Unix, lo que nos permite combinar su potencia, tal como se ve en la imagen.
Xonsh es Python en la Shell
Pero, en otras ocasiones, lo fácil y sencillo será recurrir a expresiones propias de Python cuando estemos realizando una programación mayoritariamente de shell, como la gestión de variables.
¿Cómo empezar a usarlo?
La instalación de Xonsh es muy sencilla, pudiendo resolverla rápidamente desde el gestor de paquetes de nuestra distribución Linux favorita, o bien desde Brew (para OSX) o desde PIP/Conda (gestores de paquetes de Python).
Una vez instalado Xonsh podrás instalar también cualquiera de las 'Xontribs', extensiones desarrolladas por terceros que complementan la funcionalidad de la shell. O bien, puede ser el momento de empezar a revisar esta útil 'hoja de trucos' no oficial o bien el completo tutorial de uso del proyecto, para saber cómo empezar a exprimir las posibilidades de este lenguaje.