Pour avoir un peu d'intimité avec l'historique Bash

Image illustrant l'article : Pour avoir un peu d'intimité avec l'historique Bash

Pour avoir un peu d'intimité avec l'historique Bash

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).

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.

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

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”

Capture d’écran de l’historique de commande dans le terminal Bash

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

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

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

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.

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.