Respostas:
É uma maneira de expressar a hora formatada printf.
O formato é:
%(FORMAT)T
Onde FORMATé definido por strftime(3).
Portanto, para obter o tempo da época (tempo em segundos desde 1970-01-01 00:00:00 UTC), precisamos do strftime(3)formato %s:
printf "%(%s)T\n"
Observe que você também precisa \nadicionar uma nova linha no final, pois printf(ao contrário echo) não a adiciona por padrão.
Exemplo:
$ 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
Por uma questão de integridade, você também pode usar o datecomando de uma strftime(3)maneira formatada semelhante para obter o tempo:
$ 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
NOTA : Este comportamento é específico para bash'se ksh' s built-in função printf, e não trabalha com /usr/bin/printf, cshe zshbuilt-ins.
printf(1)página de manual.
printfé um incorporado aqui (embora a um externa tem o mesmo comportamento) .. verificação help printf..
printfum construtor?/usr/bin/printfno Ubuntu 14.04 dá um erro:printf: %(: invalid conversion specification. Se você estiver usandobash. Tenteman basha documentação interna.