Por exemplo, desejo exibir a data e hora atuais no seguinte formato:
yyyymmddhhmmss
Como faço isso? Parece que a maioria formato de data vem com -
, /
, :
, etc.
Por exemplo, desejo exibir a data e hora atuais no seguinte formato:
yyyymmddhhmmss
Como faço isso? Parece que a maioria formato de data vem com -
, /
, :
, etc.
Respostas:
Aqui está:
date +%Y%m%d%H%M%S
Como man date
diz perto do topo, você pode usar o date
comando assim:
date [OPTION]... [+FORMAT]
Ou seja, você pode dar a ele um parâmetro de formato, começando com a +
. Você provavelmente pode adivinhar o significado dos símbolos de formatação que usei:
%Y
é para o ano%m
é por mês%d
é por diaVocê pode encontrar este e outros símbolos de formatação em man date
.
Se você estiver usando o Bash, também poderá usar um dos seguintes comandos:
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
Você pode usar a opção -v varname
para armazenar o resultado em $varname
vez de imprimi-lo no stdout:
printf -v varname '%(%Y%m%d%H%M%S)T'
Embora o comando de data seja sempre executado em um subshell (isto é, em um processo separado), printf é um comando interno e, portanto, será mais rápido.
%
opções você pode passar, isso parece estar usando o date
comando. Assim, man date
apresentará as opções disponíveis.
Maneira interessante / engraçada de fazer isso usando a expansão de parâmetros (requer bash 4.4
ou mais recente):
${parameter@operator} - P operator
A expansão é uma string que resulta da expansão do valor do parâmetro como se fosse uma string de 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`"
dá-me umdate: illegal time format