Zum Inhalt springen

Nushell - Moderne strukturierte Shell Kurzreferenz

Nushell - Moderne strukturierte Shell Kurzreferenz

Abschnitt betitelt „Nushell - Moderne strukturierte Shell Kurzreferenz“

Eine moderne Shell, die alles als strukturierte Daten statt als Rohtext behandelt. Pipelines arbeiten mit Tabellen, Records und Listen — nicht nur mit Strings. Stellen Sie sich eine Shell vor, die JSON, CSV, TOML und YAML nativ versteht.

PlattformBefehl
macOS (Homebrew)brew install nushell
Windows (Winget)winget install nushell
Windows (Chocolatey)choco install nushell
Windows (Scoop)scoop install nu
Ubuntu/Debiansudo apt install nushell (oder Download von GitHub Releases)
Arch Linuxsudo pacman -S nushell
Fedora/RHELsudo dnf install nushell
Cargo (Alle Plattformen)cargo install nu
Nixnix-env -iA nixpkgs.nushell

Starten: Führen Sie nu von jeder Shell aus, um Nushell zu starten. Als Standard-Shell festlegen: chsh -s $(which nu)

Nushell-Pipelines übergeben strukturierte Daten (Tabellen, Records, Listen), nicht Text:

# Traditionelle Shell: Text → grep → awk → Text
# Nushell: Tabelle → where → select → Tabelle

ls | where size > 1mb | sort-by size --reverse | first 5

Datentypen: Strings, Integers, Floats, Booleans, Datumsangaben, Zeitdauern, Dateigrößen, Listen, Records, Tabellen

BefehlBeschreibung
lsVerzeichnis als strukturierte Tabelle auflisten
ls -laAlle Dateien (einschließlich versteckter) in langem Format auflisten
cd path/to/dirVerzeichnis wechseln
cp source destDateien oder Verzeichnisse kopieren
mv source destDateien verschieben oder umbenennen
rm fileDateien entfernen
mkdir dirnameVerzeichnis erstellen
open file.jsonDatei als strukturierte Daten öffnen (erkennt Format automatisch)
open file.csvCSV als Tabelle öffnen
open file.tomlTOML als Record öffnen
save output.jsonPipeline-Ausgabe in Datei speichern
cat file.txtDateiinhalt als Text anzeigen
psLaufende Prozesse als Tabelle anzeigen
sysSysteminformationen anzeigen
which commandBefehlsspeicherort finden
help commandsAlle verfügbaren Befehle auflisten
help <command>Hilfe für einen bestimmten Befehl anzeigen
BefehlBeschreibung
ls | where size > 10mbDateien größer als 10 MB filtern
ls | where name =~ "\.rs$"Nach Regex auf Dateinamen filtern
ls | where type == "dir"Nur Verzeichnisse anzeigen
ls | where modified > 2dayIn den letzten 2 Tagen geänderte Dateien
ls | select name sizeNur Name- und Größenspalten anzeigen
ls | reject typeTyp-Spalte entfernen
ls | get nameNur Name-Spalte als Liste extrahieren
ls | first 5Erste 5 Einträge anzeigen
ls | last 3Letzte 3 Einträge anzeigen
ls | skip 10Erste 10 Einträge überspringen
ls | nth 0 2 4Einträge nach Index auswählen
ls | lengthAnzahl der Einträge zählen
ls | uniqDoppelte Einträge entfernen
BefehlBeschreibung
ls | sort-by sizeNach Größe aufsteigend sortieren
ls | sort-by size --reverseNach Größe absteigend sortieren
ls | sort-by nameAlphabetisch sortieren
ls | group-by typeEinträge nach Typ gruppieren
ls | group-by {get name | path parse | get extension}Nach Dateierweiterung gruppieren
BefehlBeschreibung
"hello world" | str upcaseIn Großbuchstaben umwandeln
"HELLO" | str downcaseIn Kleinbuchstaben umwandeln
" hello " | str trimLeerzeichen trimmen
"hello" | str contains "ell"Prüfen, ob String Teilstring enthält
"hello" | str replace "l" "L"Zeichen ersetzen
"hello world" | split row " "String in Liste aufteilen
["hello" "world"] | str join ", "Liste zu String verbinden
"hello" | str lengthString-Länge ermitteln
"hello" | str starts-with "he"String-Präfix prüfen
BefehlBeschreibung
open data.json | get field_nameAuf ein Feld in JSON zugreifen
open data.json | get nested.fieldAuf verschachtelte Felder zugreifen
{name: "Alice", age: 30}Record erstellen
[1 2 3 4 5]Liste erstellen
[[name age]; [Alice 30] [Bob 25]]Tabelle erstellen
$data | to jsonIn JSON konvertieren
$data | to csvIn CSV konvertieren
$data | to tomlIn TOML konvertieren
$data | to yamlIn YAML konvertieren
$data | to mdIn Markdown-Tabelle konvertieren
BefehlBeschreibung
[1 2 3 4] | math sumSumme der Werte
[1 2 3 4] | math avgDurchschnitt der Werte
[1 2 3 4] | math maxMaximalwert
[1 2 3 4] | math minMinimalwert
[1 2 3 4] | math medianMedianwert
ls | get size | math sumGesamtgröße der aufgelisteten Dateien
1 + 2Grundlegende Arithmetik
10 / 3Division
2 ** 8Potenzierung
BefehlBeschreibung
http get https://api.example.com/dataURL abrufen und Antwort parsen
http post https://api.example.com/data {key: "value"}POST-Anfrage mit Body
fetch url | get fieldAbrufen und bestimmtes Feld extrahieren
# Variablen (standardmäßig unveränderlich)
let name = "Alice"
let count = 42
let files = (ls | where size > 1mb)

# Veränderliche Variablen
mut counter = 0
$counter += 1

# If/else
if $count > 10 { "big" } else { "small" }

# Schleifen
for file in (ls) { print $file.name }
ls | each { |row| $row.name | str upcase }

# Benutzerdefinierte Befehle (Funktionen)
def greet [name: string] { $"Hello, ($name)!" }
greet "World"
DateiZweck
$nu.config-pathHauptkonfiguration (config.nu)
$nu.env-pathUmgebungskonfiguration (env.nu)
# Speicherort der Konfigurationsdatei anzeigen
$nu.config-path

# Konfiguration bearbeiten
config nu    # config.nu im Editor öffnen
config env   # env.nu im Editor öffnen
# In config.nu
$env.config = {
    show_banner: false           # Willkommensbanner deaktivieren
    table: {
        mode: rounded            # Tabellenstil: rounded, compact, thin, none
    }
    completions: {
        algorithm: "fuzzy"       # Fuzzy-Tab-Vervollständigung
    }
    history: {
        max_size: 10000          # Zu behaltende History-Einträge
        file_format: "sqlite"    # sqlite oder plaintext
    }
}
# Größte Dateien in einem Projekt finden
ls **/* | where type == "file" | sort-by size --reverse | first 20

# JSON-API parsen und abfragen
http get https://api.github.com/repos/nushell/nushell | select stargazers_count forks_count

# Zwischen Formaten konvertieren
open data.csv | to json | save data.json

# Logdateien analysieren
open access.log | lines | parse "{ip} - - [{date}] \"{method} {path} {proto}\" {status} {size}"
| where status == "404" | group-by path | sort-by -r

# Schneller Systemüberblick
sys | get host
ps | sort-by cpu --reverse | first 10
FunktionBash/ZshNushell
DatenmodellTextströmeStrukturierte Tabellen
Ausgabe parsengrep, awk, sedEingebaut where, select, get
JSON-VerarbeitungErfordert jqNativ (open file.json)
FehlerbehandlungExit-CodesReichhaltige Fehlermeldungen
Tab-VervollständigungEinfachKontextbewusst
TypsystemKeinsIntegers, Strings, Datumsangaben, Größen, etc.
LernkurveVertrautNeue Syntax zu lernen
Externe BefehleNativVollständig unterstützt