Zurück zu den Updates
New releaseAug 30, 2026

nushell v0.115.0

Eine neue Art von Shell

Teilen

Nushell

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

Eine neue Art von Shell.

Beispiel von nushell

Inhaltsverzeichnis

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:

Packaging status

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:

Kategorien