Unix 系 OS で コマンドの実行時により正確なタイムスタンプをつける

前回の記事の続編のようなもの
Unix 系 OS でコマンド実行間にタイムスタンプを付ける
前回の設定では精度が秒なので,ミリ秒やマイクロ秒が欲しいときに困る。

次のようにシェル組込みの trap コマンドを使うことでより細かい日時を正確にとれる
$ trap 'echo -e "\n$(date -I"ns")\n"' DEBUG
Bash でも Zsh でも trap は特定のシグナルのハンドラ(のようなもの)をシェルに設定するものだが, シグナルではなく DEBUG を指定するとコマンドやシェル関数の実行直前に設定したコマンドを実行してくれる。
ここでは,date(1)-I あるいは --iso-8601= でナノ秒単位の ISO 8601 形式のフォーマットを指定しているが,
date +"%F %T.%N"
のように + でフォーマットを與えるのでも良かろう。

ちなみにこれを自分の手元の zsh でやったらプロンプトの文字列に色々仕込みすぎてたせいでコマンド実行前にかなりタイムタンプが出てきた上にプロンプトが若干壊れました。

このブログの人気の投稿

GRUBとEFIの組み合わせで使うときのメモ またはEFI全般のtips

prnというフォルダが作れない理由がビル・ゲイツのあだ名というのはガセである件

BIOS+MBRなWindows7/8を、データコピーやデータ移動まったくなしで UEFI+GPTな環境に移行する