Команда «date +FORMAT» — Как называются %a, %A, %b и т. д.?

Команда «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, так как он отличается от остальных?

решение1

Термин, используемый в спецификации POSIXdateкоманда - "спецификации преобразования".

Формат строки для dateкоманды во многом основан на форматной строке для printfфункции языка C; стандарт языка C также ссылается на такие вещи, %dкак «спецификации преобразования».

Tне предшествует %просто символу: «Все остальные символы должны быть скопированы в вывод без изменений».

Согласно разделу истории изменений описания POSIX date:

ОПИСАНИЕ обновлено для ссылки на спецификации преобразования, а не на дескрипторы полей для обеспечения согласованности с категорией LC_TIME.

Таким образом, по-видимому, в более ранней версии спецификации использовалась фраза «дескрипторы полей», но в настоящее время официальным термином является «спецификации преобразования».

Конечно, это не значит, что выиметьчтобы называть их так.

решение2

Я бы подумал, что "escape-последовательности" или (в данном случае) "специальные символы для процентно-экранированных последовательностей" были бы типичным способом их обозначения. Последовательности с обратной косой чертой и процентно-экранированными часто используются в C (например, printf), поэтому они также просочились в несколько команд Unix (например, указание приглашения для оболочки).

«Экран-последовательность» — это «%Y», «%m», «%d» и т. д., а «специальные символы» — это «Y», «m», «d» и т. д. «%» — это «экранирующий символ» (символ, который придает следующему символу необычное/специальное значение).

решение3

Этот документиз Информационного центра IBM ясно сказано, чтоалфавитыв %Y, %m, %d, %H, %M, %S, и т.д. называются "Описатели полей".

Вы должны предшествовать каждомудескриптор поляс%(знак процента). Система заменяет дескриптор поля указанным значением. [...] Команда dateкопирует любые другие символы в вывод без изменений.

Это отвечает на мои два вопроса (о %n и T). И я считаю, что это настолько авторитетно, насколько это возможно.

решение4

Как уже отмечалось, это Tбуквальная буква T. Но если говорить конкретно, ваш пример, date "+%Y-%m-%dT%H:%M:%S%:z"похоже, представляет собой строку формата, соответствующуюИСО-8601спецификация для даты и времени. Так вот Tэто разделитель, который отделяет дату от времени.

Связанный контент