Come creare un formato di timestamp identico come usato nel file ppp.log in uno script di shell?

0

Nella necessità di aggiungere messaggi di registrazione personalizzati a ppp.log, vedo che mancano la data e l'ora quando si invia il comando a >> /var/log/ppp.log . Altri messaggi relativi a pppd in ppp.log sono preceduti da un formato di timestamp simile a: " Sat Apr 9 17:18:02 2016 : ". Il mio obiettivo è quello di produrre questo formato di data ora esatto in uno script di shell Mavericks

So che altri file di registro hanno timestamp diversi per data / ora. Voglio ricreare il formato come usato in ppp.log.

Regressione

Questo ambiente Mac OS X 10.9 è configurato con una lingua locale olandese. Pertanto $ echo $(date '+%a') restituisce " za " invece del desiderato " Sat ". Questa è la parte che può essere riparata da export LC_TIME="C" o export LC_TIME="POSIX" . Ho provato a leggere la pagina man date e pppd . Tuttavia, c'è ancora il nome abbreviato del fuso orario alfabetico CEST (la parte %Z in $ date +%Z ) nell'output " Sat Apr 9 18:12:12 CEST 2016 ".

So che posso creare il formato utilizzando tutti i diversi codici di formato $ date , come %a %b %e eccetera. Anche se immagino ci sia un modo più breve, non c'è?

    
posta Pro Backup 09.04.2016 - 21:25
fonte

1 risposta

1

Dopo molte ricerche, un cerca "formato data senza abbreviazione alfabetica del fuso orario " restituita Informazioni su ISO 8601, lo standard di rappresentazione della data e dell'ora . Queste informazioni mi hanno aiutato a scoprire che il formato di timestamp che viene utilizzato in Mavericks nel suo file /private/var/log/ppp.log, è in realtà il formato asctime () di ANSI C.

C asctime

Per creare asctime in stile C in una shell, un sistema non inglese potrebbe dover sostituire la variabile d'ambiente per i messaggi orari:

export LC_TIME="C"

E poi c'è l'opzione di formattazione $ date %c che ora mostra l'ora della data locale nel formato desiderato:

$ date +%c
Sat Apr  9 21:10:20 2016

Un suggerimento quando si usa echo date , si mette la data tra gli apostrofi echo "$(date +%c)" , altrimenti lo spazio di riempimento nelle date a una cifra potrebbe essere rimosso dall'output:

$ echo $(date +%c)
Sat Apr 9 21:13:57 2016
$ echo "$(date +%c)"
Sat Apr  9 21:14:30 2016
    
risposta data 09.04.2016 - 21:25
fonte

Leggi altre domande sui tag