ターミナルコマンドの「date」でミリ秒を表示するまでの道のり

calendar-660670_1280
LINEで送る
Share on GREE
Share on LinkedIn

Linuxコマンドでdateと入力すれば
「 2015年 6月 8日 月曜日 23:28:40 JST」
のように、日付が返ってくる。

shellでどこまでツールを作れるかtry

今までは主にPHPでツールを作ってきたので、大体の事は問題なくできてきた。
ライブラリなども豊富にあるプログラム言語では、問題などあまり感じたことが無かった。

今回はshellだけを用いて計測ツールを作る上で、どうしてもミリ秒が取得したくなった。
shellと言っても、awkやsedなどの言語も組み合わせで使うことは可能だ。
何故なら大体のターミナルコマンドには常備されているからだ。

今回行いたいことは、「wgetでwebサイトからデータ取得をした際に、どのくらいの時間がかかったかミリ秒単位で計測したい」というものだ。

あっけなく解決・・・?!

すこしググるとLinuxコマンドでのミリ秒取得は、Nオプションを使うことで「ナノ秒」の取得ができる事が判明した。

説明するまでもないが、”+%N”で9桁のマイクロ秒が表示され、
”+%6N”で6桁、”+%3N”で3桁という具合だ。
なんて簡単なんだ・・・

想定外の自体が発生

このまま問題なく進む予定だったが、自宅の愛器MacBookAirのターミナルコマンドでは、Nオプションが動作しないことが判明

なんじゃこりゃ、「N」って表示される・・・文字列扱い・・・どうやらdateコマンドはバージョンによって、Nオプションがないそうだ。

会社のmacでも試したが、OSは最新なのに、dateコマンドは古いバージョン・・・orz

Debian系もCentOS系も問題なくナノオプションが使えるのに、BSD系のmacは使えないという事のようだ。

Macに対応

macは「gdate」というモジュールを使う事でlinuxの「date」コマンドと同じ事ができるようだ。
brew で「coreutil」モジュールをインストールすると、一緒に入るようなので、入れてみる

※brewのインストールは下のURLを参照ください。
http://brew.sh/index_ja.html

できました。
さて、shellでmacとlinuxの分岐でも書くとするか。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*