こんにちはー、かけるです。
Linuxのdateコマンドをちょいちょい使う機会があるものの、オプションの内容をところどころ忘れていることが多い……。
そこで、dateコマンド実行による日時情報の出力と使用方法についてまとめます。
dateコマンドとは
dateコマンドは特定の日時時報を取得したり、設定したりするときに使用するコマンドです。
本ページでは日時情報の取得についてをまとめます。
dateコマンドの使用例
現在の日時を取得
$ date
Wed Jul 6 20:13:14 JST 2022
dateをオプションなしで実行した場合、このように曜日、月、日、時、分、秒、タイムゾーン、年が出力されます。
出力する内容は、以下のようにフォーマットを指定することでカスタマイズすることができます。
$ date +%Y%m%d
20220706
$ date +%Y-%m-%d
2022-07-06
$ date "+%Y-%m-%d %H:%M:%S"
2022-07-06 20:23:30
また、以下のように%の直後に-を入れて実行することで、月や日を1桁で表示することもできます。
$ date +%Y-%-m-%-d
2022-7-6
現在からn日後、n日前の日時を取得
# 1日後の日付を取得
$ date +%Y%m%d --date '1 day'
20220707
# 1日前の日付を取得
$ date +%Y%m%d --date '1 day ago'
20220705
# 1ヶ月後の日付を取得
$ date +%Y%m%d --date '1month'
20220806
# 1年後の日付を取得
$ date +%Y%m%d --date '1year'
20230706
nヶ月後(前)、n年後(前)の日付を取得する場合、月の日数やうるう年に注意する必要があります。
# 5/31の1ヶ月後を表示する例(6/31は存在しないため、7/1が取得される)
$ date "+%Y-%m-%d" --date "2022-05-31 1month"
2022-07-01
# 2020/02/29の1年後を表示する例(2021年はうるう年ではないため、2021/03/01が取得される)
$ date "+%Y-%m-%d" --date "2020-02-29 1year"
2021-03-01
また、少しややこしい気もしますが、以下のように負数を指定することもできます。
# -1日後(=1日前)の日付を取得
$ date +%Y%m%d --date '-1 day'
20220705
1970年01月01日 0:00:00(UTC)からの経過秒数を取得
$ date +%s
1657108448
# 経過秒数を年月日_時分秒に変換
$ date +%Y%m%d_%H%M%S --date="@1657108448"
20220706_205408
現在時刻をミリ秒/マイクロ秒/ナノ秒単位で取得
# ナノ秒
$ date +%Y%m%d_%H:%M:%S.%N
20220706_21:12:05.300375100
# マイクロ秒
$ date +%Y%m%d_%H:%M:%S.%6N
20220706_21:12:07.676913
# ミリ秒
$ date +%Y%m%d_%H:%M:%S.%3N
20220706_21:12:10.511
dateコマンドの使用例(応用)
日時情報を含むディレクトリの作成
$ mkdir test_`date +%Y%m%d_%H%M%S`
$ ll
total 0
drwxrwxrwx 1 xxx xxx 4096 Jul 6 21:44 ./
drwxrwxrwx 1 xxx xxx 4096 Jul 3 09:53 ../
drwxrwxrwx 1 xxx xxx 4096 Jul 6 21:44 test_20220706_214426/
上記のように`date ~~`を付与することで、ディレクトリを日時を含んだ名前で作成することができます。
「’」や「”」ではなく「`」で囲むということに注意が必要です。
以上です。それでは、また(・ω・)ノシ
コメント