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ínimamente viable. Muchas personas lo usan a diario, 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 charlar con nosotros!

Instalación

Para instalar Nu rápidamente:

# Linux and 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 obtener 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 se obtienen cuando se inicia Nushell por primera vez.

Establece toda la configuración predeterminada para ejecutar Nushell. A partir de aquí, uno puede personalizar este archivo según sus 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 funcionales 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 se pueden canalizar a través de una serie de pasos, en una serie de comandos llamada 'pipeline'.

Pipelines

En Unix, es común canalizar entre comandos para dividir un comando complejo 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 de Unix, Nu permite que los comandos escriban en stdout y lean desde stdin. Además, los comandos pueden producir 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 (p. ej., ls)
  • Comandos que filtran un flujo (p. ej., where type == "dir")
  • Comandos que consumen la salida del pipeline (p. ej., 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, se asume table. 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 que arriba.

ps | where cpu > 0
# => ╭───┬───────┬──────┬───────────┬──────┬─────────┬───────┬────────────┬──────────╮
# => │ # │  pid  │ ppid │   name    │ user │ status  │  cpu  │  cpu_time  │   mem    │
# => ├───┼───────┼──────┼───────────┼──────┼─────────┼───────┼────────────┼──────────┤
# => │ 0 │  2240 │ 9872 │ Slack.exe │ dev  │ Running │ 16.40 │ 1min 12sec │ 178.3 MB │
# => │ 1 │ 16948 │ 9872 │ Slack.exe │ dev  │ Running │ 16.32 │      48sec │ 205.0 MB │
# => │ 2 │ 17700 │ 4632 │ nu.exe    │ dev  │ Running │  3.77 │       2sec │  26.1 MB │
# => ╰───┴───────┴──────┴───────────┴──────┴─────────┴───────┴────────────┴──────────╯

Abrir archivos

Nu puede cargar el contenido de archivos y URLs como texto sin procesar o 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 canalizar esto a un comando que obtiene el contenido de una de las columnas:

Categorías