macのdate表現で困った
macユーザーになってまだ3ヶ月の私にとっては、bashのdateコマンドすら手強い相手でした。
今回、目的にあった形で日付の表現をするのに、小一時間以上かかってしまい軽く自分にショックを受けてしまいました。
他のmacビギナーにとっても日付の表現で時間を多く無駄にしてしまうことはショッキングなことだと思ったので、ここにナリッジをまとめておきたいと考えました。
そもそも:macのコマンドラインで日付表現をしたかったわけ
macにはautomatorという非常に便利なツールがあることを最近になって知りました。
これを使えば、macに最初から入っているツールを組み合わせて、自分好みの自動化アプリケーションを簡単に作ることができます。
今回は、毎日の日記を自動で作成するアプリケーションを作るために、bashで日付表現を使う必要がありました。
date -d '1 days'では明日を表せない?
検索ボックスで、「bash 日付」と打ってでてきたのが、見出しのワンライナーでした。
date -d '1 days'
これで、明日の日付を取得して自動でファイルの作成ができる!
と思ったら...これがうまく行かないのです。
というのも、この表記はGNUとよばれるパターンの表記方法だったのです。
GNUって?
GNUはwindowsのコマンドラインでの書き方になります。
ところが、私はmacユーザー。
どうりでこの表現ができないわけですね。
windowsがGNUならMacは
もちろんmacにも明日の表現方法はあります。
macの表現方法はBSDと呼ばれる表記方法になるそうです。
BSD表記になると、明日を表すコマンドは以下の通り。
date -v+1d
よかった!macでも簡単に表現できました!
こうして、``(バッククォーテ)を組み合わせたところ、
念願の「本日付けのファイルをコピーして明日の日付のファイルを作成する」ことができました!
cp `date +%Y%m%d`.txt `date -v+1d +%Y%m%d`.txt