
nushell v0.115.0
Un nuovo tipo di shell
Nushell
Un nuovo tipo di shell.

Indice
- Stato
- Imparare Nu
- Installazione
- Configurazione
- Filosofia
- Obiettivi
- Supportato ufficialmente da
- Contribuire
- Licenza
Stato
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.
Imparare Nu
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!
Installazione
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.
Configurazione
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.
Filosofia
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'.
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:
- Comandi che producono uno stream (ad esempio,
ls) - Comandi che filtrano uno stream (ad esempio,
where type == "dir") - Comandi che consumano l'output della pipeline (ad esempio,
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 │
# => ╰───┴───────┴──────┴───────────┴──────┴─────────┴───────┴────────────┴──────────╯
Apertura dei file
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: