Команда 'дата + ФОРМАТ' - Як називаються% a,% A,% b тощо?


10

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називається, чим він відрізняється від решти?


3
“FORMAT контролює вихід. Інтерпретовані послідовності - це… ”- людина, dateа“ Т ”- просто буквальне“ Т ”.
манатство

@manatwork На сторінці man я подумав, що послідовності стосуються %Yі їхнього, і відповідного значення.
its_me

Порада:date +"You will die in the year %Y"
Ізката

@Izkata Не має сенсу (?)
its_me

1
@TheoneManis Просто приклад того, що Tне бути особливим. Крім того, у мене був дивний день на роботі, коли я набирав це (слухаючи розмови колег).
Ізката

Відповіді:


7

Термін, який використовується в специфікації POSIX dateкоманди, є "специфікації перетворення".

Рядок формату для dateкоманди тісно заснований на рядку формату для printfфункції C ; стандарт C також відноситься до таких речей, як %d"специфікації перетворення".

Tне передує %лише символу: "Усі інші символи повинні бути скопійовані на вихід без змін."

Відповідно до розділу змін історії POSIX опису date:

ОПИС Оновлюється для позначення специфікацій перетворення замість дескрипторів поля на відповідність категорії LC_TIME.

Тому, мабуть, у попередній версії специфікації використовували фразу "дескриптори поля", але "специфікації перетворення" є поточним офіційним терміном.

Звичайно, це не означає, що ви повинні так ставитися до них.


Чи " conversion sequences" чи " format sequences" відповідні умови теж? Я розглядаю питання sequencesнад тим specifications, що це фактично згадується на сторінці man date.
its_me

2
@TheoneManis: Будь-яка з трьох видається досить очевидною щодо того, що це означає.
Кіт Томпсон

4

Я думаю, що "типовими послідовностями" або (в даному випадку) "спеціальними символами для послідовностей, що уникнули відсотків" був би типовим способом посилання на них. Послідовності, уникнуті зворотним косою та відсотками, значно використовуються в C (наприклад, printf), тому вони також фільтруються в декілька команд Unix (наприклад, вказуючи на запит на оболонку).

"Послідовність втечі", що становить "% Y", "% m", "% d" тощо; а "спеціальні символи" - "Y", "m", "d" тощо. "%" був би "символом втечі" (персонаж, який надає наступному символу незвичайне / особливе значення).


3

Цей документ з інформаційного центру IBM чітко сказано , що алфавіти в %Y, %m, %d, %H, %M, %Sі т.д., називаються « Поле дескриптори ».

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

Це відповідає на два мої запитання (приблизно% n & T). І я вважаю, це настільки авторитетно, наскільки це можливо.


1
IBM не вигадала dateкоманду; що робить їх документацію повноважною? В даний час поведінка команди визначається POSIX, який не використовує цей термін. Історія змін в нижній частині опису POSIX говорить: "ОПИС оновлено для посилання на специфікації перетворення замість дескрипторів полів на відповідність категорії LC_TIME". поточний термін. Дивіться також мою оновлену відповідь.
Кіт Томпсон

2

Як заявили інші, Tце буквальний лист T. Але для конкретності, ваш приклад date "+%Y-%m-%dT%H:%M:%S%:z"представляє собою рядок формату, що відповідає специфікації ISO-8601 для дати та часу. Отже, тут Tє роздільник, який відокремлює дату від часу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.