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

9

O comando date exibe a data e a hora atuais da seguinte forma: 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, assim: date "+%Y-%m-%dT%H:%M:%S%:z" , que dá algo como 2013-04-12T15:04:37+00:00 .

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

    
por its_me 12.04.2013 / 17:19

4 respostas

7

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

A string de formato para o comando date é baseada na string de formato da função printf do C; o padrão C também se refere a coisas como %d como "especificações de conversão".

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

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

The DESCRIPTION is updated to refer to conversion specifications, instead of field descriptors for consistency with the LC_TIME category.

Portanto, 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ê tenha para se referir a eles dessa maneira.

    
por 12.04.2013 / 17:33
4

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

A "sequência de escape" sendo "% 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 dá ao caractere seguinte um significado incomum / especial).

    
por 12.04.2013 / 17:34
3

Este documento do Centro de Informações da IBM afirma claramente que os alfabetos em %Y , %m , %d , %H , %M , %S , etc. chamado " Descritores de campo ".

You must precede each field descriptor with a % (percent sign). The system replaces the field descriptor with the specified value. [...] The date command copies any other characters to the output without change.

Isso responde às minhas duas perguntas (sobre% n & T). E eu acredito que isso é tão autoritário quanto possível.

    
por 13.04.2013 / 10:46
2

Como outros afirmaram, o T é uma letra literal T . Mas, para ser específico, o seu exemplo date "+%Y-%m-%dT%H:%M:%S%:z" parece ser uma string de formato conforme a especificação ISO-8601 para data e hora Tempo. Então aqui o T é um delimitador que separa a data da hora.

    
por 12.04.2013 / 22:38