Odpowiedzi:
Proszę bardzo:
date +%Y%m%d%H%M%S
Jak man date
mówi u góry, możesz użyć następującego date
polecenia:
date [OPTION]... [+FORMAT]
Oznacza to, że możesz nadać mu parametr formatu, zaczynając od +
. Prawdopodobnie możesz odgadnąć znaczenie symboli formatowania, których użyłem:
%Y
jest na rok%m
jest na miesiąc%d
jest na dzieńMożesz znaleźć to i inne symbole formatowania w man date
.
Jeśli używasz Bash, możesz również użyć jednego z następujących poleceń:
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
Możesz użyć opcji, -v varname
aby zapisać wynik $varname
zamiast drukowania go na stdout:
printf -v varname '%(%Y%m%d%H%M%S)T'
Chociaż polecenie date zawsze będzie wykonywane w podpowłoce (tj. W oddzielnym procesie), printf jest poleceniem wbudowanym i dlatego będzie szybsze.
%
opcji, które możesz przekazać, wydaje się, że używa tego date
polecenia. Więc man date
da ci dostępne opcje.
Ciekawy / zabawny sposób na zrobienie tego za pomocą rozszerzenia parametrów (wymaga bash 4.4
lub nowszy):
${parameter@operator} - P operator
Interpretacja to łańcuch będący wynikiem rozszerzenia wartości parametru tak, jakby był to wiersz zachęty.
$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; }
$ show_time
20180724003251
"`date +%Y-%m-%d %H:%M:%S`"
daje midate: illegal time format