History - Geschichte auf der Kommandozeile

  Ralf Hersel   Lesezeit: 6 Minuten  🗪 4 Kommentare

Das Kommando "history" erspart einem viel Tipparbeit im Terminal und hält ein paar Überraschungen parat.

history - geschichte auf der kommandozeile

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:

Tags

CLI, Terminal, history, CLI-Befehle, Kommandozeile

marco
Geschrieben von marco am 22. November 2022 um 14:37

Ein Tipp von mir für "history" Arbeiter:

Schaut euch mal hstr an, ihr wollt nichts anderes mehr. :-) https://github.com/dvorka/hstr

Eine gute Beschreibung gibt es hier: https://ostechnix.com/hstr-easily-view-navigate-search-manage-commandline-history/

Lioh
Geschrieben von Lioh am 22. November 2022 um 14:41

Super , schreib doch bitte einen kurzen Artikel darüber, dann profitieren alle davon, auch die Leser welche nicht so gut Englisch können.

Udo Isaenko
Geschrieben von Udo Isaenko am 27. November 2022 um 09:41

Sehr schön. Leider nur für bash und zsh. Wäre schön, wenn es sowas wie hstr auch für meine geliebte fish gäbe.

Lars
Geschrieben von Lars am 22. November 2022 um 16:50

Hi, über die Variablen HISTCONTROL, HISTSIZE und HISTFILESIZE lassen sich auch mehr Zeilen speichern. In meiner ~/.bashrc steht: HISTCONTROL=ignoreboth HISTSIZE=10000 HISTFILESIZE=60000

Man könnte in der ~/.bash_logout auch noch ein kleines Script hinterlegen, das die gerade aktuelle ~/.bash_history irgendwo hin sichert, um immer zu wissen, was man mal gemacht hat. Ist manchmal hilfreich.

Jetzt noch github.com/junegunn/fzf und die Shell wird richtig brauchbar.

Lars