Comando 'fecha +FORMATO': ¿Cómo se llaman %a, %A, %b, etc.?

Comando 'fecha +FORMATO': ¿Cómo se llaman %a, %A, %b, etc.?

El datecomando genera la fecha y hora actuales 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í: date "+%Y-%m-%dT%H:%M:%S%:z"lo que da algo como 2013-04-12T15:04:37+00:00.

Pero quiero saber cómo se llaman colectivamente %Y, %m, %d, %H, %M, %Setc. (es decir, la terminología). Además, ¿cómo se Tllama, ya que es diferente al resto?

Respuesta1

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

La cadena de formato del datecomando se basa estrechamente en la cadena de formato de la función de C printf; 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 en la salida sin cambios".

Según 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 a los descriptores de campo, para mantener la coherencia con la categoría LC_TIME.

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

Por supuesto que eso no significa quetenerreferirse a ellos de esa manera.

Respuesta2

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

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

Respuesta3

Este documentodel Centro de Información de IBM establece claramente quelos alfabetosen %Y, %m, %d, %H, %M, %S, etc. se llaman "Descriptores de campo".

Debes preceder a cadadescriptor de campocon 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 y T). Y creo que esto es lo más autoritario posible.

Respuesta4

Como otros han dicho, Tes una carta literal T. Pero para ser específico, su ejemplo date "+%Y-%m-%dT%H:%M:%S%:z"parece ser una cadena de formato que cumple con elISO-8601especificación de fecha y hora. Aquí Thay un delimitador que separa la fecha de la hora.

información relacionada