Come lavorare con data e ora in Bash utilizzando il comando date
Il comando Date è un programma bash esterno che consente di impostare o visualizzare la data e l'ora del sistema. Fornisce inoltre diverse opzioni di formattazione. Il comando Date è installato in tutte le distribuzioni Linux per impostazione predefinita.
which date
type -a date
Digita il comando data nel terminale per visualizzare la data e l'ora correnti.
date
Modifica la data e l'ora del sistema Linux
Utilizzando il comando date, è possibile modificare la data del sistema, l'ora e il fuso orario e la modifica deve essere sincronizzata con l'orologio hardware.
date --set="Thu Nov 12 13:06:59 IST 2020"
hwclock --systohc
Opzioni di formattazione
Un buon posto per ottenere l'elenco delle opzioni di formattazione sarà la pagina man.
man date
Vediamo alcune delle opzioni di formattazione più comuni che utilizzeremo.
- Per applicare la formattazione utilizzare "+ seguito da "formatter".
- Per ottenere un elenco delle opzioni di formattazione per GNU\LINUX dai un'occhiata alla pagina man collegata.
- Per ottenere un elenco delle opzioni di formattazione per BSD, dai un'occhiata alla pagina man collegata.
Le due parti importanti del comando date sono l'utilizzo del formato +%
e dell'opzione –date.
Ora applichiamo un po' di formattazione al comando data. Per applicare la formattazione, aggiungi il segno più (+)
seguito da %formatter
come mostrato negli esempi.
Gestione della data in Linux
Diamo un'occhiata a come utilizzare i formattatori relativi alla data in un semplice script di shell chiamato "date.sh".
PRINT YEAR,MONTH,DAY AND DATE...
echo "We are in the year = $(date +%Y)"
echo "We are in the year = $(date +%y)"
Difference between %Y and %y is %Y will print 4 digits while %y will print the last 2 digits of the year.
echo "We are in the month = $(date +%m)"
echo "We are in the month = $(date +%b)"
echo "We are in the month = $(date +%B)"
Difference between %B and %b is, %B will print full month name while %b will print abbreviated month name.
echo "Current Day of the month = $(date +%d)"
echo "Current Day of the week = $(date +%A)"
echo "Current Day of the week = $(date +%a)"
Difference between %A and %a is, %A will print full Weekday name while %a will print abbreviated weekday name.
Instead of formatting to get the date, we can use %D which will print the date as %m/%d/%y or %F which prints in %Y-%M-%d format.
echo "Date using %D = $(date +%D)"
echo "Date using %F = $(date +%F)"
Gestire il tempo in Linux
Diamo un'occhiata a come utilizzare i formattatori relativi al time in un semplice script di shell chiamato "time.sh".
PRINT HOURS, MINS, SECONDS, NANO SECONDS
echo Hours = $(date +%H)
echo Minutes = $(date +%M)
echo Seconds = $(date +%S)
echo Nanoseconds = $(date +%N)
echo Epoch Time = $(date +%s)
echo "current time = $(date +%H:%M:%S:%N)"
can also use %T which displays Time in HH:MM:SS format.
echo "current time in 24 hour format = $(date +%T)"
can also use %r to display time in 12 hour format.
echo "current time in 12 hour format = $(date +%r)"
Con –date o -d Flag
Con --date
o -d
il flag input può essere passato come stringa e il comando date sa come gestirlo in modo intelligente.
Vediamo alcuni esempi per capire come funziona.
Print yesterday's date and time.
echo "Yesterday = $(date -d "Yesterday")"
Print Tomorrow date and time.
echo "tomorrow = $(date -d "tomorrow")"
Find what is the date and time before 10 days from now.
echo "Before 10 days = $(date -d "tomorrow -10 days")"
Find last month and next month
echo "Last month = $(date -d "last month" "%B")"
echo "Next month = $(date -d "next month" "%B")"
Find last year and next year
echo "Last Year = $(date -d "last year" "+%Y")"
echo "Next Year = $(date -d "next year" "+%Y")"
Forecast the weekday
echo "2 days away from today and it comes on weekdays? = $(date -d "Today +2 days" "+%A")
Operazioni comuni
calcolare il numero di giorni tra 2 date indicate.
echo $(( ( $(date -d "2020-11-10" "+%s") - $(date -d "2020-11-01" "+%s") ) / 86400))
Scopri che l'anno indicato è bisestile oppure no.
for y in {2000..2020}; do date -d $y-02-29 &>/dev/null && echo $y is leap year; done
Assegnazione dell'output del comando date a una variabile.
TODAY=$(date +%Y-%m-%d)
OR
TODAY1=$(date +%F)
echo $TODAY
echo $TODAY1
Crea file di registro con la data aggiunta al nome del file.
L'aggiunta di data e ora durante la creazione di file di registro, backup o file di testo è un'operazione comune che incontreremo più spesso. Facciamo un esempio, per fare un backup, abbiamo creato uno script di shell.
Questo script eseguirà un backup dalle 00:00 alle 23:59 e sarà programmato per l'esecuzione quotidiana alle 00:00 del giorno successivo. Vogliamo creare file di registro con il formato della data di ieri.
CUSTOM_FORMAT=$(date --date "Yesterday" "+%d-%y-%H:%M")
LOG_FILE=/var/log/custom_application/application_${CUSTOM_FORMAT}.log
echo "Script started" >> ${LOG_FILE}
...
CODE BLOCKS
...
echo "Script completed" >> ${LOG_FILE}
Per questo articolo è tutto. In questo articolo abbiamo visto come utilizzare la data e l'ora di bash in Linux. Fateci sapere il vostro feedback.