date +%x_%H:%M:%S:%N
se você precisar imprimir apenas dois primeiros nums como ms:
date +%x_%H:%M:%S:%N | sed 's/\(:[0-9][0-9]\)[0-9]*$//'
para armazená-lo no var:
VAR=$(date +%x_%H:%M:%S:%N | sed 's/\(:[0-9][0-9]\)[0-9]*$//')
Eu preciso mostrar a data e a hora no formato desejado no Unix / Linux. Meu formato desejado é: dd / mm / aaaa hh: mm: ss: ms no Unix ou Linux. Cheguei perto usando o seguinte comando:
echo $(date +%x_%r)
Isso retorna:
08/20/2012_02:26:14 PM
Alguma sugestão?
Se você quiser milissegundos em vez de precisão de nanossegundos, você pode usar %3N
em vez de %N
:
$ date +'%d/%m/%Y %H:%M:%S:%3N'
12/04/2014 18:36:20:659
ou com o uso desejado de $(…)
:
$ echo "$(date +'%d/%m/%Y %H:%M:%S:%3N')"
12/04/2014 18:36:20:659
Mas esteja ciente de que %N
pode não ser implementado dependendo do seu sistema de destino ou versão bash.
Testado em um sistema embarcado »GNU bash, versão 4.2.37 (2) -release (arm-buildroot-linux-gnueabi)« não houve %N
(nem %3N
):
date +"%F %T,%N"
2014-01-08 16:44:47,%N
date +"%d/%m/%Y_%H:%M:%S:%N"
Mais leitura útil: Como formatar a data para exibição ou uso em um script de shell
Algo parecido com isto
date +'%d/%m/%Y_%H:%M:%S:%N'
Usou% N por nanossegundos (000000000..999999999) desde que eu não encontrei milissegundos agora
Você pode tentar:
echo 'date +"%Y_%m_%d %H:%M:%S,"''date +%N/1000000|bc -l|grep -Eo "^([0-9]{0,3})"'
Por alguma razão '' 'é omitido, então coloque-o após o eco e no final, ou simplesmente:
date +"[%Y_%m_%d %H:%M:%S,%3N]"
Tags date timestamps