2013年11月29日金曜日

historyコマンドに日時(時刻)を表示させる。

historyコマンドで表示されるコマンド実行履歴に、実行時のタイムスタンプ情報を付加する。

historyコマンドは、デフォルトでコマンドの実行日時情報が記録されません。

[root@1803-zm05 ~]# history
    1  13/12/31 23:59:56  cd ~
    2  ls -la
    3  du -h /home
    4  fdisk -l

これにコマンドの実行日時情報を付加する場合は、HISTTIMEFORMAT環境変数を設定します。

[root@1803-zm05 ~]# touch /etc/profile.d/history.sh
[root@1803-zm05 ~]# cat <<EOF >> /etc/profile.d/history.sh
> HISTSIZE=10000
> HISTFILESIZE=10000
> HISTTIMEFORMAT='%y/%m/%d %H:%M:%S  '
> HISTIGNORE=history
> EOF

例では/etc/profile.d/ディレクトリにhistory.shファイルを作成しました。
設定した環境変数は以下

HISTSIZE
記録される実行コマンドの最大値
HISTFILESIZE
記録される実行コマンドの最大値(基本的にHISTSIZEと同値を指定します)
HISTTIMEFORMAT
今回の題材でもある実行日時の書式設定
HISTIGNORE
履歴から除外するコマンド(例では、history。複数指定の場合は:で区切り指定します。 =history:whoami)

他にもHISTCONTROLなどを設定可能です。


上記の設定通りの場合は、/etc/profile.d/history.shファイルは以下のように設定されているはずです。

[root@1803-zm05 ~]# cat /etc/profile.d/history.sh
HISTSIZE=10000
HISTFILESIZE=10000
HISTTIMEFORMAT='%y/%m/%d %H:%M:%S  '
HISTIGNORE=ls:history

HISTTIMEFORMATの値の末尾に半角スペースで間を設けているのは、historyの履歴追記時に実行コマンドと実行日時がくっついてしまわないようとの調整です。(*≧∀≦*)



上記の設定以降のhistory表示フォーマットは次のように表示されます。

[user@1803-zm05 ~]# history
    1  14/01/01 23:59:56  cd ~
    2  14/01/01 23:59:57  ls -la
    3  14/01/01 23:59:58  du -h /home
    4  14/01/01 23:59:59  fdisk -l