Risposte:
Ecco qui:
date +%Y%m%d%H%M%S
Come man date
dice in alto, puoi usare il date
comando in questo modo:
date [OPTION]... [+FORMAT]
Cioè, puoi dargli un parametro di formato, che inizia con un +
. Probabilmente puoi indovinare il significato dei simboli di formattazione che ho usato:
%Y
è per l'anno%m
è per il mese%d
è per il giornoPuoi trovare questo e altri simboli di formattazione in man date
.
Se stai usando Bash puoi anche usare uno dei seguenti comandi:
printf '%(%Y%m%d%H%M%S)T' # prints the current time
printf '%(%Y%m%d%H%M%S)T' -1 # same as above
printf '%(%Y%m%d%H%M%S)T' -2 # prints the time the shell was invoked
Puoi usare l'opzione -v varname
per memorizzare il risultato $varname
invece di stamparlo su stdout:
printf -v varname '%(%Y%m%d%H%M%S)T'
Sebbene il comando date sarà sempre eseguito in una subshell (cioè in un processo separato) printf è un comando incorporato e sarà quindi più veloce.
%
opzioni è possibile passare, questo sembra utilizzare il date
comando. Quindi, man date
ti darà le opzioni disponibili.
Modo interessante / divertente per farlo utilizzando l' espansione dei parametri (richiede bash 4.4
o più recente):
${parameter@operator} - P operator
L'espansione è una stringa che è il risultato dell'espansione del valore del parametro come se fosse una stringa di prompt.
$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; }
$ show_time
20180724003251
"`date +%Y-%m-%d %H:%M:%S`"
mi dà undate: illegal time format