La commande date
est un outil puissant du shell Bash, omniprésent dans les distributions Linux et macOS. Ce guide explore comment maîtriser la manipulation de la date et de l’heure en ligne de commande, et comment l’intégrer dans des scripts shell pour des fonctions allant au-delà de l’affichage simple de l’heure actuelle.
Pour commencer, tapez simplement date
dans votre terminal. Cette commande affichera la date et l’heure actuelles, ajustées à votre fuseau horaire.
date
Le format par défaut peut sembler inhabituel, avec l’année en fin de chaîne après le fuseau horaire. Heureusement, date
offre une grande flexibilité pour personnaliser l’affichage. Plus de 40 options sont disponibles pour adapter la sortie à vos besoins.
Pour spécifier un format, utilisez la syntaxe suivante: date +option
où « option » inclut un signe pourcentage. L’option %c
, par exemple, affiche la date et l’heure dans un format standardisé, défini par vos paramètres régionaux. Ces paramètres, déterminés lors de l’installation de votre système d’exploitation, régissent des aspects tels que le format de la monnaie, les formats de papier, le fuseau horaire et d’autres normes culturelles.
date +%c
L’année apparaît désormais dans un ordre plus logique.
Plusieurs options peuvent être combinées pour créer une chaîne de format. Pour afficher le nom du jour (%A
), le jour du mois (%d
) et le nom du mois (%B
), vous pouvez utiliser:
date +%A%d%B
Bien que cela fonctionne, le résultat n’est pas très lisible. Pour ajouter des espaces, mettez toute la chaîne de format entre guillemets, en laissant le +
à l’extérieur:
date +"%A %d %B"
Vous pouvez également inclure du texte dans cette chaîne, comme ceci:
date +"Aujourd'hui c'est : %A %d %B"
La multitude d’options disponibles peut rendre la recherche de la bonne option dans la page de manuel fastidieuse. Pour faciliter cela, voici une classification des options les plus courantes:
Options d’Affichage de la Date et de l’Heure
%c
: Affiche la date et l’heure selon le format de vos paramètres régionaux, incluant le fuseau horaire.
Options d’Affichage de la Date
%D
: Affiche la date au format mm/jj/aa.%F
: Affiche la date au format aaaa-mm-jj.%x
: Affiche la date dans le format de vos paramètres régionaux.
Options d’Affichage du Jour
%a
: Affiche le nom abrégé du jour (lun, mar, mer, etc.).%A
: Affiche le nom complet du jour (lundi, mardi, mercredi, etc.).%u
: Affiche le numéro du jour de la semaine (lundi=1, mardi=2, etc.).%w
: Affiche le numéro du jour de la semaine (dimanche=0, lundi=1, etc.).%d
: Affiche le jour du mois avec un zéro non significatif (01, 02… 09).%e
: Affiche le jour du mois avec un espace au début (‘ 1’, ‘ 2’… ‘ 9’).%j
: Affiche le jour de l’année avec jusqu’à deux zéros non significatifs.
Options d’Affichage de la Semaine
%U
: Affiche le numéro de la semaine de l’année, le dimanche étant le premier jour.%V
: Affiche le numéro de la semaine ISO de l’année, le lundi étant le premier jour.%W
: Affiche le numéro de la semaine de l’année, le lundi étant le premier jour.
Options d’Affichage du Mois
%b
ou %h
: Affiche le nom abrégé du mois (jan, fév, mars, etc.).%B
: Affiche le nom complet du mois (janvier, février, mars, etc.).%m
: Affiche le numéro du mois avec un zéro non significatif (01, 02, 03… 12).
Options d’Affichage de l’Année
%C
: Affiche le siècle sans l’année (ex: 20 pour 2019).%y
: Affiche l’année sur deux chiffres (ex: 19 pour 2019).%Y
: Affiche l’année sur quatre chiffres.
Options d’Affichage de l’Heure
%T
: Affiche l’heure au format HH:MM:SS.%R
: Affiche les heures et les minutes au format HH:MM sans les secondes (horloge 24 heures).%r
: Affiche l’heure selon vos paramètres régionaux (horloge 12 heures avec indicateur AM/PM).%X
: Affiche l’heure selon vos paramètres régionaux (horloge 24 heures). (Note: en pratique, cette option peut se comporter comme %r
dans certains environnements).
Options d’Affichage des Heures
%H
: Affiche les heures de 00 à 23.%I
: Affiche les heures au format 12 heures (00, 01… 12) avec un zéro non significatif.
Options d’Affichage des Minutes
%M
: Affiche les minutes (01, 02, 03… 59) avec un zéro non significatif.
Options d’Affichage des Secondes
%s
: Affiche le nombre de secondes écoulées depuis le 1er janvier 1970 (l’Époque Unix).%S
: Affiche les secondes (01, 02, 03… 59) avec un zéro non significatif.%N
: Affiche les nanosecondes.
Options d’Affichage du Fuseau Horaire
%z
: Affiche le décalage horaire par rapport à UTC.%:z
: Affiche le décalage horaire par rapport à UTC avec un « : » entre les heures et les minutes.%::z
: Affiche le décalage horaire par rapport à UTC avec un « : » entre les heures, les minutes et les secondes.%Z
: Affiche le nom alphabétique du fuseau horaire.
Options Liées au Formatage
%p
: Affiche l’indicateur AM ou PM en majuscules.%P
: Affiche l’indicateur AM ou PM en minuscules (Note: il y a une inversion ici par rapport à la logique habituelle).%t
: Affiche une tabulation.%n
: Affiche une nouvelle ligne.
Options pour Modifier d’Autres Options
Ces modificateurs sont insérés entre le %
et la lettre de l’option pour en ajuster l’affichage:
-
: Supprime le zéro non significatif pour les valeurs à un seul chiffre._
: Ajoute des espaces de début pour les valeurs à un seul chiffre.0
: Fournit des zéros non significatifs pour les valeurs à un seul chiffre.^
: Utilise des majuscules, si possible.#
: Utilise la casse inverse de celle par défaut, si possible.
Astuces Supplémentaires
Pour connaître l’heure de la dernière modification d’un fichier, utilisez l’option -r
(référence) avec le nom du fichier. Notez qu’il n’y a pas besoin du signe +
dans ce cas.
date -r .bashrc
La variable TZ
permet de changer le fuseau horaire pour une seule commande:
TZ=GMT date +%c
Utilisation de date
dans les Scripts
L’intégration de la commande date
dans un script Bash est simple. Par exemple, le script gd.sh
ci-dessous affiche la date et l’heure dans différents formats:
#!/bin/bash TODAY=$(date +"Aujourd'hui c'est %A, le %d %B") TIMENOW=$(date +"Il est %r") TIME_UK=$(TZ=BST date +"L'heure au Royaume-Uni est %r") echo $TODAY echo $TIMENOW echo $TIME_UK
Pour rendre le script exécutable, utilisez:
chmod +x gd.sh
Puis exécutez-le avec:
./gd.sh
La commande date
peut également servir à créer des horodatages. Le script snapshot.sh
ci-dessous crée un répertoire avec un horodatage, puis y copie les fichiers textes du répertoire courant:
#!/bin/bash # Obtient la date et l'heure date_stamp=$(date +"%F-%H-%M-%S") # Crée un répertoire avec ce nom mkdir "$date_stamp" # Copie les fichiers du dossier actuel cp *.txt "$date_stamp" # Rapport et sortie echo "Fichiers textes copiés dans le répertoire : "$date_stamp
Pour rendre le script exécutable, utilisez:
chmod +x snapshot.sh
Puis exécutez-le avec:
./snapshot.sh
Un nouveau répertoire, nommé selon la date et l’heure d’exécution du script, contiendra les copies des fichiers textes.
Avec un peu d’imagination, même la simple commande date
peut s’avérer très utile dans divers contextes.