Este artículo muestra cómo visualizar el calendario desde la terminal utilizando cal
. El utilitario cal
muestra un calendario simple utilizando el formato tradicional, mientras que ncal
ofrece una disposición alternativa y opciones adicionales.
cal
es uno de los utilitarios básicos e históricos de todo sistema Unix. Apareció por primera vez en la versión 5 de AT&T Unix y ncal
en FreeBSD 2.2.6. La salida de cal
en los sistemas GNU/Linux se supone exactamente idéntica (bit a bit) con la salida del comando cal
original de Unix, debido a que es procesada por otros programa y scripts. Por esta razón siempre ofrece 8 líneas como salida, incluso si sólo 7 contienen datos.
Veamos algunos ejemplos de uso de cal
y ncal
desde la consola.
Por defecto, cuando se ejecuta cal
sin parámetros, se visualiza el mes actual:
emi@hal9000:~$ cal October 2019 Su Mo Tu We Th Fr 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
El día actual se resalta, tal como se puede comprobar en la siguiente captura de pantalla:

La opción -j
muestra los días como número de día del año (de 1 a 365 para años "normales") en vez número de día del mes actual:
emi@hal9000:~$ cal -j October 2019 Su Mo Tu We Th Fr Sa 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304
La opción -3
muestra el mes actual, junto con el anterior y siguiente:
emi@hal9000:~$ cal -3 September 2019 October 2019 November 2019 Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 1 2 3 4 5 1 2 8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9 15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16 22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23 29 30 27 28 29 30 31 24 25 26 27 28 29 30
utilizando las opciones -B
(antes) y -A
(después), es posible controlar cuántos meses mostrar antes y después del mes actual respectivamente:
emi@hal9000:~$ cal -A 3 -B 2 August 2019 September 2019 October 2019 Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 4 5 6 7 8 9 10 8 9 10 11 12 13 14 6 7 8 9 10 11 12 11 12 13 14 15 16 17 15 16 17 18 19 20 21 13 14 15 16 17 18 19 18 19 20 21 22 23 24 22 23 24 25 26 27 28 20 21 22 23 24 25 26 25 26 27 28 29 30 31 29 30 27 28 29 30 31 November 2019 December 2019 January 2020 Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 1 2 3 4 5 6 7 1 2 3 4 3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11 10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18 17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25 24 25 26 27 28 29 30 29 30 31 26 27 28 29 30 31
Si se desea visualizar un mes específico del año actual, recurrir a la opción -m
con el número de mes como parámetro:
emi@hal9000:~$ cal -m 4 April 2019 Su Mo Tu We Th Fr 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
También es posible ver el calendario completo de otro año diferente al actual:
emi@hal9000:~$ cal -y 1982 1982 January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 1 2 3 4 5 6 1 2 3 4 5 6 3 4 5 6 7 8 9 7 8 9 10 11 12 13 7 8 9 10 11 12 13 10 11 12 13 14 15 16 14 15 16 17 18 19 20 14 15 16 17 18 19 20 17 18 19 20 21 22 23 21 22 23 24 25 26 27 21 22 23 24 25 26 27 24 25 26 27 28 29 30 28 28 29 30 31 31 April May June Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 1 1 2 3 4 5 4 5 6 7 8 9 10 2 3 4 5 6 7 8 6 7 8 9 10 11 12 11 12 13 14 15 16 17 9 10 11 12 13 14 15 13 14 15 16 17 18 19 18 19 20 21 22 23 24 16 17 18 19 20 21 22 20 21 22 23 24 25 26 25 26 27 28 29 30 23 24 25 26 27 28 29 27 28 29 30 30 31 July August September Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 1 2 3 4 5 6 7 1 2 3 4 4 5 6 7 8 9 10 8 9 10 11 12 13 14 5 6 7 8 9 10 11 11 12 13 14 15 16 17 15 16 17 18 19 20 21 12 13 14 15 16 17 18 18 19 20 21 22 23 24 22 23 24 25 26 27 28 19 20 21 22 23 24 25 25 26 27 28 29 30 31 29 30 31 26 27 28 29 30 October November December Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 1 2 3 4 5 6 1 2 3 4 3 4 5 6 7 8 9 7 8 9 10 11 12 13 5 6 7 8 9 10 11 10 11 12 13 14 15 16 14 15 16 17 18 19 20 12 13 14 15 16 17 18 17 18 19 20 21 22 23 21 22 23 24 25 26 27 19 20 21 22 23 24 25 24 25 26 27 28 29 30 28 29 30 26 27 28 29 30 31 31
Con esta opción es posible visualizar el calendario completo del año actual, simplemente basta pasarlo como parámetro a -y
.
Si se desea visualizar un mes específico de cierto año, es necesario usar el formato "AAAA-MM" (año, mes) como parámetro a la opción -d
:
emi@hal9000:~$ cal -d 1982-04 April 1982 Su Mo Tu We Th Fr 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
ncal
es una alternativa a cal
que muestra el calendario con un formato diferente y poco común, donde los días de la semana se organizan en filas en vez de columnas:
emi@hal9000:~$ ncal October 2019 Su 6 13 20 27 Mo 7 14 21 28 Tu 1 8 15 22 29 We 2 9 16 23 30 Th 3 10 17 24 31 Fr 4 11 18 25 Sa 5 12 19 26
Soporta las mismas opciones de cal
:
emi@hal9000:~$ ncal -3 September 2019 October 2019 November 2019 Su 1 8 15 22 29 6 13 20 27 3 10 17 24 Mo 2 9 16 23 30 7 14 21 28 4 11 18 25 Tu 3 10 17 24 1 8 15 22 29 5 12 19 26 We 4 11 18 25 2 9 16 23 30 6 13 20 27 Th 5 12 19 26 3 10 17 24 31 7 14 21 28 Fr 6 13 20 27 4 11 18 25 1 8 15 22 29 Sa 7 14 21 28 5 12 19 26 2 9 16 23 30
Pero además tiene opciones adicionales, como empezar la semana en días lunes (-M
):
emi@hal9000:~$ ncal -M October 2019 Mo 7 14 21 28 Tu 1 8 15 22 29 We 2 9 16 23 30 Th 3 10 17 24 31 Fr 4 11 18 25 Sa 5 12 19 26 Su 6 13 20 27
O agregar el número de semana del año (un año tiene 52 semanas) al final de cada columna con -w
:
emi@hal9000:~$ ncal -w October 2019 Su 6 13 20 27 Mo 7 14 21 28 Tu 1 8 15 22 29 We 2 9 16 23 30 Th 3 10 17 24 31 Fr 4 11 18 25 Sa 5 12 19 26 39 40 41 42 43
Referencias
man cal