Respuestas:
Es una forma de expresar el tiempo formateado por printf.
El formato es:
%(FORMAT)T
Donde FORMATse define por strftime(3).
Entonces, para obtener el tiempo de la época (Tiempo en segundos desde 1970-01-01 00:00:00 UTC), necesitamos strftime(3)formato %s:
printf "%(%s)T\n"
Tenga en cuenta que también necesita \nal final agregar una nueva línea ya que printf(a diferencia de echo) no la agrega de manera predeterminada.
Ejemplo:
$ 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
Solo en aras de la exhaustividad, también puede usar el datecomando de forma similar strftime(3)para obtener el tiempo:
$ 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 comportamiento es específico bash's y kshque está incorporado en la función printf, y no funciona con /usr/bin/printf, cshy zshmuebles empotrados.
printf(1)página del manual.
printfestá incorporado aquí (aunque el externo tiene el mismo comportamiento) ... verifique help printf...
printfEres un constructor?/usr/bin/printfen Ubuntu 14.04 da un error:printf: %(: invalid conversion specification. Si lo estas usandobash. Pruebaman bashcon la documentación integrada.