
このdate
コマンドは現在の日付と時刻を次のように出力しますFri Apr 12 15:04:03 UTC 2013
。
出力日時をカスタム形式で取得するには、 を使用しますdate +FORMAT
。たとえば、次のようになります。date "+%Y-%m-%dT%H:%M:%S%:z"
次のような結果になります2013-04-12T15:04:37+00:00
。
しかし、、、、、、などが総称して%Y
何と呼ばれているのか(つまり用語)を知りたいです。また、他と違う は何と呼ばれているのでしょうか?%m
%d
%H
%M
%S
T
答え1
POSIX仕様で使用されている用語date
コマンドは「変換仕様」です。
コマンドのフォーマット文字列は、date
C 関数のフォーマット文字列に密接に基づいていますprintf
。C 標準では、%d
「変換仕様」などのことも参照されます。
T
が先行していない場合は%
単なる文字です:「他のすべての文字は変更されずに出力にコピーされます。」
POSIX の説明の変更履歴セクションによるとdate
:
LC_TIME カテゴリとの一貫性を保つために、説明はフィールド記述子ではなく変換仕様を参照するように更新されました。
したがって、仕様の以前のバージョンでは「フィールド記述子」というフレーズが使用されていたようですが、現在の正式用語は「変換仕様」です。
もちろんそれはあなたが持っている彼らをそのように呼ぶのです。
答え2
これらを指す一般的な方法は、「エスケープ シーケンス」または (この場合は)「パーセント エスケープ シーケンスの特殊文字」だと思います。バックスラッシュ エスケープ シーケンスとパーセント エスケープ シーケンスは C でよく使用されるため (例: printf)、いくつかの Unix コマンドにも取り入れられています (シェルのプロンプトを指定するなど)。
「エスケープ シーケンス」は「%Y」、「%m」、「%d」などであり、「特殊文字」は「Y」、「m」、「d」などです。「%」は「エスケープ文字」(後続の文字に通常とは異なる/特別な意味を与える文字)になります。
答え3
このドキュメントIBMのインフォメーションセンターでは、アルファベット%Y
、、、、、、などで「%m
%d
%H
%M
%S
フィールド記述子「」。
それぞれに先行する必要がありますフィールド記述子とともに%(パーセント記号)。システムはフィールド記述子を指定された値に置き換えます。[...] コマンド
date
は、その他の文字を変更せずに出力にコピーします。
これで私の 2 つの質問 (%n と T について) に対する回答が得られました。そして、これが最も信頼できる回答であると信じています。
答え4
他の人が述べているように、はT
文字そのものですがT
、具体的には、あなたの例はdate "+%Y-%m-%dT%H:%M:%S%:z"
、ISO-8601日付と時刻の仕様。ここではT
日付と時刻を区切る区切り文字です。