Bash – Befehlshistorie speichern

Die Bash bringt mit “history” ja eigentlich schon ein Protokoll der zuletzt eingegebenen Befehle mit. Praktisch auch, dass man in dieser Historie mit “[strg]+r” Kommandos, die man bereits abgesetzt hat, über die Eingabe einiger Zeichen aus der Befehlskette noch einmal aufrufen kann. Auch das “!”-Kommando in seinen verschiedenen Spielarten kann ganz nützlich sein (siehe “man history”).

Einzig ein “Langzeit-Protokoll” ist über diese Funktion nicht möglich, zu alte Befehle werden aus der Datei ~/.history nach einiger Zeit rausgeschmissen.

Und genau so ein Langzeitprotokoll macht gerade bei aufwändigen Programm- oder Dienstinstallationen und -Konfigurationen durchaus Sinn, wenn man im Nachhinein noch einmal den Installationsverlauf nachvollziehen möchte. Dann fehlen nämlich gerade die Teile des Verlaufes, die man sich später noch einmal ansehen möchte.

Zur Lösung dieses “Problems” gibt es beispielsweise folgende Ansätze.

Richtig gut ist “script”. Hier werden nicht nur die eingegebenen Befehle protokolliert, auch die Rückgaben der Kommandos werden in die Protokolldatei geschrieben. Das Protokoll entspricht somit genau der Ausgabe, die man in seiner Sitzung auf dem Bildschirm hatte.

Interessieren einen jedoch nur die eingegebenen Befehle selbst, hilft die Umgebungsvariable “PROMPT_COMMAND”:
export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ; }"'echo $$ $USER "$(history 1)" >> ~/installationsverlauf'

Links: Bash eternal history

Über Stefan

Meine Leidenschaft, sowohl im beruflichen als auch im privaten Bereich, gilt seit mittlerweile über 15 Jahren Linux-Systemen. Einen speziellen Schwerpunkt in diesem Bereich habe ich nicht - nur Debian-basiert sollte es sein.
Dieser Artikel wurde in #!/bin/bash, Linux veröffentlicht.Permalink als Favorit speichern.

Hinterlasse eine Antwort

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

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>