12

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

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

1 ответ1

23

По умолчанию 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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .