Shell History

Eines der nützlichsten Features einer Linux-Shell ist ihre History. Hier möchte ich kurz erläutern, wie man sie nutzt und wie man sie etwas komfortabler konfiguriert.

Die History ist ein build-in Feature der Shell. Jede Shell hat sie ggf. leicht unterschiedlich implementiert und jede Linux-Distribution ggf. leicht unterschiedlich konfiguriert. Im Folgenden beziehe ich mich auf die Bash unter Ubuntu 21.04.

Die Bash merkt sich alle Befehle, die in ihr ausgeführt werden, in der Datei .bash_history im Home-Verzeichnis. Mit dem Befehl

history

kann man sie sich anzeigen. Und mit den Pfeil-aufwärts- und Pfeil-abwärts-Tasten kann man durch die History navigieren.

Unter Ubuntu 21.04 ist die Anzahl der Befehle, die in der History gespeichert werden, auf 1000 begrenzt. Aus meiner Sicht eine unnötige Begrenzung. Ich möchte alle Befehle, die ich jemals eingegeben habe, wiederfinden. Um diese Begrenzung aufzuheben, muss man die Datei .bashrc im Home-Verzeichnis öffnen. Dort finden sich die folgenden Einträge:

HISTSIZE=1000
HISTFILESIZE=2000

Nun kann man beide Werte erhöhen oder mit -1 die Speicherbegrenzung ganz aufheben:

# Unbegrenzte History
HISTSIZE=-1
HISTFILESIZE=-1

Ein weiteres nützliches Feature ist das Durchsuchen der History. Hier gibt es verschiedene Möglichkeiten. Besonders praktisch finde ich es, wenn man in der Shell die ersten Buchstaben des gesuchten Befehls eingibt und wie beim Durchblättern der History mit den Pfeil-aufwärts- und Pfeil-abwärts-Tasten nacheinander die Befehle aus der History angezeigt bekommt, die mit den eingegebenen Buchstaben beginnen.

Ein solches Verhalten wird in der Datei inputrc konfiguriert. Man kann dies in der globalen etc/inputrc machen oder man legt sich im Homeverzeichnis eine eigene .inputrc an. Dort trägt man folgendes ein:

"\e[A": history-search-backward
"\e[B": history-search-forward

Damit diese Einstellung wirksam wird, muss man sich entweder neu anmelden oder mit bind -f ~/.inputrc bzw. bind -f ect/inputrc die Datei (erneut) laden.

Erinnert man sich nicht an die Anfangsbuchstaben, sondern an einen Teilstring aus der Mitte des gewünschten Befehls, kann man die reverse search nutzen. Dazu tippt man zunächst Strg r in die Konsole. Anstatt des Prompts wird nun (reverse-i-search)´' angezeigt. Gibt man jetzt den Teilstring ein, erscheint der letzte Befehl, der diesen Teilstring enthält. Mit weiteren Strg r Eingaben werden nach und nach alle Befehle aus der History angezeigt, die den Teilstring enthalten.

2 Kommentare

  1. Hallo Stefan,
    zusätzlich finde ich noch das Suchen via +R sehr praktisch (und benutze es oft) um nicht nur am Anfang des History-Eintrags zu suchen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.