Arithmétique d’addition et de soustraction avec la commande de date Linux
La commande date sous Linux peut être utilisée pour voir la date et l’heure actuelles, mais nous pouvons également utiliser l’arithmétique d’addition et de soustraction avec la commande pour étendre ses fonctionnalités. Par exemple, au lieu de voir la date actuelle, nous pouvons voir la date et l’heure d’il y a cinq jours, cinq ans dans le futur, etc. Les possibilités ici sont infinies.
Cela devient utile dans de nombreuses situations. Par exemple, lorsque vous créez des sauvegardes, vous pouvez utiliser la commande date pour attribuer aux fichiers un nom daté, ou même pour supprimer des sauvegardes plus anciennes en utilisant une arithmétique de soustraction. Nous couvrirons cet exemple spécifique ci-dessous afin que vous puissiez le voir en action, mais comme vous pouvez l’imaginer, il y a beaucoup d’autres cas où ce serait pratique.
Dans ce guide, vous verrez divers exemples de commandes de date impliquant l’addition et la soustraction. N’hésitez pas à utiliser ces commandes sur votre propre système ou dans vos propres scripts pour vous familiariser avec la commande.
Dans ce tutoriel, vous allez apprendre :
- Exemples d’arithmétique et de soustraction de commande de date
Exemples d’addition et de soustraction avec la commande date sous Linux
Exemples d’arithmétique de date et de soustraction
Commençons par une simple commande de sauvegarde basée sur la commande date Linux :
tar cjf linuxconfig_$(date +%H%M-%d%m%Y).tar.bz2 ~/public_htmlNous ne voulons généralement pas conserver tous les fichiers de sauvegarde indéfiniment ou jusqu’à ce qu’ils consomment tout l’espace libre disponible. C’est là que l’arithmétique de soustraction avec la commande de date Linux devient pratique. Voyons quelques exemples de la façon de soustraire du temps d’une date actuelle à l’aide d’une chaîne de date. Soustrayez 10 ans d’une date actuelle :
date Tue Jul 13 21:12:52 EDT 2021 date --date="10 years ago" +%H%M-%d%m%Y 2112-13072011Soustrayez 3 mois de la date actuelle :
date Tue Jul 13 21:13:47 EDT 2021 date --date="3 months ago" +%H%M-%d%m%Y 2113-13042021Soustrayez 255 jours de la date actuelle :
date Tue Jul 13 21:14:17 EDT 2021 date --date="255 days ago" +%H%M-%d%m%Y 2114-31102020Soustrayez 32 semaines de la date actuelle :
date; date --date="32 weeks ago" +%H%M-%d%m%Y Tue Jul 13 21:15:10 EDT 2021 2015-01122020Soustrayez les heures et les minutes de la date actuelle :
date; date --date="5 hours ago" +%H%M-%d%m%Y Tue Jul 13 21:16:01 EDT 2021 1616-13072021Comme vous pouvez probablement le deviner, nous suivons le même format pour soustraire les minutes de la date actuelle :
date; date --date="5 minutes ago" +%H%M-%d%m%Y Tue Jul 13 21:16:45 EDT 2021 2111-13072021Nous pouvons maintenant améliorer notre script de sauvegarde simple pour ne garder que les fichiers qui n’ont pas plus de 6 mois :
#!/bin/bash tar cjf linuxconfig_$(date +%H%M-%d%m%Y).tar.bz2 ~/public_html rm linuxconfig_$(date --date="6 months ago" +%H%M-%d%m%Y).tar.bz2Aller dans le futur avec la commande date est aussi simple que d’aller dans le passé. Tout ce qu’il faut faire est d’ajouter le signe « - » ( moins ) devant chaque chaîne de date. Par exemple, vous pouvez demander à la commande date d’ajouter 12 heures à une date et une heure actuelles :
date; date --date="-12 hours ago" +%H%M-%d%m%Y Tue Jul 13 21:17:56 EDT 2021 0917-14072021Sur certains systèmes Unix, la syntaxe de date décrite ci-dessus peut ne pas être disponible. Dans ce cas, voici un exemple simple sur la façon de faire tout ce qui précède en utilisant le temps d’époque. le temps d’époque est simplement un nombre de secondes depuis « Jan 1, 1970 00:00:00 ». Par conséquent, le temps d’époque « 1 » en utilisant le temps universel est :
date -ud@1 Thu Jan 1 00:00:01 UTC 1970Voyons comment nous pouvons soustraire 2 semaines, 3 jours et 23 secondes d’une date actuelle en utilisant l’heure de l’époque. Comme cela se produirait il y a 1 468 823 secondes, le calcul ressemblerait à ceci :
date;echo `date --universal +%s` - 1468823 | bc Tue Jul 13 21:19:37 EDT 2021 1624756754La seule chose qui reste à faire est de convertir la sortie. Echo time au format de date universel lisible par l’homme :
date -ud@1624756754 Sun Jun 27 01:19:14 UTC 2021Pour ajouter 2 semaines, 3 jours et 23 secondes, utilisez le même processus, mais utilisez l’addition au lieu de la soustraction :
date;echo `date --universal +%s` + 1468823 | bc Tue Jul 13 21:22:13 EDT 2021 1627694556Convertir l’heure de l’époque :
date -ud@1627694556 Sat Jul 31 01:22:36 UTC 2021
Chaque fois que la commande est exécutée, elle crée un fichier avec la date du jour incluse dans le nom du fichier.
Réflexions finales
Dans ce guide, nous avons vu comment utiliser l’arithmétique d’addition et de soustraction avec la commande date sous Linux. Cela a de nombreuses applications, dont les noms de fichiers horodatés, comme nous l’avons vu dans les exemples ci-dessus. Que vous choisissiez d’utiliser l’heure d’époque ou l’heure normale avec date, Linux vous permet de calculer rapidement des valeurs de date arbitraires et d’attribuer ces variables aux noms de fichiers ou à toute autre utilisation que vous pourriez avoir.
