Die Online-Tools CMD Generator und Explainshell erleichtern die Arbeit auf der Kommandozeile in entgegengesetzten Richtungen.
Wer kennt das nicht: Sie suchen im Internet Hilfe entweder bei der korrekten Formulierung eines Kommandozeilenbefehls, der ein Problem löst, oder Sie haben eine Lösung in Form eines Befehls im Internet gefunden, möchten aber vor dem Ausführen dessen Funktionsweise verstehen. Für beide Szenarien hält die Open-Source-Welt Lösungen in Form je eines Online-Tools bereit. Wir schauen uns in diesem Artikel die Tools CMD Generator [1] und Explainshell [2] an.
CMD Generator
Sehen wir uns zunächst den CMD Generator an. Das kleine Helferlein bietet auf seiner Webseite eine Benutzeroberfläche, mit der Sie auf einfache Weise Linux-Befehle samt Parametern auf der Grundlage einer zu treffenden Auswahl erstellen. Die Bedienung erschließt sich weitgehend von selbst. Die Seitenleiste links listet die unterstützten Befehle alphabetisch sortiert auf. Ein Klick auf einen davon öffnet rechts ein Auswahlfeld, in dem das Kommando mit den benötigten Optionen über Auswahl- und Eingabefelder zusammengestellt wird. Den fertigen Befehl bietet der Dienst oben zum Kopieren an. Unten hängen meist noch einige Beispiele zur Verwendung der Syntax an. Damit kommt man schnell zu einem Befehl, der sich direkt auf der Kommandozeile anwenden lässt (Abbildung 1).

Abbildung 1: Für den Befehl journalctl zur Ausgabe der Systemd-Logs gibt es viele Optionen, die sich auf der Webseite zusammenklicken lassen. Der resultierende Befehl steht oben am Kopf der Seite zum Kopieren bereit.
Je nachdem, welchen Befehl Sie erstellen möchten, bietet das Portal verschiedene Herangehensweisen an. Für apt gibt CMD Generator eine Reihe der verfügbaren Befehle an; Sie müssen lediglich noch das Paket nennen, auf das Sie ihn anwenden wollen. Bei journalctl aktivieren Sie die zu verwendenden Parameter. Bei find ergänzen Sie neben dem Suchpfad die gesuchte Datei, gefolgt von weiteren eingrenzenden Optionen. Am Fuß der jeweiligen Seite finden Sie Hilfestellungen, Ergänzungen und Beispiele zur Lösung von Problemen (Abbildung 2).

Abbildung 2: Der Befehlsgenerator zeigt zu journalctl – wie auch zu allen anderen Befehlen – am unteren Rand eine Reihe von Beispielen, die auch seltener gefragte Problemstellungen lösen.
Befehle, die Sie mit CMD Generator oder einem vergleichbaren Online-Tool erstellt haben, sollten Sie nicht blind vertrauen. Wenn Sie verstehen möchten, wie der Befehl im Einzelnen funktioniert, lesen Sie entweder die Handbuchseiten der beteiligten Kommandos oder ziehen Explainshell zurate, ein zweites Online-Tool.
Explainshell
Für die meisten Befehle, Systemaufrufe, Konfigurationsdateien und Tools unter Linux stehen Handbuchseiten bereit, die alle Optionen und Parameter auflisten und erklären. Sie gelten zwar als offizielle Referenz, aber benutzerfreundlich sind sie selten, wenn die Routine beim Lesen dieser Einträge fehlt.
Hier kommt seit nunmehr über zehn Jahren das Online-Tool Explainshell zu Hilfe, das übersichtlich die Optionen der Anfrage erklärt. Es handelt sich dabei um ein in Python geschriebenes Werkzeug, das über eine Webschnittstelle Handbuchseiten (Manpages) analysiert. Es extrahiert Optionen und erklärt eine vorgegebene Befehlszeile, indem es jedes Argument mit dem entsprechenden Hilfetext in der Handbuchseite abgleicht [2]. Dazu nutzt es die fast 30 000 Einträge aus dem Manpage-Repository von Ubuntu [3]. Explainshell lässt sich nicht nur als Webseite nutzen, sondern auch lokal mittels Docker [4].
Bevor wir in die Praxis abtauchen, lohnt sich ein Blick auf die Arbeitsweise des Tools [5]. Wenn Sie nach dem Eingeben eines zu analysierenden Befehls auf Explain klicken, wandelt Explainshell zunächst im Hintergrund die infrage kommenden Handbuchseiten via manpage.py in HTML um. Die Routine classifier.py geht anschließend jeden Absatz der Seiten durch und stellt fest, ob die Anfrage entsprechende Optionen enthält. Als Nächstes tritt options.py auf den Plan und extrahiert passende Optionen. Nach dem Speichern der entsprechenden Handbuchseiten kommt matcher.py ins Spiel und ordnet jeden Knoten des erstellten AST (Abstract Syntax Tree) kontextbezogen dem entsprechenden Hilfetext zu.
In der Praxis
Soweit die Theorie. In der Praxis muss Sie das nicht kümmern, dort geben Sie lediglich Befehle oder Befehlsketten ein und hoffen auf eine möglichst erleuchtende und vor allem korrekte Erklärung. Hier sei vorbeugend darauf hingewiesen, dass Explainshell vor allem bei komplexen Befehlskonstrukten gelegentlich Fehler macht oder gar keine Antwort gibt. Dann hilft es meist, die Befehlsfolge in ihre Einzelteile zu zerlegen und einzeln abzufragen (Abbildung 3).

Abbildung 3: Das Bedienen von Explainshell funktioniert denkbar einfach: Sie geben den zu erklärenden Befehl in die Befehlszeile ein und klicken danach auf EXPLAIN.
In den allermeisten Fällen erhalten Sie eine grafisch aufbereitete Anzeige, die nur die für die Abfrage relevanten Parameter erklärt, ohne dass Sie diese erst in der Manpage finden müssen. Ein Pferdefuß ist unter Umständen die Ausgabe lediglich in englischer Sprache. Das sollte aber heutzutage bei der Qualität der Online-Übersetzer kein Problem mehr darstellen.
Explainshell erklärt die einzelnen Optionen und Parameter eines Befehls der Reihe nach übersichtlich in Kästen, die durch Linien auf den jeweils relevanten Teil des Befehls verweisen. Wenn Sie mit dem Mauszeiger einen Befehlsteil berühren, erscheint der entsprechende Kasten zur besseren Übersicht hervorgehoben. Klicken Sie oben unter der Eingabe mehrmals auf explain shell syntax, so wandern Sie der Reihe nach durch die einzelnen Kästen. Falls Explainshell einen Teil der eingegebenen Befehlskette nicht kennt, sehen Sie darunter ein Fragezeichen. Am unteren Rand verlinkt das Tool die für Ihre Anfrage herangezogenen Manpages, sodass Sie direkt darauf zugreifen können (Abbildung 4).

Abbildung 4: Wenn Sie mit dem Mauszeiger einen Befehlsteil berühren, hebt der Dienst die Erklärung zur besseren Übersicht hervor.
Manchmal muss man selbst bei simplen Anfragen ein wenig tricksen, um eine korrekte Antwort zu erhalten. So erkennt Explainshell etwa bei der Abfrage von sudo apt update && sudo apt upgrade die Begriffe update und upgrade nicht. Wählt man allerdings statt apt die veraltete Form apt-get, so erklärt das Tool die beiden Begriffe ausführlich.
Fazit
Mit CMD Generator und Explainshell stehen besonders Linux-Novizen zwei extrem hilfreiche Werkzeuge für den Umgang mit der Kommandozeile zur Verfügung. Mit CMD Generator klicken Sie die gängigsten Befehle mit den benötigten Optionen zusammen. Explainshell macht genau das Gegenteil, zerlegt Befehle und erklärt die einzelnen Teile. Beide Aufgaben lassen sich ohne diese Helferlein nur mit wesentlich mehr Zeit und Aufwand erledigen. (tle)
Infos
-
CMD Generator: https://cmdgenerator.phphe.com
-
Explainshell: https://explainshell.com
-
Ubuntu Manpage Repository: https://manpages.ubuntu.com
-
Docker: https://github.com/idank/explainshell?tab=readme-ov-file#running-explainshell-locally
-
Explainshell-Quellcode: https://github.com/idank/explainshell/tree/master/explainshell





