cal (Unix)
cal est le nom du programme sous UNIX qui permet d'afficher le calendrier. Son nom provient de l'anglais "calendar" (calendrier). Il existe aussi une version améliorée, ncal. Ces commandes sont aujourd'hui disponibles sur de nombreux systèmes, parmi lesquels GNU/Linux, FreeBSD, NetBSD, OpenBSD ou Mac OS X.
Historique
La commande cal est apparue dans la version 5 d'UNIX AT&T. La commande ncal est une implémentation de la commande UNIX cal réalisée pour la version 2.2.6 de FreeBSD.
Syntaxe
Pour afficher le calendrier du mois en cours au format américain, il suffit d'exécuter la commande suivante :
$ cal
Octobre 2008
Di Lu Ma Me Je Ve Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
On peut spécifier une année et éventuellement un mois (par son numéro ou son nom en anglais), par exemple pour :
$ cal 3 2015
Mars 2015
lu ma me je ve sa di
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Cependant, le format français s'obtient avec un paramètre :
$ cal -m
Octobre 2008
Lu Ma Me Je Ve Sa Di
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
ncal utilisera le format de la langue locale, et affichera le calendrier dans l'autre sens :
$ ncal
octobre 2008
lu 6 13 20 27
ma 7 14 21 28
me 1 8 15 22 29
je 2 9 16 23 30
ve 3 10 17 24 31
sa 4 11 18 25
di 5 12 19 26
Utilisations
Cette commande permet de retourner toutes les dates existantes, du au , par exemple « cal 2010 » renverra le calendrier de toute cette année.
Il est alors possible d'en extraire les informations telles que le numéro du premier lundi du mois, pour les comparer à la date actuelle afin par exemple d'exécuter une tâche planifiée (voir les exemples dans crontab).
Bogue
La commande ne tient pas compte de l'indication $LOCALE qui permettrait de faire apparaître le passage du calendrier julien au calendrier grégorien, celui-ci n'ayant pas eu lieu au même moment dans les pays catholiques et les autres. Ainsi, pour la France le calendrier devrait faire passer directement du 4 au pour l'année 1582.