Linux・UNIXのbashで使えるhistoryコマンドの実行結果に日時(タイムスタンプ)を出力させる

LinuxやUNIXでbashを利用しているならば、historyコマンドにお世話になっている人も多いだろう。
そんなhistoryコマンド、デフォルトでは基本的にコマンドの実行時間は記録されない。

20150410_000002

test@ubuntu-server:~$ history | tail -10
368  screen
369  vim .screenrc
370  screen
371  ls -la
372  screen
373  vim .screenrc
374  screen
375  history | tail -10
376  clear
377  history | tail -10
test@ubuntu-server:~$

そんなhistoryコマンドの実行結果でタイムスタンプを出力させる場合は、「.bash_rc」に以下の一行を追記する。
これで、追記以後のログインからコマンドの実行時間を記録するようになる。

Sponsored Links

export HISTTIMEFORMAT='%F %T '

20150410_000003

test@ubuntu-server:~$ history | tail -10
456  2015-04-10 20:17:50 cat .bash_rc
457  2015-04-10 20:18:03 cat ~/bash_history
458  2015-04-10 20:18:06 cat ~/.bash_history
459  2015-04-10 20:24:33 exit
460  2015-04-10 21:33:26 env
461  2015-04-10 21:33:30 ls -la
462  2015-04-10 21:33:33 history
463  2015-04-10 21:34:06 history | tail -10
464  2015-04-10 21:34:11 clear
465  2015-04-10 21:34:12 history | tail -10

 

なお、同一ユーザーで複数のウィンドウを開いている場合、historyの内容が共有されず残らない。
このため、以下の内容を.bashrcに記述しておくといいだろう。

export HISTCONTROL=ignoredups:erasedups # historyに重複したコマンドを記録しない
export HISTSIZE=100000                  # 現在のセッションで利用しているhistoryの履歴数を定義する
export HISTFILESIZE=100000              # 「.bash_history」で記録する履歴数を定義する
shopt -s histappend                     # 「.bash_history」への記録方式を追記にする
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

これで、同一ユーザに複数ウィンドウで同時にログインしていた場合でもログが残るようになった。


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

This article has 1 comments

  1. Pingback: Linuxで全コマンドの実行履歴を記録する方法いろいろ | 俺的備忘録 〜なんかいろいろ〜

Leave a Comment

メールアドレスが公開されることはありません。

*