Я хочу посмотреть, что я набрал в командной строке bash в определенный день неделю назад. Есть ли способ получить историю командной строки? Возможно, что-то вроде ниже?
> history --include-date | grep 2012-02-27`
history -E
Я хочу посмотреть, что я набрал в командной строке bash в определенный день неделю назад. Есть ли способ получить историю командной строки? Возможно, что-то вроде ниже?
> history --include-date | grep 2012-02-27`
history -E
Ответы:
По умолчанию 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
Вы увидите изменения, когда откроете новую вкладку в терминале или выйдете из системы.