Nushell

Die Nushell ist eine neue shell, die noch in der Entwicklung ist. Sie ist in rust geschirben und implementiert neue und moderne Konzepte, die andere shells, die es teilweise seit Jahrzehnten gibt, nicht haben.

Vorteile

Die Nushell betrachtet die Informationen, die aus dem System ausgelesen werden, nicht nur als Strings, sondern erkennt auch die Zusammenhänge der Daten. Das ist besonders nützlich, da man sich mit dem Terminal in den reinen Daten bewegt, ergibt es sehr viel Sinn sie auch sinnvoll und zusammenhängend darzustellen. Das passiert vornehmlich in Tabellen. Und diese Tabellen lassen sich auch im Tabellenfromat Modifizieren. Dadurch sind die Grundlagen der Datenanalyse und weiterverabreitung ohne weitere Werkzeuge vom Terminal möglich (Visualisierung, Extrapolierung, Bereinigung). Wichtig zu beachten ist auch, dass sich das nicht nur auf ohnehin schon tabellarische Dateiformate anwenden lässt. Es werden stetig neue Formate (bzw. ihre “Übersetzungen”) hinzugefügt. Im Moment werden die Formate [csv, eml, ics, ini, json, nuon, ods, SQLite, ssv, toml, tsv, url, vcf, xlsx/xls, x,l, yaml/yml] unterstützt. Geöffnet werden die Dateien mit dem open Befehl.

Hier habe ich beispielhaft eine Toml Datei geöffnet (die Cargo.toml eines Rust Projekts). Ich habe dabei das zusätzliche Argument table -e verwendet, um die Tabellen in einer Tabelle darzustellen. Sonst hätte sie shell nur die Kategorien angezeigt, oder ich hätte spezifizieren müssen, welche Kategorie ich sehen möchte (hier dependencies, oder package).

Bemerkenswert ist hier auch die Verwendung des | Operators. Im Grunde genommen funktioniert er wie bei anderen shells auch. Er leitet den Output des ersten Befehls, in stdin des nächsten Befehls weiter. So werden auch dort Daten weiter verarbeitet. Aber wie gesagt, in der nushell sind Daten nicht einfach nur Daten, sie haben (meist) auch einen Zusammenhang. Also kann man auch Tabellen weiter verarbeiten.

Hier nehme ich ls -l (also den langen output von ls), und gmodifiziere dann die Tabelle weiter. So kann ich mir die Daten so anzeigen lassen, das ich sie schnell überblicken kann. Ich filtere zum Beispiel die Gruppe, der die Datein gehört aus. Eine weitere Option ist save, mit der man die angezeigten Daten dann auch in einer Datei sichern kann.

Die Arbeit mit Tabellen, die in der shell möglich ist würde den Rahmen dieses Posts sprengen. Unter anderem auch, weil laufen neue Hinzugefügt werden. Daher empfehle ich es einfach mal selbst die Dokumentation zu lesen, oder die shell auszuprobieren. Sie kann nämlich mit cargo installiert werden, und ist somit auch cross plattform.

nushell

Konfiguration

Beim Konfigurieren der shell bin ich auf einige kleine Widerstände gestoßen, dessen Löungen ich hier zeigen werde, damit keiner von den werten Lesern sich mit ihnen herumschlagen muss.

# Umgebungsvariablen legt man mit
let-env PATH = ($env.PATH | split row (char esep) | append '/home/lovis/.cargo/bin/')`
# fest.

# Befehle, die man beim Starten der shell ausführen möchte, schreibt man einfach
# in die config.nu Datei

sh +/scripts/todoscript.sh -l

# Aliase werden in diesem Format definiert:
alias bye = shutdown -P now

52posts

Dieser Beitrag ist Teil meines Plans, in 2023 jede Woche einen Post zu erstellen, mit Dingen, die ich gelernt habe. (Das sind dann 52 Posts).

#52posts