GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gewusst wie:Unbegrenzter Bash/Shell-Verlauf?

Fügen Sie dies Ihrem .bashrc hinzu (Linux) oder .bash_profile (MacOS):

export HISTFILESIZE=
export HISTSIZE=

Los geht's, unbegrenzte Geschichte. Aktuell habe ich 27000 Einträge :)

Ab man bash :

Wenn HISTFILESIZE nicht gesetzt ist, wird keine Kürzung durchgeführt.

Das bedeutet .bash_history wird nie abgeschnitten

Dasselbe scheint auch für HISTSIZE zu gelten , obwohl ich das nicht dokumentiert finden konnte.

Ein weiteres nettes Feature, das ich ausprobieren werde, ist dieses:

Wenn die HISTTIMEFORMAT Variable gesetzt ist, werden Zeitstempel in die Verlaufsdatei geschrieben, die mit dem Verlaufskommentarzeichen gekennzeichnet sind, sodass sie über Shell-Sitzungen hinweg beibehalten werden können, wie folgt:

export HISTTIMEFORMAT="%F %T "

Lassen Sie mich wissen, wenn Sie das bereits versucht haben...


(Reposting meiner Antwort von https://stackoverflow.com/a/19533853/128597)

Nach vielen großen, hässlichen Iterationen und seltsamen Grenzfällen im Laufe der Jahre habe ich diesem Thema jetzt einen kurzen Abschnitt meiner .bashrc gewidmet.

Zuerst müssen Sie diesen Abschnitt Ihrer .bashrc-Datei auskommentieren oder entfernen (Standard für Ubuntu). Wenn Sie dies nicht tun, werden bestimmte Umgebungen (wie das Ausführen von screen Sitzungen) kürzen Ihren Verlauf weiterhin:

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# HISTSIZE=1000
# HISTFILESIZE=2000

Zweitens, fügen Sie dies hinzu am Ende Ihrer .bashrc:

# Eternal bash history.
# ---------------------
# Undocumented feature which sets the size to "unlimited".
# https://stackoverflow.com/questions/9457233/unlimited-bash-history
export HISTFILESIZE=
export HISTSIZE=
export HISTTIMEFORMAT="[%F %T] "
# Change the file location because certain bash sessions truncate .bash_history file upon close.
# http://superuser.com/questions/575479/bash-history-truncated-to-500-lines-on-each-login
export HISTFILE=~/.bash_eternal_history
# Force prompt to write history after every command.
# http://superuser.com/questions/20900/bash-history-loss
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"

Hinweis:Jeder Befehl wird sofort nach seiner Ausführung geschrieben. Wenn Sie also versehentlich ein Passwort einfügen, können Sie nicht einfach "-9 %% töten", um das Schreiben des Verlaufs zu vermeiden. Sie müssen es manuell entfernen.

Beachten Sie auch, dass jede Bash-Sitzung die vollständige Verlaufsdatei in den Speicher lädt, aber selbst wenn Ihre Verlaufsdatei auf 10 MB anwächst (was lange, lange dauern wird Zeit) werden Sie keinen großen Einfluss auf Ihre Bash-Startzeit bemerken.


In ~/.bashrc einbinden :

# append a session's history on shell exit
shopt -s histappend
export HISTFILESIZE=
export HISTSIZE=

Diese Antwort erfüllt die folgenden Kriterien:

  1. einen separaten Hauptverlauf (keine Sitzung kann Ihren Verlauf unterbrechen)

  2. automatisches Schreiben der Historie (keine Hotkeys)

  3. seltene Schreibvorgänge (kein Anhängen nach jedem Befehl)

Hintergrund

Beim interaktiven Start, wenn $HISTFILESIZE auf eine Zahl gesetzt ist, schneidet bash $HISTFILE ab zu dieser Nummer. Beim interaktiven Schließen, wenn die Shell-Option histappend gesetzt ist, hängt bash $HISTSIZE an Zeilen bis $HISTFILE , andernfalls wird $HISTFILE überschrieben .

Tipps für OSX (Terminal)

Jedes Mal, wenn ein Tab im Terminal erstellt wird, ~/.bash_profile gelesen wird, was bedeutet, dass bash Ihren ~/.bashrc nicht liest . Fügen Sie Ihrem ~/etc/bash_profile die folgende Zeile hinzu :

# if bashrc has content, source it
[[ -s ~/.bashrc ]] && . ~/.bashrc

Tipps für den Bildschirm

Wenn Sie screen verwenden, ist Ihre Konfigurationsdatei ~/.screenrc. Wenn Sie möchten, dass der Bildschirm den Verlauf aufzeichnet, müssen Sie ihn nur so einstellen, dass er eine Login-Shell verwendet, die Ihre Bash-Startdateien bezieht (und Ihren Verlauf aufzeichnet).

# use bash, make it a login shell
defshell -bash

Linux
  1. So verwenden Sie Bash-Verlaufsbefehle

  2. So löschen Sie den BASH-Befehlszeilenverlauf in Linux

  3. So löschen Sie den Bash-Verlauf unter Linux

  4. CentOS / RHEL :So deaktivieren Sie den BASH-Shell-Verlauf

  5. So deaktivieren Sie die Bearbeitung meines Verlaufs in Bash

So aktivieren Sie den Zeitstempel im Bash-Verlauf unter Linux

So verwenden Sie den Declare-Befehl in der Linux Bash Shell

So installieren Sie Linux Bash Shell unter Windows 10

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in der Bash-Shell vorhanden ist

So löschen Sie den Bash-Verlauf in Linux und Mac

Wie verwende ich die Linux-Bash-Shell in Windows 10?