1週間前の特定の日にbashコマンドラインに入力した内容を確認したい。コマンドライン履歴を取得する方法はありますか?以下のようなものでしょうか?
> history --include-date | grep 2012-02-27`
デフォルトでは、History
はコマンドを実行した時刻をログに記録しますが、表示はしません。これは、History
コマンドを実行すると、HISTTIMEFORMAT
という名前の環境変数が検索され、時間のフォーマット方法が指定されるためです。値がnull
または設定されていない場合、デフォルトでは何も表示されません。
時間のある例
[qweet@superbox ~]$ export HISTTIMEFORMAT='%F %t '
[qweet@superbox ~]$ 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
....
しかし、それだけではありません。 HISTTIMEFORMAT
はstrftime
値(これは here btwを見つけることができます)を取るので、あらゆる種類の魔法のようなことができます。しかし、あなたがやりたいことのために、次のことが機能します。
[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
ターミナルで新しいタブを開くか、ログアウトしてログインすると、変更が表示されます。