Wie kann ich den Inhalt meiner bash_history
Datei ändern ? Welche Werte oder Variablen steuern, wie lange der Verlauf dauert? Gibt es noch andere Dinge, die ich ändern kann, um meine BASH-Geschichte genauer kontrollieren zu können?
10
HISTSIZE
undHISTFILESIZE
sind die einzigen Steuerflächen, die Sie steuern müssen, wie viel Verlauf verwaltet wird.Antworten:
Es gibt zwei Variablen, die die Verlaufsgröße steuern:
und
Mit diesen beiden Variablen können Sie das Verhalten Ihres Verlaufs steuern. Grundsätzlich
HISTSIZE
ist dies die Anzahl der Befehle, die während Ihrer aktuellen Sitzung gespeichert wurden, undHISTFILESIZE
die Anzahl der Befehle, die über Sitzungen hinweg gespeichert werden. Also zum Beispiel:Da im obigen Beispiel
HISTSIZE
10 festgelegt ist, wirdhistory
eine Liste mit 10 Befehlen zurückgegeben. Wenn Sie sich jedoch abmelden und dann wieder anmelden,history
werden nur 5 Befehle zurückgegeben, da dieserHISTFILESIZE
auf 5 gesetzt ist. Dies liegt daran, dass nach dem Beenden Ihrer Sitzung IhreHISTFILESIZE
Zeilen Ihres Verlaufs in Ihrer Verlaufsdatei gespeichert werden (~/.bash_history
standardmäßig, aber gesteuert vonHISTFILE
). Mit anderen Worten, Befehle werden hinzugefügt,HISTFILE
bis die$HISTFILESIZE
Linien erreicht sind. An diesem Punkt bedeutet jede nachfolgende hinzugefügte Zeile, dass der erste Befehl der Datei entfernt wird.Sie können die Werte dieser Variablen in Ihrer
~/.profile
(oder~/.bash_profile
falls diese Datei vorhanden ist) festlegen . Legen Sie sie nicht in Ihrer~/.bashrc
ersten fest, da dort kein Geschäft eingerichtet ist, und zweitens, weil dies dazu führen würde, dass Sie sich beim Anmelden anders verhalten als bei Nicht-Anmelden-Shells, was zu anderen Problemen führen kann .Weitere nützliche Variablen, mit denen Sie das Verhalten Ihres Verlaufs optimieren können, sind:
HISTIGNORE
: Auf diese Weise können Sie bestimmte allgemeine Befehle ignorieren, die selten von Interesse sind. Zum Beispiel könnten Sie einstellen:Das würde dazu führen , jeder Befehl , beginnend mit
pwd
,df
oderdu
ignoriert werden und nicht in Ihrer Geschichte gespeichert.HISTCONTROL
: Hier können Sie auswählen, wie der Verlauf funktioniert. Persönlich habe ich es so eingestellt,HISTCONTROL=ignoredups
dass doppelte Befehle nur einmal gespeichert werden. Andere Optionen sindignorespace
das Ignorieren von Befehlen, die mit Leerzeichen beginnen. Dadurch werdenerasedups
alle vorherigen Zeilen, die mit der aktuellen Zeile übereinstimmen, aus der Verlaufsliste entfernt, bevor diese Zeile gespeichert wird.ignoreboth
ist eine Abkürzung für Ignorspace und Ignoratedups.HISTTIMEFORMAT
: Hier können Sie das Zeitformat der Verlaufsdatei festlegen. Siehe Pandyas Antwort oder lesen Sieman bash
für Details.Für die weitere Feinabstimmung haben Sie:
Die
histappend
Bash-Option. Dies kann durch Ausführenshopt -s histappend
oder Hinzufügen dieses Befehls zu Ihrem festgelegt werden~/.bashrc
. Wenn diese Option eingestellt istDies ist sehr nützlich, da Sie damit den Verlauf verschiedener Sitzungen kombinieren können (denken Sie beispielsweise an verschiedene Terminals).
Der
history
Befehl verfügt über zwei nützliche Optionen:history -a
: bewirkt, dass der letzte Befehl automatisch in die Verlaufsdatei geschrieben wirdhistory -r
: Importiert die Verlaufsdatei in die aktuelle Sitzung.Sie können beispielsweise diese beiden Befehle zu Ihrem hinzufügen
PROMPT_COMMAND
(der jedes Mal ausgeführt wird, wenn Ihre Shell die Eingabeaufforderung anzeigt, also jedes Mal, wenn Sie eine neue Shell starten und nach jedem Befehl, den Sie darin ausführen):Zusammen stellen sie sicher, dass jedes neue Terminal, das Sie öffnen, sofort den Verlauf aller anderen Shell-Sitzungen importiert. Das Ergebnis ist eine gemeinsame Historie für alle Terminals / Shell-Sitzungen.
quelle
Die Standardgröße der Verlaufsdatei beträgt 500 Zeilen. Sobald die Datei .bash_history 500 Zeilen erreicht, werden die frühen Einträge entfernt, um Platz für die neueren Zeilen zu schaffen, wie im FIFO. Sie können dies ändern, indem Sie den Wert der Variablen ändern, die
HISTFILESIZE
standardmäßig den Wert 500 hat.Wenn Sie ein
HISTFILESIZE=10000
in Ihre .bashrc-Datei einfügen, erhöht sich die Anzahl der Zeilen, die die Verlaufsdatei enthalten kann, auf 10000, wodurch sich die Lebensdauer des Inhalts verlängert.quelle
HISTSIZE
Limit erhöhen , sollten Sie auch eine Änderung in Betracht ziehenHISTFILE
. Wenn Sie ausführenbash --norc
HISTSIZE
, kehren Sie zum Standardwert zurück und kürzen SieHISTFILE
beim Beenden./etc/bash.bashrc
festlegtHISTFILESIZE
(oder vielleichtHISTSIZE
; ich habe nicht überprüft, welches ). Um dies zu vermeiden, stellen Sie Ihre eigene so ein, dass Ihr realer Verlauf dort abläuft und nicht in die Datei, die Bash abschneidet..bash_history
/etc/bash.bashrc
HISTFILE
.bash_history
export
, da dies es für alle Kinderschalen sichtbar machen würde, die dann versuchen könnten, es abzuschneiden, anstatt.bash_history
!)Lesen Sie
man bash
für weitere Informationen über bedeckt bash Geschichte wie:Besonders
HISTFILESIZE
undHISTSIZE
mögen Sie suchen und Ihnen helfen.quelle