Recherche de site Web

Comment travailler avec la date et l'heure dans Bash à l'aide de la commande date


La commande Date est un programme bash externe qui permet de définir ou d'afficher la date et l'heure du système. Il propose également plusieurs options de formatage. La commande Date est installée par défaut dans toutes les distributions Linux.

which date
type -a date

Tapez la commande date dans le terminal qui affichera la date et l'heure actuelles.

date

Modifier la date et l'heure du système Linux

À l'aide de la commande date, la date, l'heure et le fuseau horaire du système peuvent être modifiés et le changement doit être synchronisé avec l'horloge matérielle.

date --set="Thu Nov 12 13:06:59 IST 2020"
hwclock --systohc

Options de formatage

Un bon endroit pour obtenir la liste des options de formatage sera la page de manuel.

man date

Voyons quelques-unes des options de formatage les plus courantes que nous utiliserons.

  • Pour appliquer le formatage, utilisez « + suivi de « formatter ».
  • Pour obtenir une liste des options de formatage pour GNU\LINUX, jetez un œil à la page de manuel liée.
  • Pour obtenir une liste des options de formatage pour BSD, jetez un œil à la page de manuel liée.

Les deux parties importantes de la commande date utilisent le format +% et l'option –date.

Appliquons maintenant un peu de formatage à la commande date. Pour appliquer la mise en forme, ajoutez le signe plus (+) suivi de %formatter comme indiqué dans les exemples.

Gestion de la date sous Linux

Voyons comment utiliser les formateurs liés à la date dans un simple script shell appelé « 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)"

Temps de gestion sous Linux

Voyons comment utiliser les formateurs liés au time dans un simple script shell appelé « 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)"

Avec –date ou -d Indicateur

Avec --date ou -d l'entrée du drapeau peut être transmise sous forme de chaîne et la commande date sait la gérer intelligemment.

Voyons quelques exemples pour comprendre comment cela fonctionne.

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")

Opérations courantes

calculer le nombre de jours entre 2 dates données.

echo $(( ( $(date -d "2020-11-10" "+%s") - $(date -d "2020-11-01" "+%s") ) / 86400))

Trouvez que l'année donnée est une année bissextile ou non.

for y in {2000..2020}; do date -d $y-02-29 &>/dev/null && echo $y is leap year; done

Affectation de la sortie de la commande date à une variable.

TODAY=$(date +%Y-%m-%d)
OR
TODAY1=$(date +%F)
echo $TODAY 
echo $TODAY1

Créez des fichiers journaux avec la date ajoutée au nom du fichier.

L'ajout de date et d'heure lors de la création de fichiers journaux, de sauvegardes ou de fichiers texte est une opération courante que nous rencontrerons le plus souvent. Prenons un exemple, pour faire une sauvegarde, nous avons créé un script shell.

Ce script effectuera une sauvegarde de 00h00 à 23h59 et sera programmé pour s'exécuter quotidiennement à 00h00 le lendemain. Nous souhaitons créer des fichiers journaux avec le format de date d’hier.

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}

C'est tout pour cet article. Dans cet article, nous avons vu comment utiliser la date et l'heure bash sous Linux. Faites-nous part de vos commentaires.