web-dev-qa-db-ja.com

Linuxコマンドライン履歴を日付で取得する

1週間前の特定の日にbashコマンドラインに入力した内容を確認したい。コマンドライン履歴を取得する方法はありますか?以下のようなものでしょうか?

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

デフォルトでは、Historyはコマンドを実行した時刻をログに記録しますが、表示はしません。これは、Historyコマンドを実行すると、HISTTIMEFORMATという名前の環境変数が検索され、時間のフォーマット方法が指定されるためです。値がnullまたは設定されていない場合、デフォルトでは何も表示されません。

時間のある例

[[email protected] ~]$ export HISTTIMEFORMAT='%F %t '
[[email protected] ~]$ 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
....

しかし、それだけではありません。 HISTTIMEFORMATstrftime値(これは here btwを見つけることができます)を取るので、あらゆる種類の魔法のようなことができます。しかし、あなたがやりたいことのために、次のことが機能します。

[[email protected] ~]$ export HISTTIMEFORMAT='%F %T %t'
[[email protected] ~]$ 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

ターミナルで新しいタブを開くか、ログアウトしてログインすると、変更が表示されます。

32
qweet