Seguindo https://www.baeldung.com/linux/history-remove-avoid-duplicates , adicionei
clean_history() {
awk '!a[$0]++' $HOME/.bash_history > $HOME/.bash_history.tmp && mv $HOME/.bash_history.tmp $HOME/.bash_history
}
trap clean_history DEBUG # execute after every command
ao meu arquivo ~/.bashrc para garantir que, após cada comando ser executado, as entradas duplicadas sejam removidas. Isto é importante para mim, porque o kile (o editor LaTeX do KDE) deixa uma tonelada de comandos "clear" e "cd ..." no histórico, destruindo efetivamente o histórico em uma única sessão de escrita em LaTeX. E não encontrei nenhuma maneira de impedir que o kile faça isso.
De qualquer forma... a linha de código acima remove efetivamente todas as entradas subsequentes de um comando e deixa a primeira entrada no histórico. No entanto, quero que a última entrada permaneça no histórico e que todas as entradas anteriores sejam excluídas. Como posso fazer isso?
A propósito: Kile ignora
HISTCONTROL=ignoredups:erasedups
portanto, usar essa abordagem parece não ser uma opção.
Eu também ficaria feliz se pudéssemos evitar que Kile escrevesse todos juntos na história.
Não duplicados:
- Remover entradas duplicadas no arquivo de texto deixa a primeira entrada no arquivo
- o mesmo acontece com Como remover linhas duplicadas dentro de um arquivo de texto e obter o número de linhas removidas?
- Como parar o uso do histórico de anexação do Bash
HISTCONTROL