プロンプトに時間表示
お仕事では作業ログは大変重要な証拠となる。各コマンドの実行した時間も分かるとより良い証拠となる。しかし、各コマンド実行前後にdate
コマンドを打つのは面倒だ。
できれば、自動で。そう、プロンプトなんかに表示されると大変嬉しい。Linuxなんかだと高級なbashやzshがあるのでプロンプトに\t
や%T
があるので楽なのだが、残念ながらAIXデフォルトのシェルであるkshには現在時間に置換してくれる特殊文字が無い。
POSIXは辛いよ...と泣き言を言っても仕方ないので、苦肉の策。trap
を用いる。
trap
は主にシグナルを受け取った時の挙動を記述するコマンドだが、引数のsignalにDEBUG
を指定するとコマンド実行後の動作を指定できるのだ。
${HOME}/.kshrcに
.... function setPrompt { TIME=$( date +"%Y/%m/%d %T" ); PS1="${TIME} ${USER}@$( hostname ):${PWD} " } trap 'setPrompt' DEBUG
ってな感じのものを追加すればプロンプトに時間が表示される。
ただ、bashやzshのそれとは異なり、あくまでコマンドが実行された後trapが発動するので空行の場合、時刻の変化が無い。若干癖のある挙動だが無いよりはマシだろう。