Comando 'date + FORMAT' - Como são chamados% a,% A,% b etc.?


10

O datecomando emite a data e hora atual como este: Fri Apr 12 15:04:03 UTC 2013.

Para ter a data e hora de saída em um formato personalizado, podemos usar date +FORMAT, por exemplo, o seguinte: date "+%Y-%m-%dT%H:%M:%S%:z"que fornece algo como 2013-04-12T15:04:37+00:00.

Mas eu quero saber o que o %Y, %m, %d, %H, %M, %S, etc. são chamados coletivamente (ou seja, a terminologia). Além disso, como é Tchamado, pois é diferente do resto?


3
“FORMAT controla a saída. Sequências interpretadas são ... ”- homem dateE o“ T ”é apenas um“ T ”literal.
manatwork

@manatwork Na página de manual, pensei que as sequências se referissem ao %Ysignificado e ao respectivo significado.
its_me

Dica:date +"You will die in the year %Y"
Izkata 12/04

@Izkata não faz sentido (?)
its_me

1
@TheoneManis Apenas um exemplo disso Tnão sendo especial. Além disso, eu estava tendo um dia estranho no trabalho quando digitei isso (ouvindo as conversas dos colegas de trabalho).
Izkata

Respostas:


7

O termo usado na especificação POSIX do datecomando é "especificações de conversão".

A string de formato para o datecomando é intimamente baseada na string de formato da printffunção C ; o padrão C também se refere a coisas como %d"especificações de conversão".

Tnão precedido por %é apenas um caractere: "Todos os outros caracteres devem ser copiados para a saída sem alterações."

De acordo com a seção do histórico de alterações da descrição do POSIX de date:

O DESCRIPTION é atualizado para se referir às especificações de conversão, em vez de descritores de campo para consistência com a categoria LC_TIME.

Aparentemente, uma versão anterior da especificação usou a frase "descritores de campo", mas "especificações de conversão" é o termo oficial atual.

Claro que isso não significa que você precise se referir a eles dessa maneira.


Os termos " conversion sequences" ou " format sequences" também são adequados? Estou pensando em sequencesmais specificationsporque é realmente mencionado na página de manual para date.
its_me

2
@TheoneManis: Qualquer um dos três parece suficientemente óbvio sobre o que isso significa.
21713 Keith Thompson

4

Eu pensaria que "seqüências de escape" ou (nesse caso) "caracteres especiais para sequências de escape percentual" seriam a maneira típica de se referir a elas. As seqüências de barra invertida e de escape percentual são muito usadas em C (por exemplo, printf), portanto elas também foram filtradas em vários comandos do Unix (como especificar o prompt do shell).

A "sequência de escape" é "% Y", "% m", "% d" e assim por diante; e os "caracteres especiais" sendo "Y", "m", "d" e assim por diante. "%" seria o "caractere de escape" (o caractere que atribui ao caractere a seguir um significado incomum / especial).


3

Este documento do Centro de Informações do IBM afirma claramente que os alfabetos em %Y, %m, %d, %H, %M, %S, etc. são chamados de " descritores de campo ".

Você deve preceder cada descritor de campo com um % (sinal de porcentagem). O sistema substitui o descritor de campo pelo valor especificado. [...] O datecomando copia outros caracteres para a saída sem alteração.

Isso responde às minhas duas perguntas (sobre% n & T). E acredito que isso seja o mais autoritário possível.


1
A IBM não inventou o datecomando; o que torna sua documentação autoritativa? O comportamento do comando é atualmente definido pelo POSIX, que não usa esse termo. O histórico de alterações na parte inferior da descrição do POSIX indica "A DESCRIÇÃO é atualizada para se referir às especificações de conversão, em vez de descritores de campo para consistência com a categoria LC_TIME.", Implicando que "especificação de conversão", não "diescriptor de campo" está correta termo atual. Veja também minha resposta atualizada.
perfil completo de Keith Thompson

2

Como outros já declararam, a Tcarta é literal T. Mas, para ser específico, seu exemplo date "+%Y-%m-%dT%H:%M:%S%:z"parece ser uma sequência de formatos em conformidade com a especificação ISO-8601 para data e hora. Então, aqui Testá um delimitador que separa a data da hora.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.