Recuperar histórico da linha de comandos do Linux por data

17

Quero ver o que eu digitei na minha linha de comando do bash em um determinado dia da semana passada. Existe uma maneira de recuperar o histórico da linha de comando? Algo como abaixo, talvez?

> history --include-date | grep 2012-02-27`
aaa
fonte
não se ele já não foi ativado: cyberciti.biz/faq/unix-linux-bash-history-display-date-time
RobotHumans
se você estiver usando zsh:history -E
Vahid

Respostas:

27

Por padrão, Historyregistra o horário em que você executou um comando, mas não o exibe. A razão para isso é que, quando você executa o Historycomando, ele procura uma variável de ambiente chamada HISTTIMEFORMAT, que informa como formatar a hora. Se o valor estiver nullou não definido, por padrão, ele não será exibido a qualquer momento.

Um exemplo com algum tempo

[qweet@superbox ~]$ export HISTTIMEFORMAT='%F %t '
[qweet@superbox ~]$ history
    1  2012-03-06        su -
    2  2012-03-06        jbach@mobiletribe.net
    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
....

Mas isso não é tudo. Desde que o HISTTIMEFORMATleva strftimevalores (que você pode encontrar aqui btw), você pode fazer todo tipo de coisas mágicas. Mas, para o que você deseja fazer, o seguinte funciona.

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

Além disso, se você deseja que seu HISTTIMEFORMAT persista, considere anexá-lo ao seu bashrcgosto;

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

Você verá as alterações quando abrir uma nova guia no terminal ou sair e entrar.

qweet
fonte