Data e hora no bash do Linux [fechado]

26

Estou tentando exibir uma data e hora na forma de

07/08/2013 16:52:13

usando o comando no script bash:

dt=`date '+%d/%m/%Y_%H:%M:%S'`

qual variável é usada para preencher um arquivo CSV.

O único caractere aceito é "_" (sublinhado) ou "-" entre data e hora, a saída é

07/07 / 2013_16: 52: 13

Como posso obter um espaço entre a data e a hora? Eu tentei quase (espero) tudo.

Henry
fonte
5
” E “-” são os únicos caracteres aceitos por _quem ? O que impede você de substituir o "_" por "" no dateformato da string?
manatwork
Nada impede a inclusão do "" no comando, eles simplesmente não aparecem na saída. Tente date + "% b% e" e você obterá "4 de setembro" (um espaço) para hoje, não o desejado 2. Estou usando-o em um script e minha solução é fazer a operação em 3 etapas (I na verdade, combine-os em uma linha de código, mas você entendeu).
Jim2B 4/15
Com todo o respeito, como essa pergunta obteve 20 votos? E como ele entrou na fila de reabertura?
G-Man diz 'Reinstate Monica'

Respostas:

49
#!/bin/bash

dt=$(date '+%d/%m/%Y %H:%M:%S');
echo "$dt"

Acho que o problema está em 'ecoar' para o csv.

user1293137
fonte
3
se você precisar de milissegundos, use date '+%F %T.%3N'. se você precisar de microssegundos, use date '+%F %T.%6N'. Se você precisar de nanossegundos, use date '+%F %T.%N'. %Fé para data, dá YYYY-MM-DD, você pode usar %Dpara obter MM-DD-YYYY, %Té para tempo HH:MM:SS,.
computingfreak
4

Isso funciona:

#!/bin/bash
dt=`date '+%d/%m/%Y %H:%M:%S'`
echo "$dt"

Também é possível usar $(e em )vez de `e`.

Alexander
fonte
Esqueci de mencionar que ele dá errado após aplicar o awk / home / pi / SB_tool / sunnybeamtool / bin / sunnybeamtool -l | awk -v tot = $ tot -v dt = $ dt -v dia = $ dia -v mth = $ mth 'seguinte erro 08/08/2013 23:03:03 awk: linha 1: erro de sintaxe em ou próximo a:
Henry
Resolvido atribuindo 2 valores separados dt e tm. O awk não aceita 1 variável com 2 valores separados por espaço #
Henry