Dernière modification : 02/06/2022

Commandes de date et d'heure

Dans cet article nous allons voir les principales commandes utilisant des dates ou des heures.

1. Commande Date

Affichage de la date courante :

date

Affichage de la date courante dans un format préalablement défini :

date "+%Y-%m-%dT%H:%M:%S%z" # Output: 2019-12-01T15:33:54+02002

Remarque : le symbole "+" précède le format de la date.

Les différents formats utilisables sont disponibles à cette addresse : https://man7.org/linux/man-pages/man1/date.1.html

Il est possible de fournir une date spécifique en entrée :

date -jf '%Y-%m-%d %H:%M:%S' '2017-05-10 13:40:01'

Il est enfin possible de manipuler la date :

date -jf %Y-%m-%dT%H:%M:%S%z +%Y-%m-%dT%H:%M:%S%z 2017-05-10T02:40:01+0500 # Formatage de la date en entrée, affichage identique en sortie, mais mise à niveau de la zone horaire.

date -v +1y # Ajoute 1 année à la date courante. -v pour "Adjust" sous UNIX
date -d "+1 years" # sous LINUX

Récupération du Timestamp Unix :

date +%s // 1654172212

Table d'exemple génériques :

        Format/result           |       Command              |          Output
--------------------------------+----------------------------+------------------------------
YYYY-MM-DD                      | date -I                    | $(date -I)
YYYY-MM-DD_hh:mm:ss             | date +%F_%T                | $(date +%F_%T)
YYYYMMDD_hhmmss                 | date +%Y%m%d_%H%M%S        | $(date +%Y%m%d_%H%M%S)
YYYYMMDD_hhmmss (UTC version)   | date --utc +%Y%m%d_%H%M%SZ | $(date --utc +%Y%m%d_%H%M%SZ)
YYYYMMDD_hhmmss (with local TZ) | date +%Y%m%d_%H%M%S%Z      | $(date +%Y%m%d_%H%M%S%Z)
YYYYMMSShhmmss                  | date +%Y%m%d%H%M%S         | $(date +%Y%m%d%H%M%S)
YYYYMMSShhmmssnnnnnnnnn         | date +%Y%m%d%H%M%S%N       | $(date +%Y%m%d%H%M%S%N)
YYMMDD_hhmmss                   | date +%y%m%d_%H%M%S        | $(date +%y%m%d_%H%M%S)
Seconds since UNIX epoch:       | date +%s                   | $(date +%s)
Nanoseconds only:               | date +%N                   | $(date +%N)
Nanoseconds since UNIX epoch:   | date +%s%N                 | $(date +%s%N)
ISO8601 UTC timestamp           | date --utc +%FT%TZ         | $(date --utc +%FT%TZ)
ISO8601 UTC timestamp + ms      | date --utc +%FT%T.%3NZ     | $(date --utc +%FT%T.%3NZ)
ISO8601 Local TZ timestamp      | date +%FT%T%Z              | $(date +%FT%T%Z)
YYYY-MM-DD (Short day)          | date +%F\(%a\)             | $(date +%F\(%a\))
YYYY-MM-DD (Long day)           | date +%F\(%A\)             | $(date +%F\(%A\))

2. Commande time

Est utilisée pour calculer le temps d'exécution d'une commande, exemple :

time ls # Output: ls  0,00s user 0,00s system 38% cpu 0,007 total

3. Commande touch

Est utiliser pour créer un fichier vide ou pour mettre à jour la date d'un fichier existant, sans le modifier.

touch monFichierExistant # Met à jour seulement la date de dernière modification

touch monFichierNouveau # Créée le fichier car absent

>> monFichierNouveau # cette commande est équivalent au touch (notez bien qu'il y a deux ">")

4. Commande at

Elle permet d'exécuter un script une seule fois à une date prédéfinie.

at 2:30 am Friday < at-script.sh

5. Commande cal

Affiche un calendrier mensuel :

cal

6. Commande sleep

Attend pendant X secondes. Utiles pour les scripts en attendant un évènement, pour pour ne pas surcharger le serveur lors d'une boucle infinie.

sleep 7 # attend 7 secondes

Remarque : La précision n'est pas assez exacte pour une utilisation ayant des exigences critique en terme de temps.

7. Commande usleep

Identique à la dernière commande (sleep), sauf qu'a la place de mettre des secondes elle prend en entrée des micro secondes.

usleep 1000 # attend 1000 micro-seconde

Remarque : Comme pour la commande sleep, la précision n'est pas assez exacte pour une utilisation ayant des exigences critique en terme de temps.