
Un nuovo tipo di shell
Un nuovo tipo di shell.

Questo progetto ha raggiunto un livello di qualità da prodotto minimamente valido. Molte persone lo usano quotidianamente, ma potrebbe essere instabile per alcuni comandi. Il design di Nu è soggetto a cambiamenti man mano che matura.
Il libro di Nushell è la fonte principale della documentazione di Nushell. Puoi trovare un elenco completo dei comandi Nu nel libro, e abbiamo molti esempi di utilizzo di Nu nel nostro cookbook.
Siamo anche attivi su Discord; vieni a chattare con noi!
Per installare rapidamente Nu:
# Linux and macOS
brew install nushell
# Windows
winget install nushell
Per usare Nu in GitHub Action, consulta setup-nu per maggiori dettagli.
Istruzioni dettagliate per l'installazione sono disponibili nel capitolo sull'installazione del libro. Nu è disponibile tramite molti gestori di pacchetti:
Per dettagli su quali piattaforme il team di Nushell supporta attivamente, consulta la nostra politica di supporto delle piattaforme.
Le configurazioni predefinite si trovano in sample_config, che sono i file di configurazione che si ottengono al primo avvio di Nushell.
Imposta tutta la configurazione predefinita per eseguire Nushell. Da qui si può poi personalizzare questo file per le proprie esigenze specifiche.
Per vedere dove si trova config.nu sul tuo sistema, digita semplicemente questo comando.
$nu.config-path
Consulta il nostro libro per tutta la documentazione di Nushell.
Nu trae ispirazione da progetti come PowerShell, linguaggi di programmazione funzionale e strumenti CLI moderni. Invece di considerare file e dati come flussi grezzi di testo, Nu vede ogni input come qualcosa dotato di struttura. Ad esempio, quando elenchi il contenuto di una directory, ciò che ottieni è una tabella di righe, dove ogni riga rappresenta un elemento di quella directory. Questi valori possono essere passati attraverso una serie di passaggi, in una serie di comandi chiamata 'pipeline'.
In Unix, è comune usare pipe tra comandi per suddividere un comando complesso in più passaggi. Nu porta questo concetto un passo avanti e si basa fortemente sull'idea di pipeline. Come nella filosofia Unix, Nu consente ai comandi di scrivere su stdout e leggere da stdin. Inoltre, i comandi possono produrre dati strutturati (puoi pensare a questo come a un terzo tipo di stream). I comandi che operano nella pipeline rientrano in una delle tre categorie:
ls)where type == "dir")table)I comandi sono separati dal simbolo pipe (|) per indicare una pipeline che scorre da sinistra a destra.
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 │
# => ╰────┴──────────┴──────┴─────────┴───────────────╯
Poiché la maggior parte delle volte vorrai vedere l'output di una pipeline, si presume table.
Avremmo anche potuto scrivere quanto sopra:
ls | where type == "dir"
Poter usare gli stessi comandi e comporli in modo diverso è una filosofia importante in Nu.
Ad esempio, potremmo usare il comando integrato ps per ottenere un elenco dei processi in esecuzione, usando lo stesso where di sopra.
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 │
# => ╰───┴───────┴──────┴───────────┴──────┴─────────┴───────┴────────────┴──────────╯
Nu può caricare il contenuto di file e URL come testo grezzo o dati strutturati (se riconosce il formato). Ad esempio, puoi caricare un file .toml come dati strutturati ed esplorarlo:
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} │
# => ╰──────────────────┴────────────────────╯
Possiamo passare questo a un comando che ottiene il contenuto di una delle colonne: