History - Geschichte auf der Kommandozeile
Mo, 21. November 2022, Ralf Hersel
Das ist ein Artikel für Einsteiger in die GNU/Linux-Befehlszeile. Nichts für Profis oder Fortgeschrittene, sondern ein kleiner Beitrag, um die Mächtigkeit der Terminal-Befehle zu demonstrieren und zu erklären. Vielleicht ist aber auch der ein oder andere Tipp für Bewohner der CLI-Blase mit dabei. Es geht um den Befehl history. Ich beschränke mich auf die besten Anwendungsfälle, ohne zu sehr ins Detail zu gehen.
Stable Diffusion + Upscaler + Ralf
Wer die Kommandozeile verwendet, gibt viele Befehle ein. Manche sind ganz einfach und lassen sich jederzeit aus dem Gedächtnis wiederholen, andere sind lange Befehlsketten oder seltene Kommandos, die man nicht jederzeit aus dem Ärmel schüttelt. Um die Anwender:in zu entlasten, bieten die Terminal-Shells grosse Unterstützung, sofern man sie kennt.
Beginnen wir bei Adam und Eva: am Anfang war das Terminal, das Command-Line-Interface (CLI), die Shell, der Shell-Interpreter, die Kommandozeile, die Linux-Konsole ... !? Dieses Begriffswirrwarr ist nicht relevant.
Alle Einstellungen, die du über die grafische Benutzeroberfläche machst, lassen sich in Form von Kommandozeilenbefehlen auch über die sogenannte Shell vornehmen. Bei der Shell handelt es sich um ein Programm, das als Schnittstelle zwischen System und Benutzer fungiert. Es umfasst einen Kommandozeileninterpreter, der Benutzereingaben über die Tastatur entgegennimmt, diese auswertet, gegebenenfalls Programme startet und den Output in Form einer Textausgabe an den Benutzer zurückgibt. Darüber hinaus besitzt jede Shell eine eigene Programmiersprache, die es ermöglicht, Shell-Skripte zu schreiben – zum Beispiel, um Programmaufrufe zu verknüpfen und administrative Aufgaben zu erleichtern. Jede Shell läuft in einem Terminal.
Doch genug vom Fachchinesisch; für euch ist nur relevant, wie man ein Terminal startet und was man darin macht. Alle Befehle, die ihr im Terminal ausführt, werden in einen Speicher geschrieben (die History), der auch nach einem Neustart des Computers erhalten bleibt. In der Regel werden die letzten 1000 Befehle gespeichert. Dieser Speicher ist nicht flüchtig, sondern landet in der Datei /home/user/.bash_history oder /home/user/.zhistory oder ähnlich, je nachdem welche Shell eure Distribution verwendet. Es ist jedoch immer eine versteckte Datei (Ctrl+h zum Anzeigen) in eurem Home-Verzeichnis.
Wie ihr ein Terminal startet, wisst ihr sehr wahrscheinlich bereits. Ihr findet es im Anwendungsmenü meistens unter dem Namen Terminal. Oft wird es mit der Tastenkombination Ctrl+Alt+t gestartet. Nun könnt ihr die Historie eurer Befehle ansehen, indem ihr den Befehl history oder history 0 eingebt.
Die Zahl hinter dem History-Befehl bestimmt, wie viele Befehle (von hinten gezählt) angezeigt werden. Manche Shells sind so konfiguriert, dass sie nur die letzten (der 1000 Befehle) anzeigen. Mit dem Mausrad oder den Cursor-Tasten kann man durch die lange Liste scrollen. Um einen bestimmten Befehl aus der Liste erneut auszuführen, gibt man den Befehl !Nummer ein, wobei die Nummer aus der Liste entnommen wird. So führt z.B. das Kommando !7 den Befehl cd etc/systemd/system erneut aus.
Wenn ihr wisst, welchen Text ein Kommando enthält, könnt ihr auch die Suchfunktion für die History verwenden. Dafür gibt es die Tastenkombination Ctrl+r. Drückt man diese, kann anschliessend ein beliebiger Text eingegeben werden. Beispiel: Ctrl+r, micro zeigt euch den ersten Befehl aus der History an, der den Text micro enthält. Jetzt könnt ihr so lange Ctrl+r drücken, bis der gesuchte Befehl erscheint und dann Return drücken, um den Befehl auszuführen. Leider rotiert Ctrl+r nicht, und es gibt auch keine Tastenkombination für die umgekehrte Suche in der History. Vielleicht kennen unsere Terminal-Profis dafür eine Lösung.
Als Alternative kann man auch eine Suche in der History auf einen Alias legen. Der Alias sieht so aus:
alias hi='history 0 | grep $1'
Der Aufruf von hi expr zeigt dann alle Treffer in einer Liste an. Mit !Nummer wird der gewünschte Befehl ausgeführt.
Ich möchte nicht unerwähnt lassen, dass für die meisten Suchen in der History, die Cursor-Up/Down Tasten völlig ausreichend sind.
Wer sich tiefer mit der Geschichte beschäftigen möchte, finden unter den Quellen ergänzendes Lesematerial.
Quellen: