web-dev-qa-db-ja.com

コマンド '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%Sなどがまとめて何と呼ばれるか(つまり、用語)を知りたいのですが。また、Tは何と呼ばれていますか、それは他のものとは異なるためですか?

10
its_me

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

dateコマンドのフォーマット文字列は、Cのprintf関数のフォーマット文字列に密接に基づいています。 C標準では、%dなども「変換仕様」と呼んでいます。

Tの前に%が付いていないのは単なる文字です。「他のすべての文字は変更せずに出力にコピーされます。」

dateのPOSIX記述の変更履歴セクションによると:

LC_TIMEカテゴリーとの整合性のために、フィールド記述子ではなく、変換仕様を参照するように、DESCRIPTIONが更新されました。

したがって、仕様の以前のバージョンでは「フィールド記述子」というフレーズが使用されていたようですが、「変換仕様」が現在の公式用語です。

もちろん、そのようにそれらを参照するhaveとは限りません。

7
Keith Thompson

「エスケープシーケンス」または(この場合は)「パーセントエスケープシーケンスの特殊文字」は、それらを参照する典型的な方法だと思います。バックスラッシュとパーセントでエスケープされたシーケンスはC(printfなど)でよく使用されているため、いくつかのUnixコマンド(シェルのプロンプトの指定など)にフィルター処理されています。

「エスケープシーケンス」は「%Y」、「%m」、「%d」などです。 「特殊文字」は「Y」、「m」、「d」などです。 "%"は "エスケープ文字"(次の文字に通常とは異なる特別な意味を与える文字)です。

4
Baard Kopperud

このドキュメント IBMのインフォメーションセンターからの引用では、アルファベット%Y%m%d%H%M%Sなどは「Field Descriptors」と呼ばれます。

フィールド記述子の前に(パーセント記号)を付ける必要があります。システムは、フィールド記述子を指定された値に置き換えます。 [...] dateコマンドは、他の文字を変更せずに出力にコピーします。

これで私の2つの質問に答えられます(%nとTについて)。そして、これはできる限り権威があると私は信じています。

3
its_me

他の人が述べたように、Tは文字どおりTです。しかし具体的には、あなたの例date "+%Y-%m-%dT%H:%M:%S%:z"は、日付と時刻の ISO-8601 仕様に準拠したフォーマット文字列のようです。したがって、ここでTは、日付と時刻を区切る区切り文字です。

2
Jeff Daly