
nushell v0.115.0
Eine neue Art von Shell
Nushell
Eine neue Art von Shell.

Inhaltsverzeichnis
- Status
- Über Nu lernen
- Installation
- Konfiguration
- Philosophie
- Ziele
- Offiziell unterstützt von
- Mitwirken
- Lizenz
Status
Dieses Projekt hat ein Qualitätsniveau erreicht, das für ein Minimum Viable Product ausreicht. Viele Menschen nutzen es als ihr tägliches Werkzeug, aber es kann für einige Befehle instabil sein. Nus Design kann sich im Laufe der Reifung ändern.
Über Nu lernen
Das Nushell-Buch ist die primäre Quelle der Nushell-Dokumentation. Sie finden eine vollständige Liste der Nu-Befehle im Buch, und wir haben viele Beispiele für die Verwendung von Nu in unserem Kochbuch.
Wir sind auch auf Discord aktiv; kommen Sie vorbei und plaudern Sie mit uns!
Installation
Um Nu schnell zu installieren:
# Linux and macOS
brew install nushell
# Windows
winget install nushell
Um Nu in GitHub Action zu verwenden, lesen Sie setup-nu für weitere Details.
Detaillierte Installationsanweisungen finden Sie im Installationskapitel des Buchs. Nu ist über viele Paketmanager verfügbar:
Details darüber, welche Plattformen das Nushell-Team aktiv unterstützt, finden Sie in unserer Plattform-Unterstützungsrichtlinie.
Konfiguration
Die Standardkonfigurationen finden Sie unter sample_config, welche die Konfigurationsdateien sind, die man erhält, wenn man Nushell zum ersten Mal startet.
Sie legt die gesamte Standardkonfiguration für den Betrieb von Nushell fest. Von hier aus kann man diese Datei dann an die eigenen Bedürfnisse anpassen.
Um zu sehen, wo config.nu auf Ihrem System liegt, geben Sie einfach diesen Befehl ein.
$nu.config-path
Bitte lesen Sie unser Buch für die gesamte Nushell-Dokumentation.
Philosophie
Nu lässt sich von Projekten wie PowerShell, funktionalen Programmiersprachen und modernen CLI-Tools inspirieren. Anstatt Dateien und Daten als rohe Textströme zu betrachten, sieht Nu jede Eingabe als etwas mit Struktur an. Wenn Sie beispielsweise den Inhalt eines Verzeichnisses auflisten, erhalten Sie eine Tabelle mit Zeilen zurück, wobei jede Zeile ein Element in diesem Verzeichnis darstellt. Diese Werte können durch eine Reihe von Schritten geleitet werden, in einer Reihe von Befehlen, die als „Pipeline" bezeichnet werden.
Pipelines
In Unix ist es üblich, zwischen Befehlen zu pipen, um einen komplexen Befehl über mehrere Schritte aufzuteilen. Nu geht einen Schritt weiter und baut stark auf der Idee von Pipelines auf. Wie in der Unix-Philosophie erlaubt Nu Befehlen, nach stdout auszugeben und von stdin zu lesen. Darüber hinaus können Befehle strukturierte Daten ausgeben (man kann sich dies als eine dritte Art von Stream vorstellen). Befehle, die in der Pipeline funktionieren, fallen in eine von drei Kategorien:
- Befehle, die einen Stream erzeugen (z. B.
ls) - Befehle, die einen Stream filtern (z. B.
where type == "dir") - Befehle, die die Ausgabe der Pipeline konsumieren (z. B.
table)
Befehle werden durch das Pipe-Symbol (|) getrennt, um eine Pipeline zu kennzeichnen, die von links nach rechts fließt.
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 │
# => ╰────┴──────────┴──────┴─────────┴───────────────╯
Da Sie in den meisten Fällen die Ausgabe einer Pipeline sehen möchten, wird table angenommen.
Wir hätten das Obige auch so schreiben können:
ls | where type == "dir"
Die Möglichkeit, dieselben Befehle zu verwenden und sie unterschiedlich zu kombinieren, ist eine wichtige Philosophie in Nu.
Zum Beispiel könnten wir den eingebauten ps-Befehl verwenden, um eine Liste der laufenden Prozesse zu erhalten, und dabei dasselbe where wie oben verwenden.
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 │
# => ╰───┴───────┴──────┴───────────┴──────┴─────────┴───────┴────────────┴──────────╯
Dateien öffnen
Nu kann Datei- und URL-Inhalte als Rohtext oder als strukturierte Daten laden (wenn es das Format erkennt). Zum Beispiel können Sie eine .toml-Datei als strukturierte Daten laden und erkunden:
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} │
# => ╰──────────────────┴────────────────────╯
Wir können dies in einen Befehl pipen, der den Inhalt einer der Spalten abruft: