Volver a actualizaciones
Nuevo releaseAug 30, 2026

nushell v0.115.0

Un nuevo tipo de shell

Compartir

Nushell

Crates.io Build Status Nightly Build Discord The Changelog #363 GitHub commit activity GitHub contributors

Un nuevo tipo de shell.

Ejemplo de nushell

Tabla de Contenidos

Estado

Este proyecto ha alcanzado un nivel de calidad de producto mínimo viable. Muchas personas lo usan como su shell diaria, pero puede ser inestable para algunos comandos. El diseño de Nu está sujeto a cambios a medida que madura.

Aprender sobre Nu

El libro de Nushell es la fuente principal de documentación de Nushell. Puedes encontrar una lista completa de comandos de Nu en el libro, y tenemos muchos ejemplos de uso de Nu en nuestro recetario.

También estamos activos en Discord; ¡ven a conversar con nosotros!

Instalación

Para instalar Nu rápidamente:

# Linux y macOS
brew install nushell
# Windows
winget install nushell

Para usar Nu en GitHub Action, consulta setup-nu para más detalles.

Las instrucciones detalladas de instalación se pueden encontrar en el capítulo de instalación del libro. Nu está disponible a través de muchos gestores de paquetes:

Packaging status

Para más detalles sobre qué plataformas soporta activamente el equipo de Nushell, consulta nuestra política de soporte de plataformas.

Configuración

Las configuraciones predeterminadas se pueden encontrar en sample_config que son los archivos de configuración que uno obtiene cuando inicia Nushell por primera vez.

Establece toda la configuración predeterminada para ejecutar Nushell. Desde aquí se puede personalizar este archivo según las necesidades específicas.

Para ver dónde se encuentra config.nu en tu sistema, simplemente escribe este comando.

$nu.config-path

Consulta nuestro libro para toda la documentación de Nushell.

Filosofía

Nu se inspira en proyectos como PowerShell, lenguajes de programación funcional y herramientas CLI modernas. En lugar de pensar en archivos y datos como flujos de texto sin procesar, Nu considera cada entrada como algo con estructura. Por ejemplo, cuando listas el contenido de un directorio, lo que obtienes es una tabla de filas, donde cada fila representa un elemento de ese directorio. Estos valores pueden pasar por una serie de pasos, en una serie de comandos llamada 'pipeline'.

Pipelines

En Unix, es común usar tuberías entre comandos para dividir un comando sofisticado en múltiples pasos. Nu lleva esto un paso más allá y se basa en gran medida en la idea de pipelines. Como en la filosofía Unix, Nu permite que los comandos emitan a stdout y lean desde stdin. Además, los comandos pueden emitir datos estructurados (puedes pensar en esto como un tercer tipo de flujo). Los comandos que funcionan en el pipeline se dividen en una de tres categorías:

  • Comandos que producen un flujo (por ejemplo, ls)
  • Comandos que filtran un flujo (por ejemplo, where type == "dir")
  • Comandos que consumen la salida del pipeline (por ejemplo, table)

Los comandos se separan con el símbolo de tubería (|) para indicar un pipeline que fluye de izquierda a derecha.

ls | where type == "dir" | table
# => ╭────┬──────────┬──────┬─────────┬───────────────╮
# => │ #  │   name   │ type │  size   │   modified    │
# => ├────┼──────────┼──────┼─────────┼───────────────┤
# => │  0 │ .cargo   │ dir  │     0 B │ 9 minutes ago │
# => │  1 │ assets   │ dir  │     0 B │ 2 weeks ago   │
# => │  2 │ crates   │ dir  │ 4.0 KiB │ 2 weeks ago   │
# => │  3 │ docker   │ dir  │     0 B │ 2 weeks ago   │
# => │  4 │ docs     │ dir  │     0 B │ 2 weeks ago   │
# => │  5 │ images   │ dir  │     0 B │ 2 weeks ago   │
# => │  6 │ pkg_mgrs │ dir  │     0 B │ 2 weeks ago   │
# => │  7 │ samples  │ dir  │     0 B │ 2 weeks ago   │
# => │  8 │ src      │ dir  │ 4.0 KiB │ 2 weeks ago   │
# => │  9 │ target   │ dir  │     0 B │ a day ago     │
# => │ 10 │ tests    │ dir  │ 4.0 KiB │ 2 weeks ago   │
# => │ 11 │ wix      │ dir  │     0 B │ 2 weeks ago   │
# => ╰────┴──────────┴──────┴─────────┴───────────────╯

Debido a que la mayoría de las veces querrás ver la salida de un pipeline, table se asume por defecto. También podríamos haber escrito lo anterior:

ls | where type == "dir"

