Risposte:
È un modo per esprimere il tempo formattato di printf
.
Il formato è:
%(FORMAT)T
Dove FORMAT
è definito da strftime(3)
.
Quindi per ottenere il tempo (tempo in secondi dal 1970-01-01 00:00:00 UTC), abbiamo bisogno del strftime(3)
formato %s
:
printf "%(%s)T\n"
Si noti che \n
alla fine è necessario anche aggiungere una nuova riga poiché printf
(diversamente echo
) non la aggiunge per impostazione predefinita.
Esempio:
$ 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 per completezza, puoi anche usare il date
comando in un strftime(3)
modo formattato simile per ottenere il 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 : Questo comportamento è specifico per bash
's e ksh
' s built-in funzione printf
, e non funziona con /usr/bin/printf
, csh
e zsh
built-in.
printf(1)
pagina man.
printf
è incorporato qui (anche se quello esterno ha lo stesso comportamento) .. controlla help printf
..
printf
un incorporato?/usr/bin/printf
su Ubuntu 14.04 dà un errore:printf: %(: invalid conversion specification
. Se stai usandobash
. Provaman bash
per la documentazione integrata.