Como anexar ao bash history antes de mostrar o prompt se a linha não for duplicada?

1

Como parece que muitas vezes o histórico não é salvo ao fechar e não fechar o terminal do gnome, eu gostaria de anexar ao bash history antes de mostrar o prompt se a linha não for duplicada. Embora eu tenha export HISTCONTROL=ignoreboth em bashrc, o que supostamente implica em ignoredups, parece não funcionar, pois ainda consigo duplicatas em 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 elas já estiverem inseridas.

perl -nei '$H{$_}++ or print' ~/.bash_history 
    
por nnb 29.04.2012 / 05:03

1 resposta

1

Você precisa modificar o PROMPT_COMMAND e o 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 essa abordagem são:

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

Estes não são necessariamente problemas, apenas problemas menores que você deve estar ciente.

    
por 04.05.2012 / 21:05