はじめに
こんにちは!今回はdateコマンドについて解説します。
dateは現在の日付・時刻を表示するコマンドです。一見シンプルですが、日付フォーマットのカスタマイズやシステム時刻の設定など、実用的な機能が満載です。
ログファイルに日付を付ける、バックアップファイルに日付を埋め込む、シェルスクリプトで日時を扱う……シェル作業では毎日使うと言っても過言ではないコマンドですよ。
dateコマンドとは
dateは、システムの現在の日付・時刻を表示し、フォーマットを自由に変更できる外部コマンドです。
デフォルトでは人間が読みやすい形式で表示されますが、フォーマット指定子を使うことで、Unixタイムスタンプ、ISO 8601形式、カスタム形式など、様々な出力が可能です。ログファイルの管理、スクリプトの自動化、システム時刻の設定に欠かせません。
主な用途:
- 現在の日付・時刻表示
- ファイル名やログに日付を埋め込む
- Unixタイムスタンプの取得
- システム時刻の設定
基本構文
|
|
フォーマット指定子を使って、出力形式をカスタマイズできます。
主なオプション
| オプション | 説明 |
|---|---|
-d, --date=STRING |
指定した日付を表示 |
-f, --file=DATEFILE |
ファイルから日付を読み込む |
-R, --rfc-email |
RFC 2822形式で表示 |
-I[TIMESPEC], --iso-8601 |
ISO 8601形式で表示 |
-u, --utc |
UTC時刻で表示 |
-s, --set=STRING |
システム時刻を設定(rootのみ) |
+フォーマット |
カスタムフォーマットで出力 |
使用例
例1: 現在の日付・時刻を表示
|
|
実行結果:
|
|
デフォルト形式で現在の日付・時刻を表示します。最もシンプルな使い方です。
例2: ISO 8601形式で表示
|
|
実行結果:
|
|
ISO 8601形式(YYYY-MM-DD)で日付のみ表示します。国際標準形式です。
例3: 秒までのISO 8601形式
|
|
実行結果:
|
|
時刻までを含むISO 8601形式で表示します。タイムゾーン情報も含まれます。
例4: Unixタイムスタンプ(エポックからの秒数)
|
|
実行結果:
|
|
1970年1月1日0時0分0秒(UTC)からの経過秒数を表示します。プログラム間で時刻を扱う時に便利です。
例5: カスタムフォーマット(年月日)
|
|
実行結果:
|
|
+の後にフォーマット指定子を指定して、任意の形式で表示できます。これは年-月-日形式です。
例6: カスタムフォーマット(日本語的な表示)
|
|
実行結果:
|
|
複数の指定子を組み合わせて、カスタム形式を作成できます。
例7: 特定の日付を計算
|
|
実行結果:
|
|
-dオプションで、相対的な日付(今日から10日後など)を計算できます。
例8: 過去の日付を指定
|
|
実行結果:
|
|
特定の日付情報を指定して、その日付のフォーマットを表示できます。
例9: UTC時刻で表示
|
|
実行結果:
|
|
-uオプションでUTC(協定世界時)で表示します。サーバーのタイムゾーン設定に関係なく表示できます。
例10: バックアップファイル名に日付を埋め込む
|
|
実行結果:
|
|
シェルスクリプトで日付を変数展開して、ファイル名に埋め込みます。超実用的!
Tips・注意点
フォーマット指定子の主なもの
|
|
Unixタイムスタンプとの相互変換
|
|
Unixタイムスタンプはプログラム間での時刻交換に便利です。
-dオプションで相対的な日付計算
|
|
複雑な日付計算をコマンドラインで簡単に実行できます。
シェルスクリプトでの活用
|
|
スクリプトでの日付操作が効率化できます。
タイムゾーンの設定
|
|
環境変数TZで一時的にタイムゾーンを変更できます。
実践的な使い方
ログファイルの自動管理
|
|
毎日ログファイルを変更し、古いログを自動削除します。
定期バックアップ
|
|
タイムスタンプ付きバックアップで、複数の世代管理が簡単になります。
ファイル更新日時の確認と比較
|
|
ファイルの更新日時とシステム時刻を比較して、処理を分岐させられます。
曜日に応じた処理
|
|
曜日に応じて異なる処理を実行できます。
まとめ
dateコマンドのポイント:
- 現在の日付表示:
date - ISO 8601形式:
date -I - Unixタイムスタンプ:
date +%s - カスタムフォーマット:
date +%Y-%m-%d\ %H:%M:%S - 相対的な日付計算:
date -d "+10 days" - UTC表示:
date -u - ファイル名に日付埋め込み:
$(date +%Y%m%d) - よく使う組み合わせ:
date +%Y-%m-%d、date +%s、date -I
dateはシェルスクリプトの必須コマンド。ログ、バックアップ、ファイル管理などで日付を活用することで、自動化がぐっと効率化しますよ!