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的微博