[Bash] : archiver et historiser son historique de commandes

Print Friendly, PDF & Email

Quand on a une petite tête il vaut mieux savoir s’organiser et faire en sorte de retrouver les choses. Pour cela il existe l’historique de votre bash accessible via “history” ou encore ctrl+r pour la recherche de commande.

C’est déjà pas mal mais parfois un peu court même en augmentant la taille de l’historique via :

export HISTSIZE=10000


Dans mon cas ma tête est tellement petite que j’ai mis en place un système d’archivage de l’historique bash. Comme ce n’est pas complqiué ça coûte rien et je vous rassure ça ne prend pas trop de place.

J’ai donc créé un répertoire dans mon home qui s’intitule “.logs” et on y trouve :

15:11:57 - oki @ doki ~ 
└─ $ ▶ tree .logs
.logs
├── bash-history-04-25.log
├── bash-history-18-04.log
├── bash-history-18-05.log
├── bash-history-18-06.log
└── bash-history-18-07.log


Un fichier par mois avec toutes les commandes passées (on peut aussi filtrer les commandes pour ne pas prendre en compte les LS ou autres CD mais je trouve que c’est pas l’idée).

Pour faire cela j’ai ajouté dans mon .bash_profile les lignes ci-dessous :

PROMPT_COMMAND='if [ "$(id -u)" -ne 0 ];\
then echo "$(date "+%Y-%m-%d.%H:%M:%S")\
$(pwd) $(history 1)" >> ~/.logs/bash-history-$(date "+%y-%m").log; fi'


Donc :

  • on créé une commande qui si uid ne vaut pas 0 s’exécute
  • on commance par un echo de la date
  • puis le répertoire courant
  • puis la commande passée
  • et on édite tout cela dans le fichier de logs
close up code coding computer

Photo by Digital Buggu on Pexels.com

Découvrez  [Linux] : pdftk pour fusionner des pdf et d'autres actions