Comando 'data + FORMATO' - Come si chiamano% a,% A,% b, ecc.?


10

Il datecomando visualizza la data e ora correnti così: Fri Apr 12 15:04:03 UTC 2013.

Per avere la data e l'ora di output in un formato personalizzato possiamo usare date +FORMAT, ad esempio, in questo modo: date "+%Y-%m-%dT%H:%M:%S%:z"che dà qualcosa di simile 2013-04-12T15:04:37+00:00.

Ma voglio sapere qual è il %Y, %m, %d, %H, %M, %S, ecc sono chiamati collettivamente (vale a dire la terminologia). Inoltre, come si Tchiama, in quanto è diverso dal resto?


3
“FORMAT controlla l'output. Le sequenze interpretate sono ... "- uomo dateE la" T "è solo una" T "letterale.
arte

@manatwork Nella pagina man, ho pensato che le sequenze si riferissero sia al %Yloro sia al loro significato.
its_me

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

@Izkata non ha senso (?)
its_me

1
@TheoneManis Solo un esempio di ciò che Tnon è speciale. Inoltre, stavo vivendo una strana giornata di lavoro quando l'ho scritta (ascoltando le conversazioni dei colleghi).
Izkata,

Risposte:


7

Il termine utilizzato nella specifica POSIX del datecomando è "specifiche di conversione".

La stringa di formato per il datecomando è strettamente basata sulla stringa di formato per la printffunzione di C ; lo standard C si riferisce anche a cose come %d"specifiche di conversione".

Tnon preceduto da %è solo un carattere: "Tutti gli altri caratteri devono essere copiati nell'output senza modifiche."

Secondo la sezione della cronologia delle modifiche della descrizione POSIX di date:

DESCRIPTION viene aggiornato per fare riferimento alle specifiche di conversione, anziché ai descrittori di campo per coerenza con la categoria LC_TIME.

Quindi apparentemente una versione precedente della specifica utilizzava la frase "descrittori di campo", ma "specifiche di conversione" è l'attuale termine ufficiale.

Ovviamente ciò non significa che devi fare riferimento a loro in quel modo.


Anche i termini " conversion sequences" o " format sequences" sono appropriati? Sto prendendo sequencesin considerazione specificationsperché è effettivamente menzionato nella pagina di manuale di date.
its_me

2
@TheoneManis: Uno qualsiasi dei tre sembra sufficientemente ovvio su cosa significhi.
Keith Thompson,

4

Penserei che "sequenze di escape" o (in questo caso) "caratteri speciali per sequenze con escape in percentuale" sarebbero il modo tipico di riferirle. Le sequenze con backslash e con escape percentuale sono molto usate in C (es. Printf), quindi sono state filtrate anche in diversi comandi Unix (come specificare il prompt per la shell).

La "sequenza di escape" è "% Y", "% m", "% d" e così via; e i "caratteri speciali" sono "Y", "m", "d" e così via. "%" sarebbe il "carattere di escape" (il personaggio che dà al personaggio seguente un significato insolito / speciale).


3

Questo documento da Information Center di IBM afferma chiaramente che gli alfabeti in %Y, %m, %d, %H, %M, %S, ecc sono chiamati " Campo descrittori ".

È necessario precedere ogni descrittore di campo con un % (segno di percentuale). Il sistema sostituisce il descrittore di campo con il valore specificato. [...] Il datecomando copia qualsiasi altro carattere nell'output senza modifiche.

Questo risponde alle mie due domande (circa% n & T). E credo che questo sia il più autorevole possibile.


1
IBM non ha inventato il datecomando; cosa rende autorevole la loro documentazione? Il comportamento del comando è attualmente definito da POSIX, che non usa quel termine. La cronologia delle modifiche in fondo alla descrizione POSIX dice "La DESCRIZIONE è aggiornata per fare riferimento alle specifiche di conversione, anziché ai descrittori di campo per coerenza con la categoria LC_TIME.", Sottintendendo che "specifica di conversione", non "descrittore di campo" è corretto termine attuale. Vedi anche la mia risposta aggiornata.
Keith Thompson,

2

Come altri hanno affermato, Tè una lettera letterale T. Ma per essere precisi, il tuo esempio date "+%Y-%m-%dT%H:%M:%S%:z"sembra essere una stringa di formato conforme alla specifica ISO-8601 per data e ora. Quindi qui Tc'è un delimitatore che separa la data dall'ora.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.