Shell

読み込み活用

まぁ簡単といえば簡単なのだけど。dateの活用大会ですな。

date -rでタイムスタンプとる。

date -r ファイル名でとれるし好きなフォーマットで出力もできるわけだけど、こんな使い方もあるよ?

24時間経過したかどうか判定するには?

前回実行時に何かファイルを作っていれば、現在のタイムスタンプとの差分がとれる。

A=`date -r ファイル "+%s"` B=`date "+%s"`

これの差分が86400秒以上かどうかで判定すればいいだろう。

日付が違っていればOKなら?

これはもっと簡単だ。 date "+%d" を比較して差分があれば日付が変わっているってことだから。

書き込み活用

あまりない事かもしれないが、かつて私は時間設定を有効活用していた。自分のサイトの原稿をテキストで管理していたのだけど、テキストのタイムスタンプをそのまま更新日付にすると問題があったので、原稿のヘッダに更新日付を記録しておき、その日時にタイムスタンプをあわせるという手段をとっていたのである。

そのためには「テキストに書かれた日付をbashで解釈」することと「指定日付にタイムスタンプを設定」が必要になる。

テキストに書かれた日付をbashで解釈

date -d で可能。

指定日付

date -d "2000/01/01"

英語で指定

date -d "yesterday"
date -d "3 days ago"
date -d "last year"

「昨日」「3日前」「去年」などと文語的に指定できる。

ただし、うるう年の2/29に来年などとやると、3/1になる。

$ date -d "next year 02/29" 2025年 3月 1日 土曜日 00:00:00 JST $

この認識まわり、かなり柔軟性が高いので、できれば実環境で遊んでみてほしい。
ゼロサプレスしても通るし、少々英語としておかしくても意味が通れば通じるようだ。
おそらくログ解析など、いろんな場面で必要とされたのだろうけど。
私も「こんなん通じるの?」と英語もろくに使えんのに last year 02/04 とかやったら普通に認識されちゃって驚いた経験がある。 日時形式をいじってみたり、いろいろ遊んでみてほしい。お勧めである。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS