Skip to content Skip to main navigation Skip to footer

Linux:显示日历信息的命令 cal 和 ncal

  Linux 里内置两个用来显示和校准日历的命令 cal 和 ncal。一旦你习惯使用它们,你会发现使用命令很多时候都比你运用鼠标在 GUI 的日历里查看要来的更迅速和方便。命令行下,有许多参数,这些参数能完成您所需要的所有关于日历的需求,目前来说,我还没有发现我需要显示的一种日历的需求是它没有的,哈。

  下面,我就来和大家一起学习学习这些命令,这些命令我都在 Ubuntu Linux 日常使用:

问1、如何显示当前月份的信息

答:直接使用 cal 命令就可以,不需要添加任何参数

$ cal
     July 2013
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

  当然,您使用 ncal 也会得到同样的效果:

$ ncal
    July 2013         
Su     7 14 21 28   
Mo  1  8 15 22 29   
Tu  2  9 16 23 30   
We  3 10 17 24 31   
Th  4 11 18 25      
Fr  5 12 19 26      
Sa  6 13 20 27

  您可以看到整个当前月份的日历,当天日期是高亮显示的,您可以使用 -h 参数来关闭高亮。

问2、如何竖向排列日期

答:使用 ncal 命令同时添加 -J 参数

$ ncal -J
    July 2013
Su  1  8 15 22 29
Mo  2  9 16 23 30
Tu  3 10 17 24 31
We  4 11 18 25
Th  5 12 19 26
Fr  6 13 20 27
Sa  7 14 21 28

问3、想查询复活节日期

答:使用 ncal 命令添加 -e 参数

$ ncal -e
31 March 2013

问4、怎么显示 Julian 日历

答:使用 cal 命令添加 -j 参数

$ cal -j
         July 2013
 Su  Mo  Tu  We  Th  Fr  Sa
    182 183 184 185 186 187
188 189 190 191 192 193 194
195 196 197 198 199 200 201
202 203 204 205 206 207 208
209 210 211 212

问5、如何显示指定月份日历

答:使用 cal 命令添加 -m 参数和月份

$ cal -m1
    January 2013
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

  默认情况下,您添加的 -m参数和月份为当年的月份,如果您希望看到指定的某个年的月份,您可以在后面添加四位数字的年份。

$ cal -m1 1999
    January 1999
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

问6、如何同时显示前一个月本月和下一个月三个月的日历

答:使用 cal 命令添加 -3 参数

$ cal -3
     June 2013             July 2013            August 2013
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
                   1      1  2  3  4  5  6               1  2  3
 2  3  4  5  6  7  8   7  8  9 10 11 12 13   4  5  6  7  8  9 10
 9 10 11 12 13 14 15  14 15 16 17 18 19 20  11 12 13 14 15 16 17
16 17 18 19 20 21 22  21 22 23 24 25 26 27  18 19 20 21 22 23 24
23 24 25 26 27 28 29  28 29 30 31           25 26 27 28 29 30 31
30

  同样道理,您可以查看任意三个月的日历:

$ cal -3 -m3 1984
   February 1984           March 1984            April 1984
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               1  2  3   1  2  3  4  5  6  7
 5  6  7  8  9 10 11   4  5  6  7  8  9 10   8  9 10 11 12 13 14
12 13 14 15 16 17 18  11 12 13 14 15 16 17  15 16 17 18 19 20 21
19 20 21 22 23 24 25  18 19 20 21 22 23 24  22 23 24 25 26 27 28
26 27 28 29           25 26 27 28 29 30 31  29 30

问7、如何显示orthodox Easter 的信息

答:使用 ncal 命令添加 -o 参数

$ ncal -o
 5 May 2013

问8、如何显示国家代码

答:使用 ncal 命令添加 -p 参数

$ ncal -p
 AL Albania        1912-11-30      IT Italy          1582-10-04
 AT Austria        1583-10-05      JP Japan          1918-12-18
 AU Australia      1752-09-02      LI Lithuania      1918-02-01
 BE Belgium        1582-12-14      LN Latin          9999-05-31
 BG Bulgaria       1916-03-18      LU Luxembourg     1582-12-14
 CA Canada         1752-09-02      LV Latvia         1918-02-01
 CH Switzerland    1655-02-28      NL Netherlands    1582-12-14
 CN China          1911-12-18      NO Norway         1700-02-18
 CZ Czech Republic 1584-01-06      PL Poland         1582-10-04
 DE Germany        1700-02-18      PT Portugal       1582-10-04
 DK Denmark        1700-02-18      RO Romania        1919-03-31
 ES Spain          1582-10-04      RU Russia         1918-01-31
 FI Finland        1753-02-17      SI Slovenia       1919-03-04
 FR France         1582-12-09      SW Sweden         1753-02-17
 GB United Kingdom 1752-09-02      TR Turkey         1926-12-18
 GR Greece         1924-03-09     *US United States  1752-09-02
 HU Hungary        1587-10-21      YU Yugoslavia     1919-03-04
 IS Iceland        1700-11-16

