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. 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
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Fondateur d'IT-Connect.fr et d'Information-security.fr. Auditeur sécurité chez Amossys.

    mickael has 478 posts and counting.See all posts by mickael

    6 pensées sur “La commande history sous linux

    • Hello,

      Vraiment très bien ton site, mes félicitations !

      Quelques précisions car c’est toujours mal expliqué :
      history -c : N’enregistre pas les commandes tapées durant la session en cours dans le fichier .history
      rm /home/.history : Supprime effectivement l’history mais les commandes tapées durant la session en cours seront ajoutées dans le fichier .history à la déconnexion

      Très pratique à rajouter dans le .bashrc :
      # Activation date et heure dans la commande history #
      HISTTIMEFORMAT= »[%d/%m/%Y %T]  »
      Tcho !

      Répondre
    • Merci pour le tuto.

      Cela m’a permis d’approfondir mes connaissances sur des outils
      dont je me sers quotidiennement.

      Je me demande certaines commande Linux(printenv , export etc…
      En plus,la commande executee a partir de fichier script comme php,perl avec shell_exec() ) ne sont pas stockees dans le fichier .history.
      Vous avez des idees sur ce probleme?

      Répondre
    • Bonjour,

      J’aimerai avoir une explication de la gestion du fichier .bash_history.

      Je vous remercie;
      Anas Taib

      Répondre
    • Pour obtenir l’aide sur la commande history, ce n’est pas `man` qu’il faut utiliser, mais `help` car history est un builtin (de bash par exemple), pas un programme. Le `man history` n’a pas vraiment de rapport avec le builtin history en fait.

      Répondre
    • Avec votre aide j’aimerais preparer memoire avec vous, un jour de devenir administrateur reseau en linux. Je serais ravi d’apprendre avec vous

      Répondre

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

     

    Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.