コマンド 'date +FORMAT' — %a、%A、%b などは何と呼ばれますか?

コマンド 'date +FORMAT' — %a、%A、%b などは何と呼ばれますか?

この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%ST

答え1

POSIX仕様で使用されている用語dateコマンドは「変換仕様」です。

コマンドのフォーマット文字列は、dateC 関数のフォーマット文字列に密接に基づいています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日付と時刻を区切る区切り文字です。

関連情報