Eu realmente gosto de usar control+r
para pesquisar recursivamente meu histórico de comandos. Encontrei algumas boas opções que gosto de usar:
# ignore duplicate commands, ignore commands starting with a space
export HISTCONTROL=erasedups:ignorespace
# keep the last 5000 entries
export HISTSIZE=5000
# append to the history instead of overwriting (good for multiple connections)
shopt -s histappend
O único problema para mim é que erasedups
apenas apaga duplicatas sequenciais - de modo que, com esta sequência de comandos:
ls
cd ~
ls
O ls
comando será realmente gravado duas vezes. Eu pensei em executar periodicamente w / cron:
cat .bash_history | sort | uniq > temp.txt
mv temp.txt .bash_history
Isso conseguiria remover as duplicatas, mas infelizmente o pedido não seria preservado. Se eu não fizer sort
o arquivo primeiro, não acredito que uniq
possa funcionar corretamente.
Como posso remover duplicatas no meu .bash_history, preservando a ordem?
Crédito extra:
Há algum problema com a substituição do .bash_history
arquivo por um script? Por exemplo, se você remover um arquivo de log do apache, acho que você precisará enviar um sinal de nohup / reset kill
para que ele libere sua conexão com o arquivo. Se esse for o caso do .bash_history
arquivo, talvez eu possa usar de alguma forma ps
para verificar e garantir que não haja sessões conectadas antes da execução do script de filtragem?
history
comando. Onde eu deveria estar olhando?
ignoredups
vez deerasedups
por um tempo e veja como isso funciona para você.