问9、如何按自然月显示周信息

答:使用 ncal 命令添加 -w 参数

$ ncal -w
    July 2013
Su     7 14 21 28
Mo  1  8 15 22 29
Tu  2  9 16 23 30
We  3 10 17 24 31
Th  4 11 18 25
Fr  5 12 19 26
Sa  6 13 20 27
   26 27 28 29 30

  最下面的一行是下个月的信息。

问10、怎么一下查看全年的日历

答:使用 ncal 命令添加 -y 参数和 四位数的年份

$ ncal -y 2010
                                  2010
    January           February          March             April
Su     3 10 17 24 31     7 14 21 28        7 14 21 28        4 11 18 25
Mo     4 11 18 25     1  8 15 22        1  8 15 22 29        5 12 19 26
Tu     5 12 19 26     2  9 16 23        2  9 16 23 30        6 13 20 27
We     6 13 20 27     3 10 17 24        3 10 17 24 31        7 14 21 28
Th     7 14 21 28     4 11 18 25        4 11 18 25        1  8 15 22 29
Fr  1  8 15 22 29     5 12 19 26        5 12 19 26        2  9 16 23 30
Sa  2  9 16 23 30     6 13 20 27        6 13 20 27        3 10 17 24
    May               June              July              August
Su     2  9 16 23 30     6 13 20 27        4 11 18 25     1  8 15 22 29
Mo     3 10 17 24 31     7 14 21 28        5 12 19 26     2  9 16 23 30
Tu     4 11 18 25     1  8 15 22 29        6 13 20 27     3 10 17 24 31
We     5 12 19 26     2  9 16 23 30        7 14 21 28     4 11 18 25
Th     6 13 20 27     3 10 17 24        1  8 15 22 29     5 12 19 26
Fr     7 14 21 28     4 11 18 25        2  9 16 23 30     6 13 20 27
Sa  1  8 15 22 29     5 12 19 26        3 10 17 24 31     7 14 21 28
    September         October           November          December
Su     5 12 19 26        3 10 17 24 31     7 14 21 28        5 12 19 26
Mo     6 13 20 27        4 11 18 25     1  8 15 22 29        6 13 20 27
Tu     7 14 21 28        5 12 19 26     2  9 16 23 30        7 14 21 28
We  1  8 15 22 29        6 13 20 27     3 10 17 24        1  8 15 22 29
Th  2  9 16 23 30        7 14 21 28     4 11 18 25        2  9 16 23 30
Fr  3 10 17 24        1  8 15 22 29     5 12 19 26        3 10 17 24 31
Sa  4 11 18 25        2  9 16 23 30     6 13 20 27        4 11 18 25

问11、如何显示某个月和某个月前几个月和后几个月的日历

答:使用 cal 命令添加 -m -B -A 参数和月个数

$ cal -m4 -B2 -A2
   February 2013           March 2013            April 2013
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      1  2  3  4  5  6
 3  4  5  6  7  8  9   3  4  5  6  7  8  9   7  8  9 10 11 12 13
10 11 12 13 14 15 16  10 11 12 13 14 15 16  14 15 16 17 18 19 20
17 18 19 20 21 22 23  17 18 19 20 21 22 23  21 22 23 24 25 26 27
24 25 26 27 28        24 25 26 27 28 29 30  28 29 30
                      31
      May 2013             June 2013
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
          1  2  3  4                     1
 5  6  7  8  9 10 11   2  3  4  5  6  7  8
12 13 14 15 16 17 18   9 10 11 12 13 14 15
19 20 21 22 23 24 25  16 17 18 19 20 21 22
26 27 28 29 30 31     23 24 25 26 27 28 29
                      30

  显示结果上,您可以看出,我们想显示 4 月份和 4 月份前两个月和后两个月的日历。如果您想显示指定年份的日历同时在显示年份前后的几个月,那么直需要在添加 -y 参数和四位数的年份即可:

