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 datediz perto do topo, você pode usar o datecomando 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 varnamepara armazenar o resultado em $varnamevez 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 datecomando. Assim, man dateapresentará as opções disponíveis.
Maneira interessante / engraçada de fazer isso usando a expansão de parâmetros (requer bash 4.4ou mais recente):
${parameter@operator} - P operatorA 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