Відповіді:
Це спосіб виразити відформатований час за допомогою printf.
Формат:
%(FORMAT)T
Де FORMATвизначено strftime(3).
Отже, щоб отримати епоху (час у секундах з 1970-01-01 00:00:00 UTC), нам потрібен strftime(3)формат %s:
printf "%(%s)T\n"
Зауважте, що вам також потрібно \nв кінці додати новий рядок, оскільки printf(на відміну від цього echo) він не додає його за замовчуванням.
Приклад:
$ printf "%(%s)T\n"
1454300377
$ printf "%(%Y-%m-%d)T\n"
2016-02-01
$ printf "%(%Y-%m-%d %H:%M:%S)T\n"
2016-02-01 10:20:27
Тільки задля повноти ви також можете використовувати dateкоманду аналогічно strftime(3)відформатованим чином, щоб отримати час:
$ date '+%s'
1454300542
$ date '+%Y-%m-%d' ## Short form: date -I
2016-02-01
$ date '+%Y-%m-%d %H:%M:%S'
2016-02-01 10:22:47
Примітка : Корпорація Майкрософт специфічним для bash«s і ksh» и вбудованих функцій printf, і не працює з /usr/bin/printf, cshі zshвбудованими модулями.
printf(1)сторінці man.
printf- це вбудований (хоча зовнішній має таку ж поведінку) .. перевірити help printf..
printfвбудований?/usr/bin/printfна Ubuntu 14.04 дає помилку:printf: %(: invalid conversion specification. Якщо ви використовуєтеbash. Спробуйтеman bashскласти вбудовану документацію.