Wie kann ich vor der Anzeige der Eingabeaufforderung etwas an den Bash-Verlauf anhängen, wenn die Zeile kein Duplikat ist?

Wie kann ich vor der Anzeige der Eingabeaufforderung etwas an den Bash-Verlauf anhängen, wenn die Zeile kein Duplikat ist?

Da es oft vorkommt, dass der Verlauf nicht gespeichert wird, wenn das Gnome-Terminal heruntergefahren und nicht geschlossen wird, möchte ich vor der Anzeige der Eingabeaufforderung, wenn die Zeile kein Duplikat ist, den Bash-Verlauf anhängen. Obwohl ich export HISTCONTROL=ignorebothin bashrc ein Häkchen gesetzt habe, das ignoreups implizieren soll, scheint es nicht zu funktionieren, da ich immer noch Duplikate in bash_history bekomme. Wie geht das also?

Um weitere Hinweise zu geben, obwohl keine Lösungen: Ich denke, $PROMPT_COMMAND muss"$(history 1)" (if_not_duplicate) >> ~/.bash_history

Und dies würde nicht benachbarte Duplikate entfernen, wenn sie bereits eingefügt sind.

perl -nei '$H{$_}++ or print' ~/.bash_history 

Antwort1

Sie müssen sowohl PROMPT_COMMAND als auch HISTCONTROL ändern, um dies richtig zu machen. Folgendes sollte für Sie funktionieren:

# The secret sauce is "erasedups," which replaces the default of "ignoredups."
export HISTCONTROL=erasedups:ignorespace

# Write the history to HISTFILE before showing the prompt.
export PROMPT_COMMAND='history -w'

Bei diesem Ansatz sind zwei Einschränkungen zu beachten:

  1. Sie verlieren den Verlauf (insbesondere doppelte Einträge), was von Bedeutung sein kann, wenn Sie sich bei irgendetwas auf HISTTIMEFORMAT-Werte verlassen.
  2. Sie kürzen Ihre HISTFILE kontinuierlich auf HISTFILESIZE.

Dabei handelt es sich nicht unbedingt um Probleme, sondern nur um kleinere Probleme, die Sie kennen sollten.

verwandte Informationen