Linux Terminal History

History ausgeben lassen

Die History lässt sich komplett mit dem Befehl

# history

ausgeben. Dabei die Zeilen sind durchnummeriert. Möchte man mehr, als lediglich einen Blick in die History werfen — beispielsweise sie verändern und wieder importieren, könnten die Zeilennummern stören. Kein Problem — mit sed und einem simplen regulären Ausdruck lässt sich eine saubere Liste von Befehlen erzeugen:

# history | sed 's/^[ ]*[0-9]*[ ]*//'

Vorsicht: Das Tool sed implementiert reguläre Ausdrücke nicht komplett. Ich habe mich nämlich erst gewundert, warum mein Ausdruck /^[\s]{2,4}[0-9]{1,3}[\s]{2}/ nicht funktioniert hat — schließlich hat konnte ich damit in einem Editor prima finden, was ich gesucht habe. Doch dann las ich im sed-Manual: “POSIX.2 BREs should be supported, but they aren’t completely because of performance problems.“.

Alternativ geht das mit cut:

# history | history | cut -c 8-

Der cut-Befehl schneidet hier einfach die ersten acht Zeichen der Zeile ab. Ob es mehr werden können, habe ich nicht weiter untersucht. Vermutlich aber theoretisch schon. Die Methode nit sed ist flexibler.

# history > /path/to/my/history.txt

History editieren/importieren

Die History wird in einer Text-Datei gespeichert. Deren Speicherort wird in der Umgebungsvariablen $HISTFILE gehalten. Üblicherweise is es ~/.bash_history.

# echo $HISTFILE
/root/.bash_history

Die History-Datei kann angepasst oder durch eine andere Datei ganz ersetzt werden. Dabei sollte man beachten, dass die Änderungen in der laufenden Terminal-Seeeion nicht sichtbar sind (offenbar greifen einzelne Terminal-Fesnter nicht direkt auf die ~/.bash_history zu, ondern auf eine Zwischengespeicherte Kopie, die beim Anlegen er Terminal-Session erzeugt wird).

History-Länge

Es gibt zwei Typen von History: die “allgemeine” History, die in der ~/.bash_history gespeichert wird, und die Session-History, die der History-Datei hinzugefügt wird, sobald das Terminal-Fenster geschlossen wird. Die maximale Länge der History-Datei ist in der Umgebungsvariablen HISTFILESIZE gehalten, die der Session-History — in der HISTSIZE.

# echo $HISTFILESIZE
500
# echo $HISTSIZE
500

Die Länge der gespeicherten Liste der verwendeten Befehle ist zwar begrenzt, kann aber geändert werden. Um sie dauerhaft zu setzen, kann man das export-Befehl, mit dem der Wert einer Umgebungsvariablen definiert wird, in die ~/.profile eingetragen werden, z.B::

export HISTSIZE=1000
export HISTFILESIZE=100000

Alles hier Beschriebene bezieht sich auf ein Debian 6.0.6 System.

Comments are closed.