J'aime vraiment utiliser control+rpour rechercher de manière récursive mon historique de commandes. J'ai trouvé quelques bonnes options que j'aime utiliser avec:
# 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
Le seul problème pour moi est que erasedupsseulement les doublons séquentiels ne sont effacés - de sorte qu'avec cette chaîne de commandes:
ls
cd ~
ls
La lscommande sera effectivement enregistrée deux fois. J'ai pensé à exécuter périodiquement w / cron:
cat .bash_history | sort | uniq > temp.txt
mv temp.txt .bash_history
Cela permettrait de supprimer les doublons, mais malheureusement, l'ordre ne serait pas préservé. Si je ne sortcommence pas par le fichier, je ne crois pas que cela uniqpuisse fonctionner correctement.
Comment puis-je supprimer les doublons dans mon .bash_history, en préservant l'ordre?
Crédit supplémentaire:
Existe-t-il des problèmes pour écraser le .bash_historyfichier via un script? Par exemple, si vous supprimez un fichier journal Apache, je pense que vous devez envoyer un signal nohup / reset avec killpour le vider de sa connexion au fichier. Si tel est le cas avec le .bash_historyfichier, je pourrais peut-être utiliser d'une manière ou d'une autre pspour vérifier et s'assurer qu'il n'y a pas de session connectée avant l'exécution du script de filtrage?
historycommande. Où devrais-je chercher?
ignoredupsplutôterasedupspendant un moment et voyez comment cela fonctionne pour vous.