Что делает эта команда «printf»?

15

Я проходил учебное пособие, и там я встретил команду:

printf "%(%s)T"

Вывод этой команды:

1454299615

Может кто-нибудь, пожалуйста, скажите мне, что это за команда и что означает выход?

    
задан rtecxs 01.02.2016 в 05:08
источник

1 ответ

17

Это способ выразить отформатированное время на printf .

Формат:

%(FORMAT)T

Где FORMAT определяется strftime(3) .

Итак, чтобы получить эпоху (Время в секундах с 1970-01-01 00:00:00 по UTC), нам нужно strftime(3) format %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 и ksh printf и не работает с /usr/bin/printf , csh , и zsh встроенных модулей.     

ответ дан heemayl 01.02.2016 в 05:18
источник