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


Tal vez pueda interesarte


Compartí este artículo