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 他们之间是冲突的,如果同时使用,后面的参数会覆盖掉前面的参数。