Risposte:
Ecco qui:
date +%Y%m%d%H%M%S
Come man datedice in alto, puoi usare il datecomando 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 varnameper memorizzare il risultato $varnameinvece 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 datecomando. Quindi, man dateti darà le opzioni disponibili.
Modo interessante / divertente per farlo utilizzando l' espansione dei parametri (richiede bash 4.4o più recente):
${parameter@operator} - P operatorL'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