Imprimindo a hora da época com a utilidade da data

5

Da leitura outra resposta Eu sei que o seguinte comando pode ser usado para imprimir o atual epoch time :

$ date +'%s'
1491150773

Da leitura da página do manual date(1) (nota: eu realmente uso o macOS) que encontrei um exemplo ilustrando o uso:

 Finally the command:

 date -j -f "%a %b %d %T %Z %Y" "'date'" "+%s"

 can be used to parse the output from date and express it in Epoch time.

Ao ler o exemplo, parece que o + pode ir dentro das aspas simples:

$ date '+%s'
1491150781

Embora seja possível imprimir com sucesso o horário atual da época, não entendo por que ele está funcionando e tenho algumas perguntas:

  • Por que date +'%s' imprime o horário atual da época? Existe um exemplo mais geral que ilustra o padrão por trás de seu uso neste exemplo?
  • Por que eu posso colocar o + dentro das aspas?

Eu tentei colocar o comando em explicahell , mas não é muito útil:

    
por mbigras 02.04.2017 / 18:48

1 resposta

13

A data do BSD e a data do GNU têm o seguinte formato:

date +FORMAT

com FORMAT é a string de formato de saída para exibir a data. Então, o que você alimentaria para date é apenas uma string, começando com + .

Antes de passar a string para date , a string é interpretada pelo seu shell. Portanto, +%s ou +'%s' ou "+%s" são ambos equivalentes, interpretados como estão por todos os shells POSIX.

A única vantagem de +'%s' é que você pode detectar rapidamente qual formato de string foi usado ou copiá-lo, analisando-o sem se preocupar com + .

Além disso, +'FORMAT' ajudará você ao usar alguns formatos especiais, que podem ser interpretados como sua expansão de shell. Exemplo com zsh :

date +'(%s)'

funcionaria enquanto:

date +(%s)

não seria.

    
por 02.04.2017 / 19:00