Como anexar ao histórico do bash antes de mostrar o prompt se a linha não for duplicada?

Como anexar ao histórico do bash antes de mostrar o prompt se a linha não for duplicada?

Como parece que muitas vezes o histórico não é salvo ao desligar e não fechar o terminal gnome, gostaria de anexar ao histórico do bash antes de mostrar o prompt se a linha não for duplicada. Embora eu tenha export HISTCONTROL=ignorebothno bashrc, o que supostamente implica ignorações, parece não funcionar, pois ainda recebo duplicatas no bash_history. Então, como fazer isso?

Para oferecer mais indicações, embora não soluções: acho que $PROMPT_COMMAND precisa ter"$(history 1)" (if_not_duplicate) >> ~/.bash_history

E isso removeria duplicatas não adjacentes, se já estivessem inseridas.

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

Responder1

Você precisa modificar PROMPT_COMMAND e HISTCONTROL para fazer isso corretamente. O seguinte deve funcionar para você:

# 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'

Duas advertências a serem consideradas com esta abordagem são:

  1. Você perderá o histórico (especificamente entradas duplicadas), o que pode ser importante se você confiar nos valores HISTTIMEFORMAT para qualquer coisa.
  2. Você truncará continuamente seu HISTFILE para HISTFILESIZE.

Estes não são necessariamente problemas, apenas questões menores das quais você deve estar ciente.

informação relacionada