Festlegen der Anzahl der Befehlsaufrufe

15

Ich benutze Bash. Zum Durchsuchen meines Befehlsverlaufs rufe ich den historyBefehl auf, von dem ich glaube, dass er das gleichnamige Gnu-Programm aufruft. (Ich weiß nicht, ob es einen besseren bash-spezifischen Weg gibt).

In meinem .bashrc habe ich derzeit eine Zeile export PROMPT_COMMAND='history -a', um den Verlauf meiner mehreren Bash-Sitzungen, die ich ausführe, zu speichern .

Wenn ich Geschichte mache, sehe ich derzeit nur 524 Einträge. Ist das konfigurierbar? Ich würde das gerne auf eine viel größere Zahl erhöhen, zB 2000.

Gilles
quelle

Antworten:

19

Erstens history ist die bash-spezifische Art und Weise keine bessere. Der historyBefehl ist eine eingebaute Bash, wie Sie durch Ausführen sehen können

$ type history 
history is a shell builtin

Jetzt wird die Anzahl der Befehle, an die er sich erinnert, von der HISTSIZEVariablen gesteuert . Um es auf eine größere Anzahl setzen Sie diese Zeile in hinzufügen .profile(warum dies ist ein besserer Ort für sie als .bashrc, siehe hier ):

export HISTSIZE=2000

Von nun an historywerden die letzten 2000 Befehle zurückgegeben, die Sie ausgeführt haben.

terdon
quelle
5

Ja, man bashsagt:

HISTSIZE - Die Anzahl der Befehle, die im Befehlsverlauf gespeichert werden sollen

Aber es gibt eine ReadlineVariable:history-size

Legen Sie die maximale Anzahl der in der Verlaufsliste gespeicherten Verlaufseinträge fest. Wenn der Wert auf Null gesetzt ist, werden vorhandene Verlaufseinträge gelöscht und keine neuen Einträge gespeichert. Wenn der Wert kleiner als Null ist, ist die Anzahl der Verlaufseinträge nicht begrenzt. Standardmäßig ist die Anzahl der Verlaufseinträge nicht begrenzt.

Sie können einstellen , history-sizemit HISTSIZE=1000, bind 'set history-size 1000'oder mit der folgenden Zeile in ~/.inputrc:set history-size 1000

Beispiele :

HISTSIZE=1000
bind 'set history-size 0'
echo $HISTSIZE # prints 1000
bind -v | grep history-size # prints set history-size 0
history # prints nothing

bind 'set history-size 0'
HISTSIZE=1000
echo $HISTSIZE # prints 1000
bind -v | grep history-size # prints set history-size 1000
history # prints    13  echo $HISTSIZE\n14  bind -v | grep history-size\n15  history

history-sizeVerfügbar seit bash-4.0-alpha: CHANGES

Evgeny Vereshchagin
quelle
2

Die HISTSIZEVariable HISTFILESIZEbestimmt, wie viele Befehle im Ausführungsverlauf gespeichert werden und wie viele Befehle aus dem Ausführungsverlauf nach dem Beenden der Shell gespeichert werden.

Bratchley
quelle