Befehl 'Datum + FORMAT' - Wie heißen% a,% A,% b usw.?

10

Der dateBefehl gibt das aktuelle Datum und die aktuelle Uhrzeit folgendermaßen aus : Fri Apr 12 15:04:03 UTC 2013.

Um das Ausgabedatum und die Ausgabezeit in einem benutzerdefinierten Format zu haben, können wir date +FORMATbeispielsweise Folgendes verwenden: date "+%Y-%m-%dT%H:%M:%S%:z"was so etwas ergibt 2013-04-12T15:04:37+00:00.

Aber ich möchte wissen , was die %Y, %m, %d, %H, %M, %S, etc. werden kollektiv genannt (dh die Terminologie). Wie Theißt es auch, da es sich von den anderen unterscheidet?

da ich bin
quelle
3
„FORMAT steuert die Ausgabe. Interpretierte Sequenzen sind… “- Mann dateUnd das„ T “ist nur ein wörtliches„ T “.
Manatwork
@manatwork In der Manpage dachte ich, die Sequenzen beziehen sich sowohl auf die %Yals auch auf ihre jeweilige Bedeutung.
its_me
Tipp:date +"You will die in the year %Y"
Izkata
@ Izkata macht keinen Sinn (?)
its_me
1
@TheoneManis Nur ein Beispiel dafür, dass das Tnichts Besonderes ist. Außerdem hatte ich einen seltsamen Arbeitstag, als ich das tippte (ich hörte den Gesprächen der Mitarbeiter zu).
Izkata

Antworten:

7

Der in der POSIX-Spezifikation des dateBefehls verwendete Begriff lautet "Konvertierungsspezifikationen".

Die Formatzeichenfolge für den dateBefehl basiert eng auf der Formatzeichenfolge für die C- printfFunktion. Der C-Standard bezieht sich auch auf Dinge wie %d"Konvertierungsspezifikationen".

Tnicht vorangestellt %ist nur ein Zeichen: "Alle anderen Zeichen werden unverändert in die Ausgabe kopiert."

Gemäß dem Abschnitt zum Änderungsverlauf der POSIX-Beschreibung von date:

Die BESCHREIBUNG wird aktualisiert, um auf Konvertierungsspezifikationen anstelle von Felddeskriptoren zu verweisen, um die Konsistenz mit der Kategorie LC_TIME zu gewährleisten.

In einer früheren Version der Spezifikation wurde anscheinend der Ausdruck "Felddeskriptoren" verwendet, aber "Konvertierungsspezifikationen" ist der aktuelle offizielle Begriff.

Das heißt natürlich nicht, dass Sie sich so auf sie beziehen müssen.

Keith Thompson
quelle
Sind " conversion sequences" oder " format sequences" auch geeignete Begriffe? Ich denke sequencesdarüber nach specifications, weil es tatsächlich in der Manpage für erwähnt wird date.
its_me
2
@ TheoneManis: Jeder der drei scheint hinreichend offensichtlich zu sein, was es bedeutet.
Keith Thompson
4

Ich würde denken, "Escape-Sequenzen" oder (in diesem Fall) "Sonderzeichen für prozentual maskierte Sequenzen" wären die typische Art, auf sie zu verweisen. Backslash- und Prozent-Escape-Sequenzen werden in C häufig verwendet (z. B. printf), daher wurden sie auch in mehrere Unix-Befehle gefiltert (z. B. Angabe der Eingabeaufforderung für die Shell).

Die "Escape-Sequenz" ist "% Y", "% m", "% d" und so weiter; und die "Sonderzeichen" sind "Y", "m", "d" und so weiter. "%" wäre das "Escape-Zeichen" (das Zeichen, das dem folgenden Zeichen eine ungewöhnliche / besondere Bedeutung gibt).

Baard Kopperud
quelle
3

Dieses Dokument von IBM Information Center stellt klar , dass die Alphabete in %Y, %m, %d, %H, %M, %S, etc. „genannt Felddeskriptoren “.

Sie müssen jedes voraus Felddeskriptor mit einer % (Prozentzeichen). Das System ersetzt den Felddeskriptor durch den angegebenen Wert. [...] Der dateBefehl kopiert alle anderen Zeichen unverändert in die Ausgabe.

Das beantwortet meine beiden Fragen (ungefähr% n & T). Und ich glaube, das ist so maßgeblich wie es nur geht.

da ich bin
quelle
1
IBM hat den dateBefehl nicht erfunden . Was macht ihre Dokumentation maßgeblich? Das Verhalten des Befehls wird derzeit von POSIX definiert, das diesen Begriff nicht verwendet. Der Änderungsverlauf am Ende der POSIX-Beschreibung lautet "Die BESCHREIBUNG wird aktualisiert, um auf Konvertierungsspezifikationen zu verweisen, anstatt auf Felddeskriptoren, um die Konsistenz mit der Kategorie LC_TIME zu gewährleisten." Dies bedeutet, dass "Konvertierungsspezifikation" und nicht "Feld-Dieskriptor" korrekt ist aktuelle Laufzeit. Siehe auch meine aktualisierte Antwort.
Keith Thompson
2

Wie andere gesagt haben, Tist das ein wörtlicher Brief T. Um genau zu sein, date "+%Y-%m-%dT%H:%M:%S%:z"scheint Ihr Beispiel eine Formatzeichenfolge zu sein, die der ISO-8601- Spezifikation für Datum und Uhrzeit entspricht. Hier Tist also ein Trennzeichen, das das Datum von der Uhrzeit trennt.

Jeff Daly
quelle