Date コマンドは、日付をいくつかの形式で表示するのに役立ちます。また、システムの日付と時刻を設定することもできます。
この記事では、date コマンドの使用方法に関するいくつかの例を実用的な例とともに説明します。
date コマンドをオプションなしで実行すると、以下のように現在の日付と時刻が表示されます。
$ date Mon May 20 22:02:24 PDT 2013
1. –date オプションを使用して文字列値から日付を表示
文字列に静的な日付または時刻の値がある場合、以下に示すように、-d または –date オプションを使用して、入力文字列を日付形式に変換できます。
これは現在の日付と時刻の値を使用しないことに注意してください。代わりに、文字列として渡す日付と時刻の値を使用します。
次の例では、入力日付のみの文字列を取り、出力を日付形式で表示します。時刻を指定しない場合、時刻には 00:00:00 が使用されます。
$ date --date="12/2/2014" Tue Dec 2 00:00:00 PST 2014 $ date --date="2 Feb 2014" Sun Feb 2 00:00:00 PST 2014 $ date --date="Feb 2 2014" Sun Feb 2 00:00:00 PST 2014
次の例では、日付と時刻の文字列を入力し、出力を日付形式で表示します。
$ date --date="Feb 2 2014 13:12:10" Sun Feb 2 13:12:10 PST 2014
2. –file オプションを使用してファイルから日付パターンを読み取る
これは、上で説明した -d または –date オプションに似ています。ただし、複数の日付文字列に対して実行できます。さまざまな静的な日付文字列を含むファイルがある場合は、以下に示すように -f または –file オプションを使用できます。
この例では、datefile に 2 つの日付文字列が含まれていることがわかります。 datefile の各行は date コマンドによって解析され、各行の日付が出力されます。
$ cat datefile Sept 9 1986 Aug 23 1987 $ date --file=datefile Tue Sep 9 00:00:00 PDT 1986 Sun Aug 23 00:00:00 PDT 1987
3. –date オプションを使用して相対日付を取得
date コマンドを使用して、相対値を使用して将来の日付を取得することもできます。
たとえば、次の例は次の月曜日の日付を取得します。
$ date --date="next mon" Mon May 27 00:00:00 PDT 2013
string=@ が date コマンドに指定されている場合、date コマンドはエポック (1970-01-01 UTC) からの秒数を日付に変換します。
エポック 1970-01-01 UTC から 5 秒経過した日付を表示します:
$ date --date=@5 Wed Dec 31 16:00:05 PST 1969
エポック 1970-01-01 UTC から 10 秒経過した日付を表示します:
$ date --date=@10 Wed Dec 31 16:00:10 PST 1969
エポック 1970-01-01 UTC から 1 分 (つまり 60 秒) 経過した日付を表示します:
$ date --date=@60 Wed Dec 31 16:01:00 PST 1969
4.過去の日付を表示
-date コマンドを使用して、過去の日付を表示できます。以下にいくつかの可能性を示します。
$ date --date='3 seconds ago' Mon May 20 21:59:20 PDT 2013 $ date --date="1 day ago" Sun May 19 21:59:36 PDT 2013 $ date --date="yesterday" Sun May 19 22:00:26 PDT 2013 $ date --date="1 month ago" Sat Apr 20 21:59:58 PDT 2013 $ date --date="1 year ago" Sun May 20 22:00:09 PDT 2012
5. –set オプションを使用して日付と時刻を設定
以下に示すように、-s または –set オプションを使用して、システムの日付と時刻を設定できます。
この例では、最初は時刻が 20:09:31 と表示されていました。次に、date コマンドを使用して 21:00:00 に変更しました。
$ date Sun May 20 20:09:31 PDT 2013 $ date -s "Sun May 20 21:00:00 PDT 2013" Sun May 20 21:00:00 PDT 2013 $ date Sun May 20 21:00:05 PDT 2013
5. -u オプションを使用して世界時を表示
以下に示すように、-u、または –utc、または –universal オプションを使用して、UTC 形式で日付を表示できます。
$ date Mon May 20 22:07:53 PDT 2013 $ date -u Tue May 21 05:07:55 UTC 2013
6. -r オプションを使用して最終更新時刻を表示
この例では、現在の時刻は 20:25:48 です
$ date Sun May 20 20:25:48 PDT 2013
datefile のタイムスタンプは、touch コマンドを使用して変更されます。これは、上記の date コマンドの出力から数秒後に行われました。
$ touch datefile
上記のタッチ コマンドの後の現在の時刻は 20:26:12 です
$ date Sun May 20 20:26:12 PDT 2013
最後に、date コマンドの -r オプションを使用して、以下に示すように、ファイルの最終変更のタイムスタンプを表示します。この例では、datefile の最終変更時刻が 20:25:57 として表示されます。 20:25:48 から 20:26:12 の間のどこかです (これは、上記の touch コマンドを実行してタイムスタンプを変更したときです)。
$ date -r datefile Sun May 20 20:25:57 PDT 2013
7.さまざまな日付コマンド形式
次の構文を使用して、さまざまな形式で日付コマンドを表示する書式設定オプションを使用できます:
$ date +%<format-option>
次の表は、さまざまな日付コマンドの書式設定オプションを示しています。
フォーマットオプション | オプションの目的 | 出力 | 日付 +%a | 短い曜日名を表示します (月、火、水など) | 木 | 日付 +%A | 完全な短い曜日名を表示します (月曜日、火曜日など) | 木曜日 | 日付 +%b | 月の名前を短く表示します (Jan、Feb、Mar など) | 2月 | 日付 +%B | 月の名前を省略して表示します (1 月、2 月など) | 2月 | 日付 +%d | 日を表示します (例:01) | 07 | 日付 +%D | 現在の日付を表示します。 MM/DD/YY で表示 | 02/07/13 | 日付 +%F | 日付を表示します。 YYYY-MM-DD で表示 | 2013-02-07 | 日付 +%H | 時間を (00..23) 形式で表示 | 23 | 日付 +%I | 時間 (01..12) 形式で表示 | 11 | 日付 +%j | 年間通算日 (001..366) を表示 | 038 | 日付 +%m | 月 (01..12) を表示 | 02 | 日付 +%M | 分 (00..59) を表示 | 44 | 日付 +%S | 秒を表示 (00..60) | 17 | 日付 +%N | ナノ秒単位で表示 (000000000..999999999) | 573587606 | 日付 +%T | 時間を表示します。 HH:MM:SS として表示 注:24 形式の時間 | 23:44:17 | 日付 +%u | 曜日 (1..7) を表示します。 1 は月曜日です | 4 | 日付 +%U | 日曜日を週の最初の曜日として、年の週番号を表示します (00..53) | 05 | 日付 +%Y | 完全な年を表示、つまり YYYY | 2013 | 日付 +%Z | タイムゾーンのアルファベット略語 (例:EDT) | IS |
---|