Eu realmente gosto de usar control+rpara 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 erasedupsapenas apaga duplicatas sequenciais - de modo que, com esta sequência de comandos:
ls
cd ~
ls
O lscomando 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 sorto arquivo primeiro, não acredito que uniqpossa 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_historyarquivo por um script? Por exemplo, se você remover um arquivo de log do apache, acho que você precisará enviar um sinal de nohup / reset killpara que ele libere sua conexão com o arquivo. Se esse for o caso do .bash_historyarquivo, talvez eu possa usar de alguma forma pspara verificar e garantir que não haja sessões conectadas antes da execução do script de filtragem?
historycomando. Onde eu deveria estar olhando?
ignoredupsvez deerasedupspor um tempo e veja como isso funciona para você.