
Der date
Befehl gibt das aktuelle Datum und die Uhrzeit wie folgt aus: Fri Apr 12 15:04:03 UTC 2013
.
Um das Ausgabedatum und die Ausgabezeit in einem benutzerdefinierten Format zu erhalten, können wir date +FORMAT
beispielsweise wie folgt verwenden: date "+%Y-%m-%dT%H:%M:%S%:z"
Das Ergebnis ist in etwa wie folgt 2013-04-12T15:04:37+00:00
:
Aber ich möchte wissen, wie die %Y
, %m
, %d
, %H
, %M
, %S
, usw. zusammenfassend genannt werden (also die Terminologie). Und wie heißt das T
, da es sich vom Rest unterscheidet?
Antwort1
Der in der POSIX-Spezifikation verwendete Begriffdate
Der Befehl lautet „Konvertierungsspezifikationen“.
Die Formatzeichenfolge für den date
Befehl orientiert sich eng an der Formatzeichenfolge für die C- printf
Funktion; der C-Standard spricht auch von Dingen wie %d
„Konvertierungsspezifikationen“.
T
nicht vorangestellt %
ist nur ein Zeichen: „Alle anderen Zeichen sollen unverändert in die Ausgabe kopiert werden.“
Laut dem Abschnitt zum Änderungsverlauf der POSIX-Beschreibung von date
:
Die BESCHREIBUNG wird aktualisiert und verweist aus Konsistenzgründen mit der Kategorie LC_TIME nun auf Konvertierungsspezifikationen statt auf Felddeskriptoren.
In einer früheren Version der Spezifikation wurde offenbar die Formulierung „Felddeskriptoren“ verwendet, die aktuelle offizielle Bezeichnung lautet jedoch „Konvertierungsspezifikationen“.
Das bedeutet natürlich nicht, dass Siehabenum sie so zu bezeichnen.
Antwort2
Ich würde denken, dass „Escape-Sequenzen“ oder (in diesem Fall) „Sonderzeichen für prozentual maskierte Sequenzen“ die typische Bezeichnung dafür sind. Backslash- und prozentual maskierte Sequenzen werden in C häufig verwendet (z. B. printf), sodass sie auch in mehrere Unix-Befehle eingedrungen sind (z. B. bei der Angabe der Eingabeaufforderung für die Shell).
Die „Escape-Sequenz“ ist „%Y“, „%m“, „%d“ usw. und die „Sonderzeichen“ sind „Y“, „m“, „d“ usw. „%“ wäre das „Escape-Zeichen“ (das Zeichen, das dem folgenden Zeichen eine ungewöhnliche/spezielle Bedeutung gibt).
Antwort3
Dieses Dokumentaus dem IBM Information Center heißt es klar, dassdie Alphabetein %Y
, %m
, %d
, %H
, %M
, %S
, usw. heißen "Felddeskriptoren".
Sie müssen jedemFelddeskriptormit einem%(Prozentzeichen). Das System ersetzt den Felddeskriptor durch den angegebenen Wert. [...]
date
Alle anderen Zeichen kopiert der Befehl unverändert in die Ausgabe.
Das beantwortet meine beiden Fragen (zu %n und T). Und ich glaube, das ist so verbindlich, wie es nur sein kann.
Antwort4
Wie andere bereits gesagt haben, handelt es T
sich um einen wörtlichen Buchstaben T
. Aber um genau zu sein, date "+%Y-%m-%dT%H:%M:%S%:z"
scheint Ihr Beispiel eine Formatzeichenfolge zu sein, die dem entsprichtISO-8601Angabe für Datum und Uhrzeit. Hier T
ist also ein Trennzeichen, das das Datum von der Uhrzeit trennt.