¿Cómo agregar al historial de bash antes de mostrar el mensaje si la línea no está duplicada?

¿Cómo agregar al historial de bash antes de mostrar el mensaje si la línea no está duplicada?

Debido a que parece que a menudo el historial no se guarda al apagar y no cerrar el terminal gnome, me gustaría agregarlo al historial de bash antes de mostrar el mensaje si la línea no es un duplicado. Aunque lo tengo export HISTCONTROL=ignorebothen bashrc, lo que se supone que implica ignoraciones, no parece funcionar, ya que todavía obtengo duplicados en bash_history. Entonces, ¿cómo hacer esto?

Para ofrecer más indicaciones, aunque no soluciones: creo que $PROMPT_COMMAND debe tener"$(history 1)" (if_not_duplicate) >> ~/.bash_history

Y esto eliminaría los duplicados no adyacentes, si ya están insertados.

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

Respuesta1

Debe modificar tanto PROMPT_COMMAND como HISTCONTROL para hacerlo correctamente. Lo siguiente debería funcionar para usted:

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

Dos advertencias a considerar con este enfoque son:

  1. Perderá el historial (específicamente las entradas duplicadas), lo que puede ser importante si confía en los valores de HISTTIMEFORMAT para cualquier cosa.
  2. Truncarás continuamente tu HISTFILE a HISTFILESIZE.

Estos no son necesariamente problemas, sólo cuestiones menores que debes tener en cuenta.

información relacionada