Получить историю командной строки Linux по дате

20

Я хочу посмотреть, что я набрал в командной строке bash в определенный день неделю назад. Есть ли способ получить историю командной строки? Возможно, что-то вроде ниже?

> history --include-date | grep 2012-02-27`
ааа
источник
нет, если он еще не был включен: cyberciti.biz/faq/unix-linux-bash-history-display-date-time
RobotHumans
если вы используете zsh:history -E
Vahid

Ответы:

32

По умолчанию Historyзаписывает время, когда вы выполнили команду, но не отображает ее. Причина этого в том, что когда вы запускаете Historyкоманду, она ищет переменную окружения HISTTIMEFORMAT, которая указывает, как форматировать время. Если значение установлено nullили не установлено, то по умолчанию оно не отображается ни разу.

Пример с некоторым временем

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

Но это не все. Так как HISTTIMEFORMATпринимает strftimeзначения (которые вы можете найти здесь, между прочим), вы можете делать все виды волшебных вещей. Но для того, что вы хотите сделать, работает следующее.

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

Кроме того, если вы хотите, чтобы ваш HISTTIMEFORMAT сохранялся, рассмотрите возможность добавления его к себе bashrcследующим образом;

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

Вы увидите изменения, когда откроете новую вкладку в терминале или выйдете из системы.

qweet
источник