それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

dateコマンドを見なおしてみる。dateコマンドオプションは使える

dateコマンドってシェルスクリプト作るときにはとても便利ですよね。
gnu のdateコマンドはよく使う例がいっぱい作っておくと便利です。

dateコマンドの基本的な使い方

ファイル名などでよく使う形式

takuya@air:~$ date -I
2012-05-31

すごくよく使う。 tar cvzf `date -l `.tgz とかすごくよく使う

これは次と同じ

takuya@air:~$ date   +"%Y-%m-%d"
2012-06-07

日付と時間

takuya@air:~$ date +"%Y-%m-%d#%H:%M:%S"
2012-07-13#21:59:33
UTCで表示。
takuya@air:~$ date -u
水  5 30 18:21:14 UTC 2012

RFC形式(HTTPヘッダなどで用いられる形式)で表示。

takuya@air:~$ date -R
Thu, 31 May 2012 03:22:02 +0900

組み合わせて使う。

UTCRFC形式(HTTPヘッダのやつ)で表示
takuya@air:~$ date -u -R
Wed, 30 May 2012 18:21:21 +0000

文字列を日付に変換

-d オプションで文字列を日付に変換。

昨日の日付
takuya@air:~$ date -d “yesterday”
水  5 30 03:25:01 JST 2012

今日の日付

takuya@air:~$ date -d "today"
木  5 31 03:25:32 JST 2012
n日まえの日付
takuya@air:~$ date -d "-3days"
月  5 28 03:25:28 JST 2012
明日
takuya@air:~$ date -d "tomorrow"
金  6  1 03:25:55 JST 2012
3日後(n日後)
takuya@air:~$ date -d "+3days"
日  6  3 03:26:06 JST 2012
来月の今日
takuya@air:~$ date -d "next month"
日  7  1 03:26:13 JST 2012
先月の今日
takuya@air:~$ date -d "last month"
火  5  1 03:26:18 JST 2012
先週
takuya@air:~$ date -d "last week"
木  5 24 03:26:22 JST 2012

これを使って月末の日付を求めるのは、基本だよね

takuya@air:~/ncurses-5.9$ date -d 'now - 1 month’
火  5  1 04:06:11 JST 2012

組み合わて使う。昨日の日付をフォーマット

takuya@air:~$ date -d "yesterday" +"%Y-%m-%d"
2012-06-06

ちなみに私が使っている dateコマンドはGNUcoreutilsにあります。

macだと標準じゃないので注意.
MacOSXでのインストール

brew install coreutils
export PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"


さらにもっと詳しい日付についての詳しい記述はココにある。