
Команда 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
это разделитель, который отделяет дату от времени.