Mit Navi Cheatsheets für die Shell schreiben

Aus LinuxUser 02/2020

Mit Navi Cheatsheets für die Shell schreiben

© Atith Jiranaphawiboon, 123RF

Interaktiver Spickzettel

Wenn die History versagt und die Manpage zu lang ist, hilft Navi Ihnen mit einem interaktiven Cheatsheet in der Shell auf die Sprünge.

Wie lautet gleich noch mal der Parameter zum Erstellen eines Archivs mit Tar? In der History findet sich nichts, da bleibt nur noch der Blick in die Manpage – ein Gedankengang, der bestimmt jedem Freund der Kommandozeile bereits des Öfteren begegnet ist.

Generell sind Manpages ja nützlich, aber durchaus nicht immer: Manche gibt es nur in Englisch, andere sind so umfangreich, dass der Zeitaufwand für die Suche nach einer Information in keinem Verhältnis zur zu erledigenden Aufgabe steht und die Arbeit über Gebühr unterbricht.

Die History-Funktion der Bash steht dem Anwender hier oft hilfreich zur Seite, bringt aber ebenfalls nicht immer das gewünschte Ergebnis. Als Abhilfe kommen interaktive Spickzettel ins Spiel, sogenannte Cheatsheets. Werkzeuge, um diese zu nutzen, finden Sie auf Github reichlich, was als Beleg dafür gelten darf, dass es sich beim beschriebenen Problem um keinen Einzelfall handelt.

Befehle finden

Eine Cheatsheet-Anwendung, die neben guter Funktionalität auch ein fürs Auge angenehmes Design bietet, ist das noch junge Navi [1]. In der Beschreibung des Entwicklers heißt es sinngemäß, es ermögliche unter anderem, durch eingebaute, selbst verfasste oder aus dem Netz geladene Cheatsheets zu blättern, für Befehle Optionen und Argumente anzuzeigen oder diese gleich auszuführen. Navi und ähnlich gestrickte Kollegen eignen sich gut, um neu entdeckte Befehle mit allen Möglichkeiten interaktiv zu erlernen.

Die Installation der Software von der Webseite ist schnell erledigt (Listing 1). Dabei installieren Sie Navi wahlweise in ein beliebiges Verzeichnis (Zeile 6) statt in den Pfad.

Listing 1

$ sudo git clone --depth 1 https://github.com/denisidoro/navi /opt/navi
$ cd /opt/navi
### In $PATH installieren
$ sudo make install
### Alternativ
$ ./scripts/install Verzeichnis

Das einzige, was nun noch fehlt, ist der String-Matching-Algorithmus Fzf, ein Suchwerkzeug, das wieselflink per unscharfer (“fuzzy”) Suche bestimmte Zeichenketten in einem längeren String oder einem Text findet. Ohne Fzf meckert Navi beim ersten Start.

Das Tool findet sich in den Repositories von Debian, Fedora und Arch Linux; dort installieren Sie es über das Paketmanagement. Ersatzweise kommt für die Installation das aus dem Umfeld von Mac OS X stammende Homebrew [2] zum Einsatz. Selbst an die Anwender der Z-Shell [3] hat der Entwickler von Navi gedacht: Für die weitverbreitete Konfigurationsdatei Oh My ZSH! [4] bietet er auf der Webseite eine Anleitung zur Integration.

Als einzige weitere Abhängigkeit benötigt Navi Ncurses, das aber bei jeder Distribution bereits vorinstalliert sein sollte.

Updates

Da die Arbeit am noch relativ jungen Navi ständig weitergeht, sollten Sie die Software periodisch aktualisieren. Taucht auf Github eine neue Version auf, lässt sich ein Update via Git schnell erledigen (Listing 2).

Listing 2

$ cd "$(navi home)"
$ sudo git pull

Als Erstes sollten Sie sich nun kurz mit den Argumenten und Optionen von Navi vertraut machen, indem Sie navi --help in einer Shell aufrufen. Anschließend starten Sie das Programm, indem Sie navi eingeben. Daraufhin öffnet das Tool eine Liste mit derzeit 242 bereits eingebetteten Spickzetteln (Abbildung 1).

Abbildung 1: Navi bietet in der Ansicht links verschiedene Kategorien, in der Mitte eine Aufgabenstellung, und rechts den entsprechenden Befehl, der dazu passt.

Abbildung 1: Navi bietet in der Ansicht links verschiedene Kategorien, in der Mitte eine Aufgabenstellung, und rechts den entsprechenden Befehl, der dazu passt.

In der dreigeteilten Ansicht sehen sie links die Anwendung oder die Umgebung, aus der die Befehle stammen, in der Mitte die damit zu erledigenden Aufgaben und rechts den entsprechenden Befehl dazu. Die Software bietet die Möglichkeit, nur Befehle aus einer Rubrik anzuzeigen. So finden Sie etwa mit navi query git nur Befehle für Git. Alternativ grenzen Sie die Ergebnisse im Fenster ein, indem Sie dort etwa ip addr eintippen. Dann erhalten Sie lediglich die drei Befehle, die IP-Adressen behandeln (Abbildung 2).

Abbildung 2: Mit Stichworten grenzen Sie die Auswahl von Befehlen zu einem bestimmten Thema direkt in der Maske ein.

Abbildung 2: Mit Stichworten grenzen Sie die Auswahl von Befehlen zu einem bestimmten Thema direkt in der Maske ein.

Direkt ausgeführt

Die Interaktivität kommt ins Spiel, sobald Sie auf einem gewählten Befehl einen Doppelklick mit der Maus ausführen. Erfordert der Befehl keine weitere Eingabe, übergibt das Programm ihn direkt an die Shell. Im Fall des Kommandos List running services aus der Abteilung systemctl, service etwa führt der Mausklick direkt zur Liste der laufenden Dienste (Abbildung 3).

Abbildung 3: Befehle, die keine Änderungen am System vornehmen, wie hier das Auflisten der aktiven Dienste, dürfen Sie gefahrlos direkt ausführen.

Abbildung 3: Befehle, die keine Änderungen am System vornehmen, wie hier das Auflisten der aktiven Dienste, dürfen Sie gefahrlos direkt ausführen.

Print to <C>STDOUT<C>

In diesem Fall stellt das direkte Ausführen kein Problem dar, da der Befehl lediglich eine Liste ausgibt und sonst keine Änderungen vornimmt. Was aber, wenn Sie nicht sicher sind, ob der gewählte Befehl der richtige ist?

Hier ergänzen Sie den Befehl um die Option --print, um das direkte Ausführen zu verhindern. Möchten Sie diese Variante als Standard nutzen, so definieren Sie einen entsprechenden Alias, wie etwa alias navi='navi --print', und tragen ihn in Ihre ~/.bashrc ein.

Aber Navi kennt noch eine weitere Variante. Als Beispiel soll der Befehl Create a tar containing files aus der Abteilung compression dienen. Er erfordert zwei Eingaben des Benutzers, die die Software nach einem Klick auf den Befehl abfragt. Unter name: tragen Sie den gewünschten Namen des Tar-Archivs ein, während files: den Pfad zu den Dateien erwartet, die Sie komprimieren möchten.

Haben Sie beide Eingaben bestätigt, zeigt das Tool den Befehl an, der das entsprechende Archiv erstellt (Abbildung 4). Den führt Navi jedoch nicht aus, da ja --print angegeben ist. Hat das Kommando den gewünschten Effekt, bietet es sich an, es zu kopieren und auszuführen.

Abbildung 4: Der hier gezeigte Befehl zum Erstellen eines Tar-Archivs ben&ouml;tigt die Eingabe eines Namens sowie eines Pfads, bevor das Tool ihn anzeigt.

Abbildung 4: Der hier gezeigte Befehl zum Erstellen eines Tar-Archivs benötigt die Eingabe eines Namens sowie eines Pfads, bevor das Tool ihn anzeigt.

Online-Cheatsheets

Eine weitere Möglichkeit, das Programm zu nutzen, ist die direkte Eingabe eines Befehls als Argument beim Start. So liefert die Eingabe von navi search apt acht Befehle für Debians Paket-Tool Apt. Sie stammen allerdings nicht aus dem installierten Navi-Paket, sondern aus Online-Quellen wie etwa Cheat.sh, wo weitere Spickzettel bereitstehen [5] (Abbildung 5).

Abbildung 5: Per <code>navi search apt</code> bindet Navi Befehle f&uuml;r das Debian-Paketmanagement ein. Sie stammen aber aus Online-Cheatsheets, weswegen es sich empfiehlt, sie vor dem Ausf&uuml;hren mittels <code>--print</code> unter die Lupe zu nehmen.

Abbildung 5: Per navi search apt bindet Navi Befehle für das Debian-Paketmanagement ein. Sie stammen aber aus Online-Cheatsheets, weswegen es sich empfiehlt, sie vor dem Ausführen mittels --print unter die Lupe zu nehmen.

Als Widget einbinden

Navi unterstützt darüber hinaus einen Modus, bei dem Sie es als Widget in die Shell einbinden. Auf diese Weise bleibt die History weiterhin aktuell, und Sie haben die Möglichkeit, den Befehl vor dem Ausführen noch beliebig zu bearbeiten.

Um die Software als Widget zu verwenden, fügen Sie die Zeile source "$(navi widget bash)" in Ihre ~/ .bashrc oder in /etc/bash.bashrc ein. So starten Sie Navi künftig über [Strg]+[G]. Ist die Tastenkombination bereits belegt oder möchten Sie eine andere Kombination vergeben, definieren Sie diese in /opt/navi/navi.plugin.bash.

Selbst erstellt

Fehlt ein für Sie wichtiger Befehl, erstellen Sie selbst einen passenden Spickzettel und rufen ihn in Navi auf. Als Vorlage nutzen Sie eine Datei aus /opt/navi/cheats/. Eine detaillierte Erläuterung der Syntax finden Sie auf Github [6]. Rufen Sie den neuen Spickzettel dann mit einem Befehl wie dem aus der ersten Zeile von Listing 3 auf oder binden Sie in $NAVI_PATH mehrere Verzeichnisse ein, die Sie durch Doppelpunkte trennen (Zeile 2).

Listing 3

$ navi --path "/<i>Eigene<i>/<i>Spickzettel<i>"
$ export NAVI_PATH="/<i>Eigene<i>/<i>Spickzettel<i>:/<i>Noch<i>/<i>mehr<i>/<i>Spickzettel<i>"

Fazit

Navi erleichtert Konsoleros den Umgang insbesondere mit komplexen Kommandozeilenbefehlen. Die mitgelieferten Cheats legen den Fokus mit Docker, Kubernetes und Git stark auf die Bedürfnisse von Entwicklern, enthalten aber auch viele für Desktop-Anwender nützliche Spickzettel.

Zudem lässt sich Navi durch das Einbinden von Online-Cheats oder selbst erstellten Spickzetteln beliebig erweitern. Dabei weist der Entwickler explizit darauf hin, dass er die Online-Spickzettel nicht überprüft hat. Hier sollte also unbedingt die Option --print zum Einsatz kommen.

Möchten Sie Navi ohne Installation testen, so bietet die Webseite Katacoda dazu Gelegenheit [7]. Kommen Sie mit dem Programm überhaupt nicht klar, dann finden Sie auf Github weitere ähnliche Tools, wie etwa Cheat, Cmdmenu, Beavr und Howdoi. 

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 02/2020 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben