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
は何と呼ばれていますか、それは他のものとは異なるためですか?
date
コマンドのPOSIX仕様で使用されている用語は「変換仕様」です。
date
コマンドのフォーマット文字列は、Cのprintf
関数のフォーマット文字列に密接に基づいています。 C標準では、%d
なども「変換仕様」と呼んでいます。
T
の前に%
が付いていないのは単なる文字です。「他のすべての文字は変更せずに出力にコピーされます。」
date
のPOSIX記述の変更履歴セクションによると:
LC_TIMEカテゴリーとの整合性のために、フィールド記述子ではなく、変換仕様を参照するように、DESCRIPTIONが更新されました。
したがって、仕様の以前のバージョンでは「フィールド記述子」というフレーズが使用されていたようですが、「変換仕様」が現在の公式用語です。
もちろん、そのようにそれらを参照するhaveとは限りません。
「エスケープシーケンス」または(この場合は)「パーセントエスケープシーケンスの特殊文字」は、それらを参照する典型的な方法だと思います。バックスラッシュとパーセントでエスケープされたシーケンスはC(printfなど)でよく使用されているため、いくつかのUnixコマンド(シェルのプロンプトの指定など)にフィルター処理されています。
「エスケープシーケンス」は「%Y」、「%m」、「%d」などです。 「特殊文字」は「Y」、「m」、「d」などです。 "%"は "エスケープ文字"(次の文字に通常とは異なる特別な意味を与える文字)です。
このドキュメント IBMのインフォメーションセンターからの引用では、アルファベットが%Y
、%m
、%d
、%H
、%M
、%S
などは「Field Descriptors」と呼ばれます。
各フィールド記述子の前に%(パーセント記号)を付ける必要があります。システムは、フィールド記述子を指定された値に置き換えます。 [...]
date
コマンドは、他の文字を変更せずに出力にコピーします。
これで私の2つの質問に答えられます(%nとTについて)。そして、これはできる限り権威があると私は信じています。
他の人が述べたように、T
は文字どおりT
です。しかし具体的には、あなたの例date "+%Y-%m-%dT%H:%M:%S%:z"
は、日付と時刻の ISO-8601 仕様に準拠したフォーマット文字列のようです。したがって、ここでT
は、日付と時刻を区切る区切り文字です。