Bash ( Bourne Again SHell ) History konfigurieren

Die bash-Shell ist inzwischen die meist genutzte Consolen-Shell unter Linux/Unix. Das geht schon soweit, daß Start-Scripte direkt für die bash geschrieben sind, oder gar der Befehl /bin/sh nur noch ein Link auf /bin/bash ist.

Bash-History richtig nutzen

Die Bash verfügt über eine Art Erinnerungsvermögen: Sie merkt sich welche Befehle man bereits eingegeben hat. Wenn man einen langen Befehl nicht noch einmal eingeben will kann man sich einfach mit den Pfeiltasten durch die gespeicherten Befehle hangeln und den Befehl wieder ausführen. Aber das Erinnerungsvermögen der Bash kann noch mehr.

Mit history kann man sich eine Liste von allen Befehlen anzeigen lassen, abhängig davon für wie viele Eingabenaufzeichnungen die Bash konfiguriert wurde (.s Konfiguration)

Dabei zählt die Bash immer mit wie viele Befehle sich bereits in der Datenbank befinden, in diesem Fall sind es 508. Praktisch: Gibt man jetzt !<Zahl> ein wird der Befehl mit der entsprechenden Zahl wieder ausgeführt.

Wenn man Strg+R drückt muss man nur noch den Anfang des Befehls eingeben, wenn er schon einmal eingegeben wurde vervollständigt die Bash ihn automatisch.

Konfiguration

Das Verhalten der Erinnerungsfunktion lässt sich entweder in der systemweiten, meist /etc/bashrc bzw. /etc/bash/bashrc, oder in der Konfigurationsdatei im Home-Verzeichnis (~/.bashrc, ~/.bash_profile) konfigurieren.

Mit shopt lassen sich diverse Einstellungen der Bash verändern. Histappend sorgt dafür das die eingegebenen Befehle beim Beenden der Bash an die Liste der eingegebenen Befehle angehangen werden, anstatt die Liste jedes mal zu überschreiben.

Mit den Folgenden Parametern wird festgelegt wie viele Befehle gespeichert werden sollen, standardmäßig ist meistens 500 eingestellt.

Mit HISTIGNORE lassen sich Befehle festlegen, die nicht gespeichert werden sollen. Die Befehle werden durch einen Doppelpunkt getrennt. Der Befehl hier im Beispiel sorgt dafür das alle Befehle die mit cd oder ls beginnen nicht gespeichert werden

Eine durch Doppelpunkte getrennte Liste von Optionen zur Speicherung von Befehlen. Wenn ignorespace aktiviert ist werden alle eingegeben Zeilen die mit einem Leerzeichen beginnen nicht gespeichert, erasedups sorgt dafür das jeder Befehl nur einmal in der Bash-Erinnerung vorkommt. Mit ignoredups lässt sich festlegen das ein eingegebener Befehl nur einmal gespeichert wird, auch wenn er mehrmals hintereinander eingegeben wird. ignoreboth ist das selbe wie ignorespace + ignoredups.

Die eingegebenen Befehle werden standardmäßig in der ~/.bash_history gespeichert, wenn man sie woanders speichern will kann man das mit HISTFILE festlegen.

Wird folgende Variable gesetzt, wird zu jedem eingegebenen Befehl auch die Uhrzeit gespeichert. Der Wert von HISTTIMEFORMAT wird verwendet um die Zeit zu formatieren, mehr Informationen dazu finden sich in der Manpage von strftime (man 3 strftime).

Befehle in Echtzeit speichern

Die Bash speichert die eingegebenen Befehle erst wenn sie beendet wird, deswegen werden die Befehle anderer Bash-Sitzungen nicht angezeigt wenn man mehrere Bashs gleichzeitig laufen hat. Aber da gibt es einen kleinen Trick, denn man kann den Prompt so verändern das er die Erinnerung bei jeder neuen Eingabe speichert und neu einliest. Dazu werden die beiden Befehle history -a (Befehle in der History speichern) und history -r (History-Datei neu einlesen) verwendet.

Um die Echtzeiterinnerungsfunktion der Bash zu aktivieren werden die beiden Befehle einfach nur zum lokalen (~/.bashrc) oder globalen (/etc/profile) Bash Prompt hinzufügt.

 

Kategorie(n): Bash, Linux, Shell

Schreibe einen Kommentar

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

 

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.