XONSH: el poder de Python en la shell
En todos los sistemas operativos disponemos de un terminal de línea de comandos, que nos permite acceder a las operaciones básicas del sistema operativo. Algunos sistemas populares son Bash, Zsh, PowerShell o el mítico MS DOS. En este artículo vamos a abordar una alternativa a todos estos sistemas, que llega muy vitaminada gracias a Python.
Qué es Xonsh
Xonsh sería una nueva alternativa a los sistemas de terminal tradicionales, capaz de funcionar en múltiples plataformas y, lo mejor, basado en Python, lo que agrega una inmensa gama de posibilidades para la realización de scripts para la shell. Gracias a Xonsh podemos combinar las posibilidades de los lenguajes Shell con las del propio Python.
Podemos pensar en Xonsh como un superset de Python 3.6 o superior, con la posibilidad de realizar la ejecución directa de comandos para la shell. Funciona en todos los sistemas operativos del mercado, como Linux, MacOS o Windows.
Instalar Xonsh
Si queremos disponer de Xonsh en nuestro sistema lo podemos instalar directamente a través de los gestores de paquetes.
Por ejemplo, en un sistema Ubuntu utilizamos este comando:
apt install xonsh
En MacOS podemos hacer uso del gestor de paquetes Homebrew. Entonces el comando sería el siguiente:
brew install xonsh
En Windows y en general en cualquier sistema operativo que tenga Python instalado lo podemos obtener directamente como un package PyPi, a través del comando siguiente:
python -m pip install 'xonsh[full]'
También en Windows puedes crearte un perfil específico de Windows Terminal que te abra directamente el shell de Xonsh.
Cómo probar Xonsh con Docker
Para los usuarios de Docker existen diversas imágenes que ya tienen Xonsh instalado de casa, de modo que se puede probar las posibilidades de esta herramienta sin necesidad de instalarla en el propio sistema host.
Si tenemos Docker instalado podemos ejecutar este simple comando para descargar y levantar un contenedor ligero en modo interactivo, lo que nos permite directamente escribir comandos en la shell del sistema, con Xonsh activado.
docker run -it --rm xonsh/xonsh:slim
Arrancar Xonsh
Una vez hemos instalado Xonsh podemos arrancar el intérprete con el siguiente comando:
xonsh
Lanzado Xonsh veremos que nos devuelve de nuevo al intérprete de línea de comandos. Sin embargo, ahora podremos escribir sentencias Python para que sean ejecutadas inmediatamente.
Por ejemplo, podríamos escribir cosas como estas:
1 + 1 echo @(i for i in range(42))
El resultado que obtendremos se puede ver en la siguiente imagen:
En general soporta cualquier código Python que deseemos ejecutar y, por supuesto, también es posible ejecutar comandos Bash de toda la vida como:
ls -l cat README.md
Comparación con otros sistemas de terminal
En la propia documentación de Xonsh hay una comparativa interesante de las virtudes de Xonsh con respecto a otros sistema de consola tradicionales, como Bash o Zsh, incluso con otros sistemas de shell avanzados pero no tan populares como Fish.
La diferencia fundamental es que Xonsh nos permite de una manera muy sencilla acceder a todo el ecosistema de desarrollo para Python, a la vez que nos ofrece soporte nativo a múltiples plataformas o coloreado de sintaxis en el propio terminal.
Aprender más sobre Xonsh
Encuentras toda la información sobre este sistema de terminal vitaminado en la propia página web de Xonsh. Si deseas aprender más sobre sus posibilidades existen una serie de guías en la documentación que nos ofrecen tutoriales de todos los niveles y que cubren diversos de los objetivos y posibilidades que nos ofrece esta herramienta.