Gibt es eine Möglichkeit, eine unbegrenzte Historie in Bash zu definieren?
83
Fügen Sie dies zu Ihrem .bashrc
(Linux) oder .bash_profile
(MacOS) hinzu:
export HISTFILESIZE=
export HISTSIZE=
Es geht los, unbegrenzte Geschichte. Derzeit habe ich 27000 Einträge :)
Von man bash
:
Wenn
HISTFILESIZE
nicht festgelegt, wird keine Kürzung durchgeführt.
Das heißt, .bash_history
wird nie abgeschnitten
Das scheint auch so zu sein HISTSIZE
, obwohl ich das nicht dokumentiert finden konnte.
Ein weiteres nettes Feature, das ich ausprobieren werde, ist folgendes:
Wenn die
HISTTIMEFORMAT
Variable festgelegt ist, werden Zeitstempel in die Verlaufsdatei geschrieben, die mit dem Verlaufskommentarzeichen gekennzeichnet ist, sodass sie möglicherweise über Shellsitzungen hinweg beibehalten werden, z.
export HISTTIMEFORMAT="%F %T "
Lassen Sie mich wissen, wenn Sie das bereits versucht haben ...
gdb
; Wenn Sie eineHISTSIZE
Variable festlegen , wird sie als 0 verwendet, wodurch die Verlaufsgröße vollständig deaktiviert wird.export
, dieHISTFILESIZE
Anzahl der Zeilen (nicht die Bytes), und das Abschneiden der Verlaufsdatei erfolgt, wenn Sie die Variable setzenHISTFILESIZE
(und wenn die Shell beendet wird). Stelle es also nicht zweimal in deiner Konfigurationsdatei mit unterschiedlichen Werten ein ...(Reposting meiner Antwort von https://stackoverflow.com/a/19533853/128597 )
Nach vielen großen, hässlichen Iterationen und seltsamen Randbemerkungen im Laufe der Jahre habe ich jetzt einen kurzen Abschnitt meines .bashrc-Archivs , der sich diesem Thema widmet.
Zunächst müssen Sie diesen Abschnitt Ihrer .bashrc-Datei auskommentieren oder entfernen (Standardeinstellung für Ubuntu). Andernfalls wird Ihr Verlauf in bestimmten Umgebungen (z. B. beim Ausführen von
screen
Sitzungen) weiterhin gekürzt:Zweitens, fügen Sie dies am Ende Ihrer .bashrc hinzu:
Hinweis: Jeder Befehl wird sofort nach seiner Ausführung geschrieben. Wenn Sie also versehentlich ein Kennwort einfügen, können Sie nicht einfach -9 %% töten, um das Schreiben des Verlaufs zu vermeiden, sondern müssen es manuell entfernen.
Beachten Sie auch, dass bei jeder Bash-Sitzung die vollständige Verlaufsdatei in den Speicher geladen wird. Selbst wenn Ihre Verlaufsdatei auf 10 MB anwächst (was sehr lange dauert ), werden Sie keine großen Auswirkungen auf Ihre Bash-Startzeit bemerken.
quelle
HISTFILESIZE
. Aus diesem Grund sollten Sie jedes Auftreten eines solchen Ereignisses mit Ausnahme des von Ihnen gewünschten Ereignisses entfernen. Es wird auch beim Beenden der Shell abgeschnitten (aber das wird erwartet). Und du solltest nicht brauchenexport
.bash --norc
wird der Verlauf durch einen Vorgang wie folgt erneut abgeschnitten.export HISTFILE="/home/$USER/hist/`uname -n``tty | tr '/' '-'`"
, um den Shell-Verlauf pro Sitzung zu trennen (basierend auf dem Hostnamen und dem TTY-Namen). Natürlich muss ich zuerst das Verzeichnis ~ / hist erstellen.PROMPT_COMMAND="${PROMPT_COMMAND:+${PROMPT_COMMAND} ;}history -a";
In ~ / .bashrc aufnehmen :
Diese Antwort erfüllt die folgenden Kriterien:
einen separaten Master-Verlauf (keine Sitzung kann Ihren Verlauf unterbrechen)
automatisches Schreiben des Verlaufs (keine Hotkeys)
seltenes Schreiben (kein Anhängen nach jedem Befehl)
Hintergrund
Wenn beim interaktiven Start
$HISTFILESIZE
eine Zahl festgelegt ist, wird die Bash$HISTFILE
auf diese Zahl gekürzt . Wenn beim interaktiven Schließen die Shell-Optionhistappend
aktiviert ist, fügt bash$HISTSIZE
Zeilen an$HISTFILE
, andernfalls wird überschrieben$HISTFILE
.Tipps für OSX (Terminal)
Jedes Mal, wenn eine Registerkarte in Terminal erstellt wird,
~/.bash_profile
wird sie gelesen~/.bashrc
. Fügen Sie die folgende Zeile zu Ihrem hinzu~/etc/bash_profile
:Tipps für den Bildschirm
Wenn Sie screen verwenden, lautet Ihre Konfigurationsdatei ~ / .screenrc. Wenn Sie möchten, dass der Bildschirm den Verlauf aufzeichnet, müssen Sie ihn nur so einstellen, dass er eine Anmeldeshell verwendet, die Ihre Bash-Startdateien abruft (und Ihren Verlauf aufzeichnet).
quelle
Ein anderes Konzept (trifft möglicherweise nicht zu), aber Sie können
unlimited
bei der Verwendung von Shell-Sink eine Vorgeschichte haben .quelle