Come visualizzare la data e l’ora nel terminale Linux (e usarlo negli script Bash)

Il comando date si trova nella shell Bash, che è la shell predefinita nella maggior parte delle distribuzioni Linux e persino in macOS. Questo tutorial mostra come controllare la data sulla riga di comando e come utilizzarla negli script della shell per fare di più che stampare semplicemente l’ora.

Eseguire il comando date per visualizzare queste informazioni. Stampa la data e l’ora correnti per il tuo fuso orario:

date

La formattazione predefinita sembra un po ‘sciocca. Perché l’anno non viene stampato dopo il mese e il giorno, invece di essere taggato alla fine, dietro il fuso orario? Non temere: se è il controllo sul formato dell’output che desideri, la data lo consegna a picche. Ci sono più di 40 opzioni che puoi passare fino ad oggi per istruirlo a formattare il suo output esattamente come desideri.

Per utilizzare una qualsiasi delle opzioni, digitare data, uno spazio, un segno più + e l’opzione che include il segno di percentuale iniziale. L’opzione% c (data e ora nel formato locale) fa sì che la data e l’ora vengano stampate nel formato normalizzato associato alla propria lingua. La tua locale è impostata dalle informazioni geografiche e culturali fornite quando hai installato il tuo sistema operativo. Il locale governa cose come il simbolo della valuta, le dimensioni della carta, il fuso orario e altre norme culturali.

date +%c

Output del comando date con l'opzione c

L’anno appare ora in una posizione più naturale nella produzione.

Puoi passare diverse opzioni fino ad oggi contemporaneamente. Una sequenza di opzioni è chiamata stringa di formato. Per vedere il nome del giorno (% A), il giorno del mese (% d) e il nome del mese (% B), usa questo comando:

date +%A%d%B

Output del comando date con le opzioni A d B.

Ha funzionato, ma è brutto. Nessun problema, possiamo includere spazi purché racchiuda l’intera stringa di formato tra virgolette. Notare che il + va al di fuori delle virgolette.

date +"%A %d %B"

Output del comando data con opzione A d B con spazi

Puoi aggiungere testo alla stringa di formato, in questo modo:

date +"Today is: %A %d %B"

Output del comando dati con testo aggiunto dall'utente

Scorrimento su e giù per la data pagina man cercare l’opzione che desideri diventa presto faticoso. Abbiamo suddiviso le opzioni in gruppi per aiutarti a orientarti più facilmente.

Opzioni per visualizzare la data e l’ora

% c: stampa la data e l’ora nel formato per la tua locale, incluso il fuso orario.

Output del comando date

Opzioni per visualizzare la data

% D: stampa la data nel formato mm / gg / aa.
% F: stampa la data nel formato aaaa-mm-gg.
% x: stampa la data nel formato della tua locale.

Output del comando date con le opzioni DF x

Opzioni per visualizzare il giorno

% a: stampa il nome del giorno, abbreviato in lunedì, martedì, mercoledì, ecc.
% A: stampa il nome completo del giorno, lunedì martedì, mercoledì, ecc.
% u: stampa il numero del giorno della settimana, dove lunedì = 1, martedì = 2, mercoledì = 3 e così via.
% w: stampa il numero del giorno della settimana, dove domenica = 0, lunedì = 1, martedì = 2, ecc.
% d: stampa il giorno del mese, con uno zero iniziale (01, 02… 09) se necessario.
% e: stampa il giorno del mese, con uno spazio iniziale (“1”, “2” … “9”) se necessario. Notare che gli apostrofi non vengono stampati.
% j: stampa il giorno dell’anno, con un massimo di due zeri iniziali, se necessario.

Output del comando date con un'opzione A uwdej

Opzioni per visualizzare la settimana

% U: stampa il numero della settimana dell’anno, considerando la domenica come primo giorno della settimana. Ad esempio, la terza settimana dell’anno, la ventesima settimana dell’anno, ecc.
% V: stampa il numero della settimana ISO dell’anno, considerando il lunedì come primo giorno della settimana.
% W: numero della settimana dell’anno, considerando il lunedì come primo giorno della settimana.

Output del comando data con le opzioni UVW

Opzioni per visualizzare il mese

% bo% h: stampa il nome del mese abbreviato in gennaio, febbraio, marzo, ecc.
% B: stampa il nome completo del mese, gennaio, febbraio, marzo, ecc.
% m: stampa il numero del mese, con uno zero iniziale se richiesto 01, 02, 03… 12.

Output del comando date con le opzioni bh B m

Opzioni per visualizzare l’anno

% C: stampa il secolo senza l’anno. Nel 2019 ne stamperebbe 20.
% y: stampa l’anno come due cifre. nel 2019 ne stamperà 19.
% Y: stampa l’anno in quattro cifre.

Output del comando date con le opzioni C y Y.

Opzioni per visualizzare l’ora

% T: stampa l’ora come HH: MM: SS.
% R: stampa l’ora e i minuti come HH: MM senza secondi, utilizzando l’orologio a 24 ore.
% r: stampa l’ora in base alle impostazioni locali, utilizzando l’orologio a 12 ore e un indicatore am o pm.
% X: stampa l’ora in base alle impostazioni locali, utilizzando l’orologio a 24 ore. Presumibilmente. Notare che durante il test questa opzione si è comportata esattamente come% r, come mostrato di seguito. Su una macchina Linux configurata per le impostazioni internazionali del Regno Unito e impostata su GMT, ha stampato l’ora, utilizzando l’orologio a 24 ore senza indicatore AM o PM, come previsto.

