Passer au contenu principal

La commande history sous linux

I. Présentation

La commande history est une commande POSIX (commune à toutes les distributions type Unix) qui permet de remonter dans les commandes que nous avons passées.

Il vous arrive probablement souvent de remonter vos commandes pour les réexecuter avec le "UP" (flèche du haut) de votre clavier, vous faites ainsi défiler l'ensemble des commande que vous avez exécutées. Cela est possible grâce à "history". En effet, quand vous passez une commande, celle-ci est stockée dans un fichier du nom de ".history" du répertoire "home/$User".Si l'utilisateur "paul" tape les commandes "ls"et "cd /", celles-ci seront stockées dans le fichier "/home/Paul/.history" et quand Paul voudra remonter dans ses commandes, c'est le processus et le fichier ".history" qui l'aideront.

II. La commande

Tapez la commande suivante pour voir vos dernières commandes passées:

history

Les commandes que vous verrez seront alors uniquement celles de l'utilisateur avec lequel vous êtes connecté. Pour voir les commandes d'un autre utilisateur, il faut aller ouvrir le fichier ".history" de son répertoire, dans une architecture de droit normale, vous n'y serez bien sur pas autorisé (mis à part si vous êtes root).

III. Le nombre d'entrées

Il faut savoir qu'history garde les 500 commandes (change selon les version et les distributions) les plus récentes et commence à effacer les plus anciennes une fois que le nombres maximum est dépassé.

Il est possible d'agrandir le nombre de commande stocké mais cela risque de ralentir votre shell.

Pour voir le nombre de commande qu'history peut stocker, entrez la commande:

echo $HISTSIZE

Pour changer ce nombre à 300 (par exemple):

export HISTSIZE=300

IV. Effacer ses traces

Pour vider votre fichier ".history" afin que root ou un utilisateur avec certains privilèges ne puisse plus voir les commandes que vous avez entrées, utilisez la commande:

history -c
  • -c : clean

Un autre moyen est de supprimer le fichier ".history" dans votre répertoire "/home/user":

rm /home//.history

Il faut savoir que sous Linux, quand vous mettez un "." devant un fichier, cela le rend invisible. Cela explique pourquoi un simple "ls" n'affiche pas ce fichier, il faut utiliser "ls -a".

V. Utilisations supplémentaires

history permet comme je vous l'ai dit de remonter dans les commandes que vous avez entrées. Quelques raccourcis sont disponibles en plus du simple "UP" ou "DOWN" pour naviguer dans ses précédentes commandes. Cette commande permet de remonter dans ses commandes de manière plus rapide:

!n -3

Par exemple avec -3 pour retrouver l'avant avant avant dernière commande tapée. Il est ainsi possible de remonter jusqu’à $HISTSIZE commande:

!n 3

A l'inverse, sans le "-", on retrouve la troisième commande tapée. Cela perd de son intérêt quand nous avons tapé beaucoup de commandes car elles s'effacent une fois que l'HISTSIZE est dépassée.

Exemple : !3 --> lance la commande de la ligne 3

La commande suivante permet de trouver les commandes contenant un mot précis:

!?mot?

Par exemple pour retrouver les commandes qui contiennent le mot "doc" nous entrerons:

!?doc?

Beaucoup d'autres raccourcis peuvent être utilisés grâce à history, je vous invite à aller dans le man d'history pour y voir l'ensemble des possibilités:

man history