Comment gérer l'historique des commandes Bash sous Linux : Guide complet

par Korben -

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.