Я проходил урок, и там я наткнулся на команду:
printf "%(%s)T"
Вывод этой команды:
1454299615
Может ли кто-нибудь сказать мне, что это за команда и что означает вывод?
command-line
bash
rtecxs
источник
источник
printf
встроенный?/usr/bin/printf
на Ubuntu 14.04 дает ошибку:printf: %(: invalid conversion specification
. Если вы используетеbash
. Попробуйтеman bash
встроенную документацию.Ответы:
Это способ выразить отформатированное время с помощью
printf
.Формат такой:
Где
FORMAT
определяетсяstrftime(3)
.Итак, чтобы получить время эпохи (время в секундах с 1970-01-01 00:00:00 UTC), нам нужен
strftime(3)
формат%s
:Обратите внимание, что вам также нужно
\n
в конце добавить новую строку, посколькуprintf
(в отличие отecho
) не добавляет ее по умолчанию.Пример:
Для полноты картины вы также можете использовать
date
команду в похожемstrftime(3)
формате, чтобы получить время:Примечание : Данное поведение является специфичным для
bash
«s иksh
» ы встроенных функцийprintf
, и не работает с/usr/bin/printf
,csh
иzsh
встроенными модулями.источник
printf(1)
странице руководства .printf
- встроенная функция (хотя внешняя имеет такое же поведение) .. проверьтеhelp printf
..