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?


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ć.


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).


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.