Comment gérer l'historique des commandes Bash sous Linux : Guide complet
Avoir un peu d’intimité pour faire ses propres expériences c’est toujours bien. C’est pourquoi il peut être utile de mieux comprendre comment fonctionne le fichier d’historique bash sous Linux et savoir y effacer les machins un peu honteux, voire les lignes de commandes entrées par erreur avec des mots de passe en clair (bouuuuh, c’est pas bien).
Comprendre l’historique Bash
D’abord, il faut savoir que l’historique contient uniquement vos propres commandes. Toutefois l’utilisateur root peut voir un historique global. Normal, c’est lui le patron ! Ce qui d’ailleurs est pratique pour savoir qui a fait quoi sur la machine.
Commandes de base pour gérer l’historique
Pour consulter votre historique, entrez simplement la commande :
history
Vous verrez alors les dernières commandes, numérotées.
Pour supprimer une ligne gênante, il suffit donc d’utiliser le paramètre -d comme ceci :
history -d 421
Et pour tout nettoyer :
history -c
Afficher la date et l’heure des commandes
Pour aller plus loin, si vous voulez voir la date et l’heure d’exécution de chaque commande, vous pouvez entrer cette commande export :
export HISTTIMEFORMAT='%F %T '
%F équivaut à la date au format %Y-%m-%d et %T équivaut à l’heure au format (%H:%M:%S).
Puis refaites un “history”
Ignorer certaines commandes dans l’historique
Si vous remarquez beaucoup de commandes parasites, vous pouvez aussi indiquer à history de ne pas en tenir compte et de ne pas les logger. Pour cela, utilisez le paramètre export comme ceci avec la commande concernée. Par exemple si je veux masquer tout les “ls -l”, les commandes pwd et la commande history elle-même, il suffit de faire :
export HISTIGNORE='ls -l:pwd:history'
Et pour remettre ça à zéro tout cela, il suffit de laisser un HISTIGNORE vide ou avec des commandes différentes.
export HISTIGNORE=''
Ou faire un
unset export HISTIGNORE
Gestion des commandes dupliquées
Ensuite, si vous voulez ignorer les commandes dupliquées dans le fichier, il faut faire un :
export HISTCONTROL=ignoredups
Et comme ci-dessus, pour remettre à zéro le paramètre, faites un
unset HISTCONTROL
Configuration permanente
Maintenant si certains de ces paramètres vous plaisent vous pouvez les configurer pour qu’ils soient permanents. Éditez ou créez le fichier .bash_profile et ajoutez y les paramètres voulus:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export HISTCONTROL=ignoredups
export HISTIGNORE='ls -l:pwd:history'
PATH=$PATH:$HOME/bin
export PATH
Désactiver complètement l’historique
Enfin, pour désactiver le logging des commandes, vous pouvez aussi ajouter dans le fichier .bash_profile le paramètre
export HISTSIZE=0
Notez que si vous l’ajoutez au niveau du fichier /etc/profile, ce sera désactivé pour tous les users sur tout le système. Je ne le recommande pas spécialement, mais si vous opérez un serveur qui nécessite un bon niveau de confidentialité, c’est utile.
Consulter l’historique d’un utilisateur spécifique
Enfin, pour consulter l’historique d’un utilisateur précis, il suffit d’aller voir le .bash_history qui se trouve dans son répertoire home comme ceci :
cat /home/UTILISATEUR/.bash_history
Voilà…
Si vous voyez d’autres trucs à rajouter, n’hésitez pas, les commentaires sont ouverts.