Introduzione

Il comando date visualizza o imposta la data del sistema. È più comunemente usato per stampare la data e l'ora in diversi formati e calcolare le date future e passate.

In questo tutorial, tratteremo le basi del comando date.

Utilizzo del comando Linux date

La sintassi per il comando date è la seguente:

date [OPTION]... [+FORMAT]

Per visualizzare l'ora e la data del sistema corrente utilizzando la formattazione predefinita, invocare il comando senza alcuna opzione:

date

L'output includerà il giorno della settimana, il mese, il giorno del mese, l'ora, il fuso orario e l'anno:

Sat Jun  3 12:21:45 CEST 2019

Opzioni di formattazione della data

L'output di date può essere formattato con una sequenza di caratteri di controllo del formato preceduti da un segno +. I controlli di formato iniziano con il simbolo % e sono sostituiti dai loro valori.

date +"Year: %Y, Month: %m, Day: %d"

Il simbolo %Y verrà sostituito con l'anno, %m con il mese e %d con il giorno del mese:

Year: 2019, Month: 05, Day: 03

Ecco un altro esempio:

date "+DATE: %D%nTIME: %T"
DATE: 05/03/19
TIME: 02:32:12

Di seguito è riportato un piccolo elenco di alcuni dei caratteri di formattazione più comuni:

  • %a - Nome abbreviato del giorno della settimana abbreviato di Locale (ad es. Lun)
  • %A - Nome completo abbreviato del giorno della settimana di Locale (ad es. Lunedì)
  • %b - Nome abbreviato del mese abbreviato di Locale (ad es. Jan)
  • %B - Nome abbreviato del mese lungo di Locale (ad es. Gennaio)
  • %d - Giorno del mese (ad es. 01)
  • %H - Ora (00..23)
  • %I - Ora (01..12)
  • %j - Giorno dell'anno (001..366)
  • %m - Mese (01..12)
  • %M - Minuti (00..59)
  • %S - Secondo (00..60)
  • %u - Giorno della settimana (1..7)
  • %Y - Full year (e.g. 2019)

Per ottenere un elenco completo di tutte le opzioni di formattazione eseguite date --help o man date nel terminale.

L'opzione -d ti consente di operare in una data specifica. È possibile specificare la data come stringa di date leggibile dall'uomo come di seguito:

date -d "2010-02-07 12:10:53"
Sun Feb  7 12:10:53 CET 2010

Utilizzando la formattazione personalizzata:

date -d '16 Dec 1974' +'%A, %d %B %Y'
Monday, 16 December 1974

La stringa della data può anche accettare valori come "domani", "venerdì", "venerdì scorso", "venerdì prossimo", "mese prossimo", "settimana prossima" ... ecc.

date -d "last week"
Sat May 22 10:06:22 CEST 2019

Puoi anche utilizzare l'opzione stringa della data per mostrare l'ora locale per diversi fusi orari. Ad esempio, per mostrare l'ora locale per le 6:30 di lunedì prossimo sulla costa orientale australiana, digitare:

date -d 'TZ="Australia/Sydney" 06:30 next Monday'
Sun Jun  22 10:06:22 CEST 2019

Sostituire il fuso orario

Il comando date utilizza il fuso orario di sistema predefinito . Per utilizzare un fuso orario diverso impostare la variabile di ambiente TZ sul fuso orario desiderato.

Ad esempio, per mostrare l'ora di Melbourne, Aus, digitare:

TZ='Australia/Melbourne' date
Sat Jun  1 22:35:10 AEST 2019

Per elencare tutti i fusi orari disponibili, è possibile elencare i file nella directory /usr/share/zoneinfo o utilizzare il comando timedatectl list-timezones.

Convertitore di epoca

Il comando date può essere utilizzato come convertitore di epoca. Epoch, o timestamp Unix, è il numero di secondi trascorsi dal 1 ° gennaio 1970 alle 00:00:00 UTC.

Per stampare il numero di secondi dall'epoca al giorno corrente utilizzare il controllo formato %s:

date +%s
1575037004

Per convertire i secondi dall'epoca ad oggi, imposta i secondi come stringa di data con il prefisso @:

date -d @1575037004
ven 29 nov 2019, 15:16:44, CET

Usare Date con altri comandi

Il comando date viene utilizzato più frequentemente per creare nomi di file che contengono l'ora e la data correnti.

Il comando seguente creerà un file di backup Mysql nel seguente formato database_name-20190601.sql

mysqldump  database_name > database_name-$(date +%Y%m%d).sql

È inoltre possibile utilizzare il comando date negli script della shell. Nell'esempio seguente stiamo assegnando l'output di date alla variabile date_now:

date_now=$(date "+%F-%H-%M-%S")

echo $date_now
2019-06-01-15-02-27

Visualizzare l'ora dell'ultima modifica di un file

Il comando date con l'opzione -r mostra l'ora dell'ultima modifica di un file. Per esempio:

date -r /etc/hosts
mar 19 nov 2019, 10:12:12, CET

Se si desidera modificare il file timestamp, utilizzare il comando touch.

Impostare l'ora e la data del sistema

L'impostazione manuale dell'ora e della data di sistema con il comando date di solito non è consigliata poiché sulla maggior parte delle distribuzioni Linux l'orologio di sistema è sincronizzato usando i servizi ntp o systemd-timesyncd.

Tuttavia, se si desidera impostare manualmente l'orologio di sistema, è possibile utilizzare l'opzione --set=. Ad esempio, se si desidera impostare la data e l'ora alle 17:30, 01 giugno 2019, digitare:

date --set="20190601 17:30"

Conclusione

Ormai dovresti avere una buona conoscenza di come usare il comando date di Linux.