Comando 'date + FORMAT': ¿cómo se llaman% a,% A,% b, etc.?


10

El datecomando de salida a la fecha actual y la hora de esta manera: Fri Apr 12 15:04:03 UTC 2013.

Para tener la fecha y hora de salida en un formato personalizado, podemos usar date +FORMAT, por ejemplo, así: lo date "+%Y-%m-%dT%H:%M:%S%:z"que da algo así 2013-04-12T15:04:37+00:00.

Pero yo quiero saber lo que el %Y, %m, %d, %H, %M, %S, etc. son llamados colectivamente (es decir, la terminología). Además, ¿cómo se Tllama, ya que es diferente del resto?


3
“FORMATO controla la salida. Las secuencias interpretadas son ... "- man dateY la" T "es solo una literal" T ".
manatwork

@manatwork En la página de manual, pensé que las secuencias se refieren tanto al %Ysignificado como al respectivo.
its_me

Consejo:date +"You will die in the year %Y"
Izkata

@Izkata no tiene sentido (?)
its_me

1
@TheoneManis Solo un ejemplo de que Tno es especial. Además, estaba teniendo un día extraño en el trabajo cuando escribí eso (escuchando las conversaciones de los compañeros de trabajo).
Izkata

Respuestas:


7

El término utilizado en la especificación POSIX del datecomando es "especificaciones de conversión".

La cadena de formato para el datecomando se basa estrechamente en la cadena de formato para la printffunción de C ; el estándar C también se refiere a cosas %dcomo "especificaciones de conversión".

Tno precedido por %es solo un carácter: "Todos los demás caracteres se copiarán a la salida sin cambios".

De acuerdo con la sección del historial de cambios de la descripción POSIX de date:

La DESCRIPCIÓN se actualiza para hacer referencia a las especificaciones de conversión, en lugar de los descriptores de campo para mantener la coherencia con la categoría LC_TIME.

Aparentemente, una versión anterior de la especificación utilizaba la frase "descriptores de campo", pero "especificaciones de conversión" es el término oficial actual.

Por supuesto, eso no significa que tenga que referirse a ellos de esa manera.


¿Son " conversion sequences" o " format sequences" términos apropiados también? Estoy considerando sequencesmás specificationsporque se trata en realidad menciona en la página del manual date.
its_me

2
@TheoneManis: Cualquiera de los tres parece lo suficientemente obvio sobre lo que significa.
Keith Thompson el

4

Creo que "secuencias de escape" o (en este caso) "caracteres especiales para secuencias de porcentaje de escape" sería la forma típica de referirse a ellas. Las secuencias de barra invertida y de porcentaje de escape se usan mucho en C (por ejemplo, printf), por lo que también se han filtrado en varios comandos de Unix (como especificar la solicitud para el shell).

La "secuencia de escape" es "% Y", "% m", "% d" y así sucesivamente; y los "caracteres especiales" son "Y", "m", "d" y así sucesivamente. "%" sería el "carácter de escape" (el carácter que le da al siguiente carácter un significado inusual / especial).


3

Este documento de Centro de información de IBM establece claramente que los alfabetos en %Y, %m, %d, %H, %M, %S, etc. son llamados " descriptores de campo ".

Debe preceder a cada descriptor de campo con un % (signo de porcentaje). El sistema reemplaza el descriptor de campo con el valor especificado. [...] El datecomando copia cualquier otro carácter a la salida sin cambios.

Eso responde a mis dos preguntas (sobre% n & T). Y creo que esto es tan autoritario como puede ser.


1
IBM no inventó el datecomando; ¿Qué hace que su documentación sea autoritativa? El comportamiento del comando está definido actualmente por POSIX, que no utiliza ese término. El historial de cambios en la parte inferior de la descripción POSIX dice "La DESCRIPCIÓN se actualiza para referirse a las especificaciones de conversión, en lugar de los descriptores de campo para mantener la coherencia con la categoría LC_TIME", lo que implica que "especificación de conversión", no "descriptor de campo" es el correcto término actual Vea también mi respuesta actualizada.
Keith Thompson

2

Como otros han dicho, la Tletra es literal T. Pero para ser específicos, su ejemplo date "+%Y-%m-%dT%H:%M:%S%:z"parece ser una cadena de formato conforme a la especificación ISO-8601 para fecha y hora. Así que aquí Thay un delimitador que separa la fecha de la hora.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.