$ cal -y 2012 -B2 -A2
   November 2011         December 2011          January 2012
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               1  2  3   1  2  3  4  5  6  7
 6  7  8  9 10 11 12   4  5  6  7  8  9 10   8  9 10 11 12 13 14
13 14 15 16 17 18 19  11 12 13 14 15 16 17  15 16 17 18 19 20 21
20 21 22 23 24 25 26  18 19 20 21 22 23 24  22 23 24 25 26 27 28
27 28 29 30           25 26 27 28 29 30 31  29 30 31
   February 2012           March 2012            April 2012
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               1  2  3   1  2  3  4  5  6  7
 5  6  7  8  9 10 11   4  5  6  7  8  9 10   8  9 10 11 12 13 14
12 13 14 15 16 17 18  11 12 13 14 15 16 17  15 16 17 18 19 20 21
19 20 21 22 23 24 25  18 19 20 21 22 23 24  22 23 24 25 26 27 28
26 27 28 29           25 26 27 28 29 30 31  29 30
      May 2012             June 2012             July 2012
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                  1  2   1  2  3  4  5  6  7
 6  7  8  9 10 11 12   3  4  5  6  7  8  9   8  9 10 11 12 13 14
13 14 15 16 17 18 19  10 11 12 13 14 15 16  15 16 17 18 19 20 21
20 21 22 23 24 25 26  17 18 19 20 21 22 23  22 23 24 25 26 27 28
27 28 29 30 31        24 25 26 27 28 29 30  29 30 31
    August 2012          September 2012         October 2012
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                     1      1  2  3  4  5  6
 5  6  7  8  9 10 11   2  3  4  5  6  7  8   7  8  9 10 11 12 13
12 13 14 15 16 17 18   9 10 11 12 13 14 15  14 15 16 17 18 19 20
19 20 21 22 23 24 25  16 17 18 19 20 21 22  21 22 23 24 25 26 27
26 27 28 29 30 31     23 24 25 26 27 28 29  28 29 30 31
                      30
   November 2012         December 2012          January 2013
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 31
                      30 31
   February 2013
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

  从结果上我们看到,除了 2012 年整年外,我们还能看到 2011 年最后俩月和 2013 年前俩月的日历。

问12、如何让 ncal 命令显示成  cal 命令的结果

答:可以使用 -C 参数来完成这一点

$ ncal
    July 2013
Su     7 14 21 28
Mo  1  8 15 22 29
Tu  2  9 16 23 30
We  3 10 17 24 31
Th  4 11 18 25
Fr  5 12 19 26
Sa  6 13 20 27
$ cal
     July 2013
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
$ ncal -C
     July 2013
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

  同样,你可以使用 -N 参数来让 cal 命令看起来和 ncal 一样:

$ cal
     July 2013
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
$ ncal
    July 2013
Su     7 14 21 28
Mo  1  8 15 22 29
Tu  2  9 16 23 30
We  3 10 17 24 31
Th  4 11 18 25
Fr  5 12 19 26
Sa  6 13 20 27
$ cal -N
    July 2013
Su     7 14 21 28
Mo  1  8 15 22 29
Tu  2  9 16 23 30
We  3 10 17 24 31
Th  4 11 18 25
Fr  5 12 19 26
Sa  6 13 20 27

问13、如何让日历显示成以周一为每周第一天的样子

答:使用 ncal 命令添加 -M 参数即可

$ ncal -M
    July 2013
Mo  1  8 15 22 29
Tu  2  9 16 23 30
We  3 10 17 24 31
Th  4 11 18 25
Fr  5 12 19 26
Sa  6 13 20 27
Su  7 14 21 28

  还有一个 -S 参数,可以按周日为第一天来显示

问14、如何切换 ncal 命令为以前的显示方式

答:使用 ncal 命令添加 -b 参数

$ ncal
    July 2013
Su     7 14 21 28
Mo  1  8 15 22 29
Tu  2  9 16 23 30
We  3 10 17 24 31
Th  4 11 18 25
Fr  5 12 19 26
Sa  6 13 20 27
$ ncal -b
     July 2013
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

cal 和 ncal 命令的一些其他相关信息

  虽然我们可以查看这两个的命令的 man page 来得到更多的信息,不过在这里,我还有一些其他信息要告诉大家。需要指定年份的时候,我们需要四位数的年份。不是所有的参数都可以同时使用的,比如 -y, -3, -1 他们之间是冲突的,如果同时使用,后面的参数会覆盖掉前面的参数。

 已同步至 linux的微博

来源:https://linux.cn/article-1667-1.html

0 Comments

There are no comments yet

Leave a comment

Your email address will not be published.