Neues von der Shell

31. Dezember 2019 - Christian Saris - Lesezeit: 5 - 6 min.

nerds' stuff software

Ich arbeite oft an der Shell und ich kann behaupten, dass sich in letzter Zeit für mich einiges getan hat in puncto intuitivem Arbeiten. Mit diesem Artikel möchte ich auf einige Projekte und Erweiterungen hinweisen, die mir die tägliche Arbeit mit der Shell versüßen - sowohl daheim auf dem Mac als auch auf der Arbeit unter Linux.

Fish Shell

Unter Linux habe ich schon seit einiger Zeit fishshell im Einsatz gehabt. Im Gegensatz zur Standard bash bietet diese Shell einige intuitive Schmankerl. Beispielsweise erhält man eine wirklich gute Autovervollständigung, die sich zum Einen an der Shell-History orientiert und zum anderen an den Manpages der Kommandos. Die Completion wird zum Teil mit einer Dropdownliste angezeigt, was für Shellumgebungen schon sehr sophisticated ist.

Weiterhin ist die fisshell schön bunt, mit Themes erweiterbar und sie hat im Gegensatz zur Bash eine sehr einfach zu erlernende Skriptsprache. Ein wesentlicher Nachteil ist jedoch, dass sehr viele Funktionen nicht bash-kompatibel sind. So hat man eventuell ein Toolset schon geschrieben und muss feststellen, dass es unter fishshell nicht richtig läuft (und umgekehrt).

Wer neu an der Kommandozeile ist, für den kann fishshell durchaus etwas sein. Das Projekt entwickelt sich auch gerade rasant. Ich bin gespannt.

ZSH

Mit dem letzten Update auf MacOS Catalina hat sich die Standard-Shell plötzlich auf zsh geändert und da nach dem Update nichtmals mehr die bash-completion funktionierte sah ich mich gezwungen, mich mit diesem Thema auseinanderzusetzen.

Und die Features von ZSH überzeugen:

  • Themes machen die Shell sehr ansprechend und es lassen sich viele Informationen ausgeben.
  • Pfad-Vervollständigung: /v/lo vervollständigt sich per -Taste zu `/var/log`
  • Kommandovervollständigung (mit aktivierten plugin zsh-autosuggestions) ähnlich der fishshell
  • Variablenvervollständigung: echo %PATH vervollständigt sich per -Taste zum Inhalt der PATH-Variable
  • PID-Vervollständigung: kill firefox vervollständigt sich per -Taste zu `kill 995`, also die Prozess-ID wird ermittelt und ausgegeben.
  • und vieles mehr, zum Beispiel [hier beschrieben].

iTerm2

Gestoßen bin ich auf allerlei Hilfreiches rund um das Thema Shell. iTerm2 erweitert das Standard Terminal von MacOS X in einer sehr ansprechenden Weise. Es liefert viele Zusatzfunktionen, die man gerne im Standardterminal hätte. Ein Blick auf die Featurelist lohnt durchaus.

Oh my zsh

Oh-my-zsh ist eine Erweiterung für ZSH, die etliche Themes und Plugins bereit hält. Diese erleichtern die Arbeit sehr. Mit ohmyzsh und dem geeigneten Theme lassen sich zum Beispiel out-of-the-box visuell ansprechend Informationen über den git-status anzeigen, sobald man in ein mit git verwaltetes Verzeichnis wechselt. Es werden Return-Codes nach der Beendigung Kommandos ausgegeben und vieles mehr. Eine detaillierte Installationsanleitung findet sich hier.

fzf, fd und bat

In einer Folge der Freakshow wurde ich auf drei weitere nützliche Helferlein aufmerksam. Diese seien hier auch kurz angerissen:

  1. fzf ist ein fuzzy-finder für die Kommandozeile. Das Programm liest von STDIN und sucht mit fuzzy-logic nach dem Vorkommen einer Zeichenfolge. Der Clou dabei, es reduziert die Zeilen des durchsuchten Text auf die Matches und man ist mit den Cursorsteuertasten in der Lage eine Zeile auszuwählen und deren Wert mit auszugeben.
  2. fd ist eine besonders schnell und benutzerfreundliche Alternative zu find.
  3. bat ist eine Alternative zu cat. bat gibt ebenfalls Dateiinhalte aus, verleiht der Ausgabe aber noch Syntaxhighlightning, Zeilennummerierung und Pagination.

Drei Helferlein, die es sich durchaus lohnt, mal anzuschauen. Highly recommended. :-)