Voltar às atualizações
New releaseAug 30, 2026

nushell v0.115.0

Um novo tipo de shell

Compartilhar

Nushell

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

Um novo tipo de shell.

Exemplo do nushell

Índice

Status

Este projeto atingiu um nível de qualidade de produto mínimo viável. Muitas pessoas o utilizam como seu shell diário, mas ele pode ser instável para alguns comandos. O design do Nu está sujeito a mudanças à medida que amadurece.

Aprendendo sobre o Nu

O livro do Nushell é a principal fonte de documentação do Nushell. Você pode encontrar uma lista completa dos comandos do Nu no livro, e temos muitos exemplos de uso do Nu em nosso cookbook.

Também estamos ativos no Discord; venha conversar conosco!

Instalação

Para instalar o Nu rapidamente:

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

Para usar o Nu no GitHub Action, consulte setup-nu para mais detalhes.

Instruções detalhadas de instalação podem ser encontradas no capítulo de instalação do livro. O Nu está disponível através de vários gerenciadores de pacotes:

Packaging status

Para detalhes sobre quais plataformas a equipe do Nushell suporta ativamente, consulte nossa política de suporte de plataformas.

Configuração

As configurações padrão podem ser encontradas em sample_config, que são os arquivos de configuração que se obtém ao iniciar o Nushell pela primeira vez.

Ele define toda a configuração padrão para executar o Nushell. A partir daqui, pode-se personalizar este arquivo para suas necessidades específicas.

Para ver onde o config.nu está localizado no seu sistema, basta digitar este comando.

$nu.config-path

Consulte nosso livro para toda a documentação do Nushell.

Filosofia

O Nu se inspira em projetos como PowerShell, linguagens de programação funcionais e ferramentas CLI modernas. Em vez de pensar em arquivos e dados como fluxos brutos de texto, o Nu enxerga cada entrada como algo com estrutura. Por exemplo, ao listar o conteúdo de um diretório, o que você obtém é uma tabela de linhas, onde cada linha representa um item naquele diretório. Esses valores podem ser passados por uma série de etapas, em uma série de comandos chamada de 'pipeline'.

Pipelines

No Unix, é comum encadear comandos para dividir um comando sofisticado em várias etapas. O Nu leva isso um passo adiante e se baseia fortemente na ideia de pipelines. Como na filosofia Unix, o Nu permite que comandos produzam saída para stdout e leiam de stdin. Além disso, os comandos podem produzir dados estruturados (você pode pensar nisso como um terceiro tipo de fluxo). Os comandos que funcionam no pipeline se encaixam em uma de três categorias:

  • Comandos que produzem um fluxo (por exemplo, ls)
  • Comandos que filtram um fluxo (por exemplo, where type == "dir")
  • Comandos que consomem a saída do pipeline (por exemplo, table)

Os comandos são separados pelo símbolo de pipe (|) para denotar um pipeline fluindo da esquerda para a direita.

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   │
# => ╰────┴──────────┴──────┴─────────┴───────────────╯

Como na maioria das vezes você vai querer ver a saída de um pipeline, table é assumido. Poderíamos também ter escrito o acima como:

ls | where type == "dir"

Ser capaz de usar os mesmos comandos e compô-los de maneiras diferentes é uma filosofia importante no Nu. Por exemplo, poderíamos usar o comando ps embutido para obter uma lista dos processos em execução, usando o mesmo where acima.

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 │
# => ╰───┴───────┴──────┴───────────┴──────┴─────────┴───────┴────────────┴──────────╯

Abrindo arquivos

O Nu pode carregar o conteúdo de arquivos e URLs como texto bruto ou dados estruturados (se reconhecer o formato). Por exemplo, você pode carregar um arquivo .toml como dados estruturados e explorá-lo:

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 passar isso para um comando que obtém o conteúdo de uma das colunas:

Categorias