Mac の bash で date を使って先月の今日の日付を取ろうとしたらハマった

bash で先月の日付を取ろうとしたらどうしても取ることができません。

日付を取得する – UNIX & Linux コマンド・シェルスクリプト リファレンス

1
date -d '1 days ago'

Twitter でアドバイスを頂きました。どうやら MacOSX の date コマンドには -v オプションがあるので date -v-1m +”%Y-%m-%d” で上手く取得することができるそうです。

1
echo `date -v-1m +"%Y-%m-%d"`

UNIXコマンドにはだいたい3系統(GNU、BSD、SVR4)あり多少癖があるとのことです。Mac OS X は BSD なのでこのような結果となっております。BSD と GNU coreutils でオプションが少しだけ違うので大変ということですね。詳しい方は port で GNU スタイルのコマンドに置き換えてるそうです。

下記の記事も参考になりました。

UNIXの部屋 コマンド検索:date (*BSD/Linux)

今回はじめて UNIX コマンドの3系統 GNU、BSD、SVR4 を意識しました。今回の件をきっかけに、今後この系統というのを意識していくようになると思います。この GNU とか BSD ってのはちょくちょく目にはしてたんですが、全然意識していませんでした。

コメント

コメントは受け付けていません。