Nu Shell: Algo más que una terminal

Hablamos de Nu Shell otra enésima terminal, que nos promete un gran número de bondades y que he decido darle una oportunidad para escribir esta entrada. Aunque la mayoría de los usuarios de GNU/Linux estamos acostumbrados a trabajar con Bash (con permiso de Zsh), la verdad es que existen un buen puñado de terminales interesantes (de ellas os hablé en esta entrada)

¿Qué es Nu Shell?

Se trata de un nuevo entorno de shell (terminal), creado siguiendo la filosofía clásica de Unix, donde tuberías (pipes) conectan comandos simples  y los lleva al estilo moderno de desarrollo.

Según indica en su documentación en castellano, su intención es «crear un shell flexible de plataforma cruzada, para la desarrolladora moderna de la era de GitHub», y añade que «permite mezclar y combinar aplicaciones de línea de comandos con una shell que comprende la estructura de datos»

Se ha creado utilizando el lenguaje de programación Rust, enfocado a una nueva generación de usuarios. Como está construido en este lenguaje, se puede instalar fácilmente a través del administrador de paquetes, llamado cargo, lo que permite que sea multiplataforma. Una vez ya lo tenemos instalado, podemos empezar a trabajar con él.

Instalación en GNU/Linux

Existen diferentes métodos de instalación, en sistemas como Debian, Ubuntu o similares, el sistema debe cumplir con algunos requisitos. Para cumplirlos debemos instalar los siguientes paquetes:

sudo apt install pkg-config libssl-dev

Los usuarios de GNU/Linux que desean utilizar las características opcionales de rawkey o portapapeles deberán instalar los paquetes:

sudo apt install libxcb-composite0-dev libx11-dev

En el sistema además debemos tener la última versión de Rust. Para conseguirlo podemos seguir estas instrucciones.

Ahora si, realizamos la instalación mediante la herramienta cargo:

cargo install nu

La herramienta de cargo hará el trabajo de descargar Nu y sus dependencias de origen, construirlo e instalarlo en la ruta del contenedor de carga para que podamos ejecutarlo.

Si lo deseamos podemos realizar la instalación habilitando todas sus funciones:

cargo install nu --all-features

Para empezar a trabajar, simplemente debemos escribir en la consola nu, para salir simplemente escribimos: exit

Trabajando con Nu Shell

La salida que nos ofrece, al ejecutar los comandos es bastante diferente al habitual, por ejemplo, al ejecutar ls, nos aparecerá la información en una tabla en formato ASCII, con columnas separadas por nombre, tipo y tamaño. Esta misma salida es predeterminada para los comandos habituales, ya sea date, find o ps, por poner algunos ejemplos.

Muestra de uso de Nu Shell

Veamos, la misma tabla, pero ordenando la columna de nombre, ordenando la columna «name«, con el parámetro «sort-by»

También podemos realizar un filtro para ver únicamente los directorios, utilizando «where type == Directory»

Mostramos únicamente los directorios

En este otro ejemplo, mostramos la fecha actual:

Comando date en Nu Shell

Esta estructura de datos hace que podamos analizar los datos como tipos simples, esto es, como números enteros, booleanos o cadenas, o tipos estructurados, como la fila de una tabla, un archivo binario, listas e incluso fragmentos de código. Esto se puede observar abriendo un documento. Por ejemplo, un archivo en formato YAML, se mostrará como una tabla.

Para mostrar la información de los ficheros con este formato, utilizamos el comando open, tal y como se muestra en la imagen:

Del mismo modo, si Nu entiende lo que constituye un campo dentro de un archivo, o un campo que se ha delimitado con un carácter conocido, esos campos pueden procesarse del mismo modo que lo haría con un solo elemento de salida. Para ayudar con este procesamiento de datos, Nu también incluye una tubería expandida. Esto funciona en tres partes: una entrada, un filtro y la salida.

La excelente documentación incluye un ejemplo que toma un archivo TOML como entrada y usa el filtro para buscar e incrementar un campo de versión antes de guardar la salida en un nuevo archivo. Aquí lo podéis consultar: Pipeline – The Nu Book

Los colores de los comandos son diferentes de los colores de los argumentos, que son diferentes, a su vez, de los valores que puede pasar a un comando. Las tuberías también tienen colores diferentes, y aunque los colores dependerán de la configuración de la terminal, esta diferencia hace que los comandos sean más fáciles de entender y nos ayuda a evitar errores (por lo menos eso es la intención)

Todo esto está unido con un autocompletado intuitivo que ayuda a lidiar con la nueva sintaxis. En cualquier caso toma algo de tiempo, como en todo en la vida, aprender a utilizarla.

Y esto es todo, otra opción más para utilizar como terminal de comandos y durante los últimos meses ya hemos hablado del unas cuantas. ¡Que no sé diga! 🙂

Para más información

Github.com – Nushell

Documentación en Español del uso de Nu Shell