Nushell no es Zsh
Como desarrollador con años de experiencia trabajando en entornos de línea de
comandos, siempre ando buscando maneras y herramientas para poder mejorar mi
productividad. Es así que hace un par de años me encuentro con
Nushell, una shell desarrollada en Rust, ultra rápida que
tenía una linda sintaxis para manejar datos... Hype de por medio, procedo a
compilarlo y a tratar de migrar mi configuración de Zsh.
Primer error: Nushell no es POSIX. Algunas funcionalidades y comportamientos
de los comandos diferían de lo que estaba acostumbrado en Zsh. Tras varios
intentos de adaptación, decidí volver a mi shell habitual. Hasta ayer.
Cambio de paradigma: procesamiento de datos primero
Necesitaba procesar y cruzar datos de diferentes fuentes en archivos CSV y JSON.
Mi primir instinto cuando se refieren a este tipo de tareas es agarrar y tratar
de hacer un one-liner con Bash, si eso no funciona, script en Bash y finalmente
hacer un script en Python y a otra cosa. Sin embargo, esta vez el one-liner lo
hice en Nushell. ¡Vaya sorpresa que me lleve!
Primero que nada, en lugar de manejar cadenas de texto cómo lo hacen los
intérpretes de comandos convencionales, Nushell trabaja con tablas y objetos estructurados. Esto quiere
decir que podés realizar operaciones complejas sobre cualquier tipo de dato
estructurado cómo si fuese una base de datos. Pero desde la línea de comando.
Una locura.
Ahí tuve un momento de iluminación: no estás simplemente construyendo pipes de
texto, estás manipulando estructuras de datos organizadas 🤯.
No sólo archivos estructurados también salidas normales cómo ls
pueden ser
tratadas cómo tablas. Por ejemplo en vez de ejecutar ls -lh | awk '{print $9"\t"$5}'
para tener una tabla de nombre de archivo y su correspondiente tamaño, en
Nushell se traduce a ls -la | select name size
Ventajas que marcan la diferencia
Procesamiento de Datos Estructurados
Nushell maneja datos estructurados en forma de tablas y objetos JSON. Esto facilita tareas como:
- Filtrar datos de forma precisa.
- Convertir formatos (CSV, JSON, YAML, etc.) sin herramientas externas.
- Explorar y transformar datos tabulares con una sintaxis legible y concisa.
Conexión natural con APIs y herramientas modernas
Seguro que si estás leyendo esto es porque regularmente te toque trabajar con
APIs REST y formatos cómo JSON. Nushell es un placer
http get https://restcountries.com/v3.1/all?fields=name | get name | select common nativeName | sort | first 3
No es necesario cURL
o wget
ni acordarse de la sintaxis de jq
, esta shell
se encarga de todo.
Integración intuitiva con otras herramientas
Nushell mantiene las funcionalidades básicas de un intérprete, como navegar por directorios,
ejecutar comandos del sistema y manejar procesos. Sin embargo, extiende estas
capacidades con comandos integrados que entienden el contexto de los datos,
mejorando significativamente la experiencia. Así que no hay demasiado problema
si querés usar jq
en vez de los comandos nativos.
Documentación clara y comunidad activa
Para los desarrolladores que buscamos eficiencia, Nushell ofrece documentación
bien estructurada y una comunidad activa, lo que nos acelera la curva de aprendizaje
y ayuda a la adopción.
¿Zsh o Nushell? Ambos
Nushell es una herramienta para procesar datos primero y un shell después. Esto
significa que podés usar Nushell para realizar tareas complejas de procesamiento
de datos como: análisis, manipulación y visualización de datos.
En mi caso en particular voy a continuar usando Zsh pero cada vez que tenga que
procesar información voy a usar esta herramienta cómo primera opción. Y quien dice
¿que tal que termine por adoptarla cómo shell principal?
Si estás acostumbrado a usar intérpretes tradicionales como Bash o Zsh, es posible
que necesites un poco de tiempo para adaptarte a Nushell. Sin embargo,
una vez que te hayas acostumbrado, vas a encontrar que es una herramienta
valiosa que podés usar para una variedad de tareas.
Foto de Wesley Tingey en Unsplash
Top comments (0)