前回の記事の続編のようなもの
次のようにシェル組込みの
ここでは,
ちなみにこれを自分の手元の zsh でやったらプロンプトの文字列に色々仕込みすぎてたせいでコマンド実行前にかなりタイムタンプが出てきた上にプロンプトが若干壊れました。
Unix 系 OS でコマンド実行間にタイムスタンプを付ける前回の設定では精度が秒なので,ミリ秒やマイクロ秒が欲しいときに困る。
次のようにシェル組込みの
trap
コマンドを使うことでより細かい日時を正確にとれる$ trap 'echo -e "\n$(date -I"ns")\n"' DEBUGBash でも Zsh でも trap は特定のシグナルのハンドラ(のようなもの)をシェルに設定するものだが, シグナルではなく DEBUG を指定するとコマンドやシェル関数の実行直前に設定したコマンドを実行してくれる。
ここでは,
date(1)
に -I
あるいは --iso-8601=
でナノ秒単位の ISO 8601 形式のフォーマットを指定しているが,date +"%F %T.%N"のように + でフォーマットを與えるのでも良かろう。
ちなみにこれを自分の手元の zsh でやったらプロンプトの文字列に色々仕込みすぎてたせいでコマンド実行前にかなりタイムタンプが出てきた上にプロンプトが若干壊れました。