Polecenie „data + FORMAT” - Jak nazywane są% a,% A,% b itp.?

10

datePolecenie wysyła bieżącą datę i czas takiego: Fri Apr 12 15:04:03 UTC 2013.

Aby mieć wyjściową datę i godzinę w niestandardowym formacie, możemy użyć date +FORMATna przykład takiego: date "+%Y-%m-%dT%H:%M:%S%:z"który daje coś takiego 2013-04-12T15:04:37+00:00.

Ale chcę wiedzieć, co %Y, %m, %d, %H, %M, %S, itd. Są zbiorczo nazywane (tj terminologia). Jak się Tnazywa, ponieważ różni się od reszty?

to ja
źródło
3
„FORMAT steruje wyjściem. Interpretowane sekwencje to… ”- człowiek dateA„ T ”to dosłownie„ T ”.
manatwork
@manatwork Na stronie podręcznika myślałem, że sekwencje odnoszą się zarówno do %Yich znaczenia.
its_me
Wskazówka:date +"You will die in the year %Y"
Izkata,
@Izkata Nie ma sensu (?)
its_me
1
@TheoneManis To tylko przykład tego, że Tnie jest wyjątkowy. Miałem też dziwny dzień w pracy, kiedy to pisałem (słuchając rozmów współpracowników).
Izkata,

Odpowiedzi:

7

Termin używany w specyfikacji POSIX datepolecenia to „specyfikacje konwersji”.

Ciąg formatu dla datepolecenia jest ściśle oparty na ciągu formatu dla printffunkcji C ; norma C odnosi się również do %d„specyfikacji konwersji”.

Tnie poprzedzony %jest tylko znakiem: „Wszystkie pozostałe znaki należy skopiować na wyjście bez zmian”.

Zgodnie z sekcją historii zmian opisu POSIX date:

OPIS jest aktualizowany w celu odniesienia do specyfikacji konwersji zamiast deskryptorów pól w celu zachowania spójności z kategorią LC_TIME.

Najwyraźniej wcześniejsza wersja specyfikacji używała wyrażenia „deskryptory pól”, ale „specyfikacje konwersji” są obecnie oficjalnym terminem.

Oczywiście nie oznacza to, że musisz się do nich tak odnosić.

Keith Thompson
źródło
Czy słowa „ conversion sequences” lub „ format sequences” też są odpowiednie? Zastanawiam się sequencesnad tym specifications, bo tak naprawdę jest wspomniane na stronie podręcznika date.
its_me
2
@TheoneManis: Każda z tych trzech rzeczy wydaje się wystarczająco oczywista, co to znaczy.
Keith Thompson
4

Sądzę, że „sekwencje specjalne” lub (w tym przypadku) „znaki specjalne dla sekwencji procentowych” są typowym sposobem odwoływania się do nich. Sekwencje specjalne z odwrotnym ukośnikiem i procenty są często używane w C (np. Printf), więc przefiltrowano je również do kilku poleceń uniksowych (takich jak podanie monitu o powłokę).

„Sekwencja ucieczki” to „% Y”, „% m”, „% d” i tak dalej; a „znaki specjalne” to „Y”, „m”, „d” i tak dalej. „%” byłoby „znakiem ucieczki” (znakiem, który nadaje następującemu znakowi nietypowe / specjalne znaczenie).

Baard Kopperud
źródło
3

Ten dokument z Centrum Informacji IBM wyraźnie stwierdza, że alfabety w %Y, %m, %d, %H, %M, %S, itd. Są nazywane „ Pole Descriptors ”.

Musisz poprzedzić każdy deskryptor pola znakiem % (znak procentu). System zastępuje deskryptor pola określoną wartością. [...] datePolecenie kopiuje wszelkie inne znaki na dane wyjściowe bez zmian.

To odpowiada na moje dwa pytania (około% n & T). I wierzę, że jest to tak wiarygodne, jak to tylko możliwe.

to ja
źródło
1
IBM nie wymyślił datepolecenia; co czyni ich dokumentację autorytatywną? Zachowanie polecenia jest obecnie zdefiniowane przez POSIX, który nie używa tego terminu. Historia zmian u dołu opisu POSIX mówi: „OPIS jest aktualizowany w celu odniesienia do specyfikacji konwersji, zamiast deskryptorów pól w celu zachowania zgodności z kategorią LC_TIME.”, Co oznacza, że ​​„specyfikacja konwersji”, a nie „deskryptor pola” jest poprawna obecny termin. Zobacz także moją zaktualizowaną odpowiedź.
Keith Thompson
2

Jak powiedzieli inni, Tjest to dosłowna litera T. Ale mówiąc konkretnie, twój przykład date "+%Y-%m-%dT%H:%M:%S%:z"wydaje się ciągiem formatu zgodnym ze specyfikacją ISO-8601 dla daty i godziny. Więc tutaj Tjest separator, który oddziela datę od godziny.

Jeff Daly
źródło