Poder usar los mismos comandos y componerlos de manera diferente es una filosofía importante en Nu. Por ejemplo, podríamos usar el comando integrado ps para obtener una lista de los procesos en ejecución, usando el mismo where de arriba.

ps | where cpu > 0
# => ╭───┬───────┬───────────┬───────┬───────────┬───────────╮
# => │ # │  pid  │   name    │  cpu  │    mem    │  virtual  │
# => ├───┼───────┼───────────┼───────┼───────────┼───────────┤
# => │ 0 │  2240 │ Slack.exe │ 16.40 │ 178.3 MiB │ 232.6 MiB │
# => │ 1 │ 16948 │ Slack.exe │ 16.32 │ 205.0 MiB │ 197.9 MiB │
# => │ 2 │ 17700 │ nu.exe    │  3.77 │  26.1 MiB │   8.8 MiB │
# => ╰───┴───────┴───────────┴───────┴───────────┴───────────╯

Abrir archivos

Nu puede cargar contenidos de archivos y URLs como texto sin procesar o como datos estructurados (si reconoce el formato). Por ejemplo, puedes cargar un archivo .toml como datos estructurados y explorarlo:

open Cargo.toml
# => ╭──────────────────┬────────────────────╮
# => │ bin              │ [table 1 row]      │
# => │ dependencies     │ {record 25 fields} │
# => │ dev-dependencies │ {record 8 fields}  │
# => │ features         │ {record 10 fields} │
# => │ package          │ {record 13 fields} │
# => │ patch            │ {record 1 field}   │
# => │ profile          │ {record 3 fields}  │
# => │ target           │ {record 3 fields}  │
# => │ workspace        │ {record 1 field}   │
# => ╰──────────────────┴────────────────────╯

Podemos pasar esto a un comando que obtenga el contenido de una de las columnas:

open Cargo.toml | get package
# => ╭───────────────┬────────────────────────────────────╮
# => │ authors       │ [list 1 item]                      │
# => │ default-run   │ nu                                 │
# => │ description   │ A new type of shell                │
# => │ documentation │ https://www.nushell.sh/book/       │
# => │ edition       │ 2018                               │
# => │ exclude       │ [list 1 item]                      │
# => │ homepage      │ https://www.nushell.sh             │
# => │ license       │ MIT                                │
# => │ metadata      │ {record 1 field}                   │
# => │ name          │ nu                                 │
# => │ repository    │ https://github.com/nushell/nushell │
# => │ rust-version  │ 1.60                               │
# => │ version       │ 0.72.0                             │
# => ╰───────────────┴────────────────────────────────────╯

Y si es necesario, podemos profundizar aún más:

open Cargo.toml | get package.version
# => 0.72.0

Plugins

Nu admite plugins que ofrecen funcionalidad adicional al shell y siguen el mismo modelo de datos estructurados que usan los comandos integrados. Hay algunos ejemplos en los directorios crates/nu_plugins_*.

Los plugins son binarios que están disponibles en tu PATH y siguen una convención de nomenclatura nu_plugin_*. Estos binarios interactúan con nu mediante un protocolo JSON-RPC simple donde el comando se identifica a sí mismo y envía su configuración, haciéndolo disponible para su uso. Si el plugin es un filtro, los datos fluyen hacia él un elemento a la vez, y puede devolver datos en flujo a través de stdin/stdout. Si el plugin es un sumidero, recibe el vector completo de datos finales y tiene libertad total sobre stdin/stdout para usarlos como le plazca.

El repositorio awesome-nu lista una variedad de nu-plugins, mientras que el repositorio showcase muestra publicaciones de blog informativas que se han escrito sobre Nushell junto con videos que destacan temas técnicos que se han presentado.

Objetivos

Nu se adhiere estrechamente a un conjunto de objetivos que conforman su filosofía de diseño. A medida que se añaden funciones, se verifican contra estos objetivos.

  • En primer lugar, Nu es multiplataforma. Los comandos y técnicas deben funcionar en todas las plataformas y Nu tiene soporte de primera clase para Windows, macOS y Linux.

  • Nu garantiza compatibilidad con ejecutables específicos de plataforma existentes.

  • El flujo de trabajo y las herramientas de Nu deben tener la usabilidad esperada del software moderno en 2022 (y más allá).

  • Nu ve los datos como estructurados o no estructurados. Es un shell estructurado como PowerShell.

  • Finalmente, Nu ve los datos de forma funcional. En lugar de usar mutación, los pipelines actúan como un medio para cargar, cambiar y guardar datos sin estado mutable.

Compatible Oficialmente Con

Envía un issue o PR para ser añadido a esta lista.

Contribuciones

Consulta Contribuciones para más detalles. ¡Gracias a todas las personas que ya han contribuido!

Licencia

El proyecto está disponible bajo la licencia MIT. Consulta el archivo LICENSE para más información.

Categorías