Output del comando date con le opzioni TR r X.

Opzioni per visualizzare l’ora

% H: stampa l’ora 00, 01, 02… 23.
% I: stampa l’ora utilizzando l’orologio a 12 ore, 00, 01, 02… 12, con uno zero iniziale se necessario.

Output del comando date con opzioni HI

Opzioni per visualizzare i minuti

% M: stampa i minuti, 01, 02, 03… 59, con uno zero iniziale se necessario.

Output del comando date con le opzioni M.

Opzioni per visualizzare i secondi

% s: stampa il numero di secondi da 1970-01-01 00:00:00, l’inizio di Unix Epoch.
% S: stampa i secondi, 01, 02, 03… 59, con uno zero iniziale se necessario.
% N: stampa i nanosecondi.

Output del comando date con le opzioni s SN

Opzioni per visualizzare le informazioni sul fuso orario

% z: stampa la differenza di fuso orario tra il fuso orario e UTC.
%: z: stampa la differenza di fuso orario tra il fuso orario e UTC, con un: tra le ore e i minuti. Nota: tra il segno% e z.
% :: z: stampa la differenza di orario tra il fuso orario e UTC, con: tra le ore, i minuti e i secondi. Notare il simbolo :: tra il segno% e z.
% Z: stampa il nome alfabetico del fuso orario.

Output del comando date con le opzioni del fuso orario

Opzioni relative alla formattazione

% p: stampa l’indicatore AM o PM in maiuscolo.
% P: stampa l’indicatore di mattina o di pomeriggio in minuscolo. Nota la stranezza con queste due opzioni. Una p minuscola fornisce un output in maiuscolo, una P maiuscola fornisce un output in minuscolo.
% t: stampa una scheda.
% n: stampa una nuova riga.

Output del comando data con indicatore AM PM e opzioni di formattazione

Opzioni per modificare altre opzioni

Questi modificatori possono essere inseriti tra la% e la lettera di opzione di altre opzioni per modificarne la visualizzazione. Ad esempio,% -S rimuove lo zero iniziale per i valori dei secondi a una cifra.

-: un singolo trattino impedisce la spaziatura interna pari a zero su valori a una cifra.
_: un singolo trattino basso aggiunge spazi iniziali per valori a una cifra.
0: fornisce zeri iniziali per valori a una cifra.
^: Utilizza le maiuscole, se possibile (non tutte le opzioni rispettano questo modificatore).
#: Usa l’opposto del caso predefinito per l’opzione, se possibile (non tutte le opzioni rispettano questo modificatore).

Output del comando data con opzioni di formattazione

Altri due bei trucchi

Per ottenere l’ora dell’ultima modifica di un file, utilizzare l’opzione -r (riferimento). Nota che questo utilizza un – (trattino) invece di un segno% e non richiede un segno +. Prova questo comando nella tua cartella Inizio:

date -r .bashrc

Output del comando data con l'opzione ora di modifica del file

L’impostazione TZ consente di modificare il fuso orario per la durata di un singolo comando.

TZ=GMT date +%c

Output del comando date per un fuso orario diverso

Utilizzo della data negli script

Abilitare uno script della shell Bash per stampare l’ora e la data è banale. Crea un file di testo con il seguente contenuto e salvalo come gd.sh.

#!/bin/bash

TODAY=$(date +"Today is %A, %d of %B")
TIMENOW=$(date +"The local time is %r")
TIME_UK=$(TZ=BST date +"The time in the UK is %r")

echo $TODAY
echo $TIMENOW
echo $TIME_UK

Digitare il seguente comando per impostare le autorizzazioni di esecuzione e rendere eseguibile lo script.

chmod +x gd.sh

Esegui lo script con questo comando:

./gd.sh

Output dello script gd.sh

Possiamo usare il comando date per fornire un timestamp. Lo script mostrato creerà una directory con il timestamp come nome. Copierà quindi tutti i file di testo dalla cartella corrente al suo interno. Eseguendo periodicamente questo script possiamo acquisire un’istantanea dei nostri file di testo. Nel tempo creeremo una serie di cartelle con diverse versioni dei nostri file di testo.

Nota che questo non è un robusto sistema di backup, è solo a scopo illustrativo.

Crea un file di testo con il seguente contenuto e salvalo come snapshot.sh.

#!/bin/bash

# obtain the date and time
date_stamp=$(date +"%F-%H-%M-%S")

# make a directory with that name
mkdir "$date_stamp"

# copy the files from the current folder into it
cp *.txt "$date_stamp"

# all done, report back and exit
echo "Text files copied to directory: "$date_stamp

Digitare il seguente comando per impostare le autorizzazioni di esecuzione e rendere eseguibile lo script.

chmod +x snapshot.sh

Esegui lo script con questo comando:

./snapshot.sh

Effetto dell'esecuzione dello script snapshot.sh

Vedrai che è stata creata una directory. Il suo nome è la data e l’ora in cui lo script è stato eseguito. All’interno di quella directory ci sono copie dei file di testo.

Dato un po ‘di pensiero e creatività, anche l’umile comando della data può essere utilizzato in modo produttivo.