Nushell, die ganz andere Shell

Mi, 11. Januar 2023, Ralf Hersel

Die NuShell ist eine in Rust geschriebene, nicht POSIX-konforme Shell und Programmiersprache. Das Ziel dieses Projekts ist es, die Unix-Philosophie der Shells, bei der Pipes einfache Befehle miteinander verbinden, auf einen modernen Entwicklungsstil zu übertragen. Anstatt also entweder eine Shell oder eine Programmiersprache zu sein, verbindet Nushell beides, indem es eine reichhaltige Programmiersprache und eine vollwertige Shell in einem Paket zusammenbringt.

Nu funktioniert unter Linux, macOS, BSD und Windows. Wer den Umgang damit einmal lernt, kann die Shell überall verwenden. Nu-Pipelines verwenden strukturierte Daten (was bereits im Titelbild dieses Artikels erkennbar ist), sodass man immer auf die gleiche Weise auswählen, filtern und sortieren kann. Zudem bietet die Shell ein Plugin-System, mit dem der Funktionsumfang erweitert werden kann.

NuShell kann aus gut sortierten Softwareverwaltungen installiert werden. Falls ihr die Shell nicht in eurem Repo findet, erklärt die Homepage des Projektes, wie man das Paket installiert.

Nach der Installation muss man dem System mitteilen, dass man Nu als Standardshell verwenden möchte. Dazu ruft man im Terminal den Befehl chsh (change shell) auf, tippt das Root Passwort ein und schreibt dann /usr/bin/nu. Wer möchte, kann sich vorher mit dem Kommando chsh -l alle verfügbaren Shells anzeigen lassen. Dann ist ein Reboot nötig, um die neue Shell zu aktivieren.

Da der Funktionsumfang von Nu gewaltig ist, beschränke ich mich hier auf ein paar einfache Beispiele. Wem die Shell gefällt, findet im Nu-Book alles Weitere. Das erste Beispiel seht ihr im Titelbild. Der ls zeigt wie gewohnt ein Directory-Listing, allerdings in tabellarischer Form. Nun wird die Ausgabe durch Pipes und Bedingungen weiter eingeschränkt. Die Befehle where size > 10mb und sort-by modified sind selbsterklärend.

Im nächsten Beispiel seht ihr Globbing, mit dem Pfade rekursiv abgesucht werden. Der vorangestellte Doppelasterix initiiert die rekursive Suche.

Im nächsten Beispiel rufe ich die Prozesstabelle ab, lasse nur Prozesse anzeigen, deren CPU-Last über 1 % liegt, sortiere nach der Spalte CPU und kehre die Sortierreihenfolge um, damit die höchsten Werte zuerst kommen.

Zu guter Letzt definiere ich eine Variable als Liste mit zwei Dateinamen. Dann iteriere ich mit each über diese Liste und lege für jede Instanz |it| eine Datei an.

Es liessen sich noch viele beeindruckende Beispiele finden, doch ich möchte euch den Spass am Ausprobieren nicht verderben. Wem das alles irgendwie bekannt vorkommt, erinnert sich vielleicht an diesen Beitrag, in dem ich über die Kombination von Shell und Python mit Xonsh geschrieben habe.

Quellen:

Tags

Shell, nushell, Rust