我使用过的Linux命令之cal - 显示日历
我使用过的Linux命令之cal - 显示日历
本文链接:http://codingstandards.iteye.com/blog/807962 ? (转载请注明出处)
?
用途说明cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。我国从辛亥革命后即自民国元年采用阳历,故又名曰“国历”。为与我国旧有之历相对称,故又名曰“新历”。1949年正式规定公元纪年。
公历的前身是古罗马凯撒修订的儒略历。根据儒略历的规定,每4年有1个闰年,闰年为366日,其余3年(称为平年)各有365日。公元年数能被4除得尽的是闰年。儒略历1年平均长365.25 日,比实际公转周期的365.2422日长11分14秒,即每400年约长3日。这样到公元16世纪时已经积累了有10天误差。可以明显感觉到两至两分提前了。在此情况下,教皇格列高里十三世于1582年宣布改历。先是一步到位把儒略历1582年10月4日的下一天定为格列历10月15日,中间跳过10 天。同时修改了儒略历置闰法则。除了保留儒略历年数被4除尽的是闰年外。增加了被100除得尽而被400除不尽的则不是闰年的规定。这样的做法可在400 年中减少3个闰年。在格列高里历历法里,400年中有97个闰年(每年366日)及303个平年(每年365日),所以每年平均长365.2425日,与公转周期的365.2422日十分接近。可基本保证到公元5000年前误差不超过1天。
常用参数cal命令不带参数只显示当前月份的日历。
-1????? 显示一个月的月历(Display single month output. This is the default.)
-3????? 显示系统前一个月,当前月,下一个月的月历(Display prev/current/next month output.)
-s?????? 显示星期天为一个星期的第一天,默认的格式(Display Sunday as the first day of the week. This is the default.)
-m???? 显示星期一为一个星期的第一天(Display Monday as the first day of the week.)
-j?????? 显示儒略日(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)(Display Julian dates (days one-based, numbered from January 1).)
-y????? 显示当前年份的日历(Display a calendar for the current year.)
请见谅,JavaEye显示的比较乱,要是能显示等宽字体就好了。
[root@new55 ~]# cal
??? 十一月 2010????
日 一 二 三 四 五 六
??? 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
[root@new55 ~]# cal -j
??????? 十一月 2010???????
? 日?? 一?? 二?? 三?? 四?? 五?? 六
??? 305 306 307 308 309 310
311 312 313 314 315 316 317
318 319 320 321 322 323 324
325 326 327 328 329 330 331
332 333 334
注:此处显示自1月1日的天数。
[root@new55 ~]# cal -m
??? 十一月 2010????
一 二 三 四 五 六 日
?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
注:此处星期一显示在第一列。
[root@new55 ~]#
[root@new55 ~]# cal -3
???? 十月 2010??????????? 十一月 2010?????????? 十二月 2010????
日 一 二 三 四 五 六? 日 一 二 三 四 五 六? 日 一 二 三 四 五 六
??????????????? 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?????????????????????????????????????????????????????????????
[root@new55 ~]#
?
示例三 显示今年的日历[root@new55 ~]# cal -y
?????????????????????????????? 2010???????????????????????????????
??????? 一月?????????????????? 二月?????????????????? 三月????????
日 一 二 三 四 五 六?? 日 一 二 三 四 五 六?? 日 一 二 三 四 五 六
??????????????? 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
??????? 四月?????????????????? 五月?????????????????? 六月????????
日 一 二 三 四 五 六?? 日 一 二 三 四 五 六?? 日 一 二 三 四 五 六
???????????? 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
??????? 七月?????????????????? 八月?????????????????? 九月????????
日 一 二 三 四 五 六?? 日 一 二 三 四 五 六?? 日 一 二 三 四 五 六
???????????? 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
??????? 十月????????????????? 十一月???????????????? 十二月???????
日 一 二 三 四 五 六?? 日 一 二 三 四 五 六?? 日 一 二 三 四 五 六
??????????????? 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
[root@new55 ~]#
?
示例四 显示指定年月的日历[root@new55 ~]# cal 10 2009
???? 十月 2009?????
日 一 二 三 四 五 六
???????????? 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
[root@new55 ~]# cal 9 1752
???? 九月 1752?????
日 一 二 三 四 五 六
?????? 1? 2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
注:1752年9月比正常情况少了11天。1582年2月,罗马教廷要求从1582 年10月中减去10天,因此1852年10月4日后面紧跟着就是15日。在意大利、西班牙等国家都这样处理了。其他天主教国家也很快跟着这么做了,但是新教国家不愿意修改,而且希腊等东正教国家直到20世纪初才修改,所以这个改革在英国及其殖民地(包括美国)在1752年9月才被执行。这样1752 年9月2日后面跟着的就是1752年9月14日。这就是为什么cal会生成上面输出的原因了。
[root@new55 ~]#
1. 只显示公历,对于中国人来说,还有点不足。Linux下有没有既显示公历也显示农历的日历呢?
相关资料【1】百度百科 公历
【2】百度空间 Linux cal日历指令
【3】51CTO Linux cal命令了解人类时间改革
?
返回 我使用过的Linux命令系列总目录
?