Come @ TomMcKenzie dice in un commento ad un'altra risposta, date -r 123456789
è probabilmente più comune (es. più ampiamente implementata) soluzione semplice per i tempi forniti come secondi da Unix Epoch, ma sfortunatamente non esiste una soluzione portatile universale garantita.
L'opzione -d
su molti tipi di sistemi indica qualcosa di completamente diverso dall'estensione di GNU Date --date
. Purtroppo GNU Date non interpreta lo -r
come le altre implementazioni. Quindi sfortunatamente devi sapere quale versione di date
stai usando, e molti vecchi comandi di Unix date
non supportano nessuna delle due opzioni.
Ancora peggio, POSIX date
riconosce né -d
né -r
e fornisce un modo standard in qualsiasi comando a tutti (che io sappia) per formattare un tempo di Unix da linea di comando (in quanto POSIX Awk manca anche strftime()
). (Non è possibile utilizzare touch -t
e ls
perché il primo non accetta un tempo dato come secondi dalla Unix Epoch.)
Nota se L'Unico Vero Awk disponibile direttamente da Brian Kernighan non hanno ora la funzione built-in strftime()
così come una funzione systime()
per restituire l'ora corrente in secondi da Unix Epoch), quindi forse la soluzione Awk è la più portabile.
fonte
2013-01-01 03:24:23
Quale shell stai usando? Bash? Zsh? Dash? –
Bash - dimenticato di menzionare! – chimeracoder
possibile duplicato di [Come convertire i timestamp in date in bash?] (Http://stackoverflow.com/questions/2371248/how-to-convert-timestamps-to-dates-in-bash) – user