web-dev-qa-db-fra.com

Récupérer l'historique de la commande Linux par date

Je veux voir ce que j'ai tapé sur ma ligne de commande bash un certain jour il y a une semaine. Existe-t-il un moyen de récupérer l'historique de la ligne de commande? Quelque chose comme ci-dessous, peut-être?

> history --include-date | grep 2012-02-27`
13
aaa

Par défaut, History enregistre l'heure à laquelle vous avez exécuté une commande, mais ne l'affiche pas. La raison en est que lorsque vous exécutez la commande History, celle-ci recherche une variable d'environnement appelée HISTTIMEFORMAT qui lui indique comment formater l'heure. Si la valeur est null ou non définie, alors, par défaut, aucune heure n'est indiquée.

Un exemple avec un peu de temps

[qweet@superbox ~]$ export HISTTIMEFORMAT='%F %t '
[qweet@superbox ~]$ history
    1  2012-03-06        su -
    2  2012-03-06        [email protected]
    3  2012-03-06        mysql
    4  2012-03-06        ll
    5  2012-03-06        cd /opt/
    6  2012-03-06        ll
    7  2012-03-06        exit
    8  2012-03-06        ll
    9  2012-03-06        ls -lsa
   10  2012-03-06        cd ../
   11  2012-03-06        ll
   12  2012-03-06        ll
....

Mais ce n'est pas tout. Puisque HISTTIMEFORMAT prend strftime valeurs (que vous pouvez trouver ici btw), vous pouvez faire toutes sortes de choses magiques. Mais pour ce que vous voulez faire, ce qui suit fonctionne.

[qweet@superbox ~]$ export HISTTIMEFORMAT='%F %T %t'
[qweet@superbox ~]$ history | grep -e "2012-03-06 14:48"
 1006  2012-03-06 14:48:05      export HISTTIMEFORMAT='%F %T %t'
 1007  2012-03-06 14:48:07      history
 ...

De même, si vous souhaitez que votre HISTTIMEFORMAT persiste, envisagez de l’ajouter à votre bashrc like so;

echo 'HISTTIMEFORMAT="variables here"' >> ~/.bashrc

Vous verrez les modifications lorsque vous ouvrez un nouvel onglet dans le terminal ou que vous vous déconnectez et entrez.

26
qweet