BASH – Rajouter la date dans l’historique des commandes

Après avoir eu un serveur de piraté j’ai pu voir les commande qu’avait passé le pirate, sans pouvoir savoir exactement quand il les avait utilisées (Il n’avait pas nettoyé l’historique). J’ai donc cherché sur Internet une solution sans trouver grand chose pour Bash.

Cette modification est totalement anodine pour le système et ne peut entraîner de perte de donnée.

Après avoir acheter un livre sur Bash j’ai trouvé mon bonheur. Il faut absolument avoir la version 3.0 ou plus de bash. Ubuntu Dapper Drake et les version suivante intègre d’office une version supérieur à la 3.0.

motarion@cyber-workstation:~$ bash --version
GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.

Pour activer la date dans l’historique il suffit de lancer la commande suivante:

export HISTTIMEFORMAT="%Y/%m/%d @ %T "

Voici le résultat:

  456  2009/04/18 @ 13:58:32 ping free.fr
  457  2009/04/18 @ 13:58:35 ls
  458  2009/04/18 @ 13:58:48 spas
  459  2009/04/18 @ 13:58:55 history

Attention: cette modification n’est pas persistente et si vous fermez le SHELL actuel la modification sera perdue!

Pour rendre cette modification persistente il y a deux solutions:

  • Modifier le fichier .bashrc de chaque utilisateur
  • Modifier la configuration Globale de Bash

    I – Pour la première solution, il faut savoir que les nouveaux utilisateur ne profiteront pas de la modification. Si vous êtes le seul à vous connecter dans ce cas c’est la solution la plus simple. Lancez l’éditeur de texte que vous préférez puis copier la ligne suivante en fin de fichier:

    export HISTTIMEFORMAT="%Y/%m/%d @ %T "

    Édition du fichier:

    nano .bashrc

    II – La seconde solution permet de l’activer pour tout le système, même pour les nouveaux utilisateurs:

    sudo nano /etc/bash.bashrc

    Puis copiez en fin de fichier la commande suivante:

    HISTTIMEFORMAT="%Y/%m/%d @ %T "

    Vous pourrez alors constater que la modification est active pour tous les nouveaux Shell que vous ouvrirez.

    PS: Cette astuce fonctionne aussi sur Debian depuis la version Etch bien que le chemin de configuration de bash puisse changer.

    12 Replies to “BASH – Rajouter la date dans l’historique des commandes”

      1. Pour voir l’historique des commandes tapés dans le Shell, il suffit d’utiliser la commande “history”. Attention toutefois la liste peut être longue 😉

        Autant utiliser “history | less” s’il y a trop d’entrées.

    1. On remarque que ça ne fonctionne qu’après la modif. Les commandes précédentes dans l’historique sont datées de la date de la première commande “datée”.

      On peut voir l’effet dans le fichier .bash_history :
      ————–
      cd /etc/
      ls
      vi bash.bashrc
      sudo vi bash.bashrc
      #1240126142
      h
      #1240126149
      history
      #1240129316
      less .bash_history

    2. Merci pour l’astuce. On peut faire la même chose pour “root” (utile quand on est sous Debian et autres distribs sans sudo).

      Éditer le fichier en tant que “root” (su + passwrd) :

      ~/.bashrc

      @+

    3. Merci beaucoup pour ce billet!

      j’ai toujours voulu avoir un rappel des dates de lancement de commande (sans jamais vraiment chercher), maintenant c’est le cas 😉

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    This site uses Akismet to reduce spam. Learn how your comment data is processed.