Nachdem ich vor gut zwei Monaten erklärt habe, wie man Kommandos in der bash_history versteckt, möchte ich das Thema heute auf Timestamps ausweiten. Die bash_history erfässt alle eingegebenen Kommandos aus der Bash in einer Datei. Leider lässt sich in der Grundkonfiguration damit schlecht ermitteln, wann welches Kommando ausgeführt worden ist. Mit einer Variable können wir dies allerdings aktivieren.
Für diese Zeitangabe ist die Variable HISTTIMEFORMAT zuständig. In ihr wird das gewünschte Zeitformat festgelegt. Die Angabe des Formats erfolgt wie bei vielen bekannten Programmiersprachen: für Datumsangaben wie z.B. "15.04.2016 15:31:15" muss "%d.%m.%Y %T " (das Leerzeichen zum Schluss ist wichtig) gesetzt werden. Der Clou hierbei: eigentlich werden nur die Timestamps der Kommandos als Kommentar in der .bash_history gespeichert. Somit ist auch für späteres Parsen der Datei mit eigenen Programmen das gewählte Zeitformat nicht relevant.
Um die Variable dauerhaft in den Sitzungen zu setzen, wird diese in die ~/.bashrc mittels export eingetragen. Konkret sieht das Beispiel oben folgendermaßen aus:
export HISTTIMEFORMAT="%d.%m.%Y %T "
Alternativ kann man die Zeile auch per
echo "export HISTTIMEFORMAT='%d.%m.%Y %T '" >> ~/.bashrc
einfügen. Hiernach die Sitzungen in der Bash neustarten, um die neue Konfiguration einzulesen.
Möchte man nun den Verlauf abrufen, wird dies wie bekannt über das Kommando history erledigt. Mögliche Ausgabe ist dann z.B.
... 501 15.04.2016 16:46:25 history
Fertig!