J'aime vraiment utiliser control+r
pour 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 erasedups
seulement les doublons séquentiels ne sont effacés - de sorte qu'avec cette chaîne de commandes:
ls
cd ~
ls
La ls
commande 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 sort
commence pas par le fichier, je ne crois pas que cela uniq
puisse 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_history
fichier via un script? Par exemple, si vous supprimez un fichier journal Apache, je pense que vous devez envoyer un signal nohup / reset avec kill
pour le vider de sa connexion au fichier. Si tel est le cas avec le .bash_history
fichier, je pourrais peut-être utiliser d'une manière ou d'une autre ps
pour vérifier et s'assurer qu'il n'y a pas de session connectée avant l'exécution du script de filtrage?
history
commande. Où devrais-je chercher?
ignoredups
plutôterasedups
pendant un moment et voyez comment cela fonctionne pour vous.