继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

在 Linux 命令行上使用日历

慕森王
关注TA
已关注
手记 264
粉丝 107
获赞 549

通过 Linux 上的日历,不仅仅可以提醒你今天是星期几。诸如 date、cal、 ncal 和 calendar 等命令可以提供很多有用信息。

Linux 系统可以为你的日程安排提供更多帮助,而不仅仅是提醒你今天是星期几。日历显示有很多选项 —— 有些可能很有帮助,有些可能会让你大开眼界。

日期

首先,你可能知道可以使用 date 命令显示当前日期。

$ dateMon Mar 26 08:01:41 EDT 2018

cal 和 ncal

你可以使用 cal 命令显示整个月份。没有参数时,cal 显示当前月份,默认情况下,通过反转前景色和背景颜色来突出显示当天。

$ cal
     March 2018Su Mo Tu We Th Fr Sa             1  2  3
 4  5  6  7  8  9 1011 12 13 14 15 16 1718 19 20 21 22 23 2425 26 27 28 29 30 31

如果你想以“横向”格式显示当前月份,则可以使用 ncal 命令。

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

例如,如果你只想查看特定周几的日期,这个命令可能特别有用。

$ ncal | grep Th
Th  1  8 15 22 29

ncal 命令还可以以“横向”格式显示一整年,只需在命令后提供年份。

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

你也可以使用 cal 命令显示一整年。请记住,你需要输入年份的四位数字。如果你输入 cal 18,你将获得公元 18 年的历年,而不是 2018 年。

$ cal 2018
                            2018
      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  3  4  5  6               1  2  3               1  2  3
 7  8  9 10 11 12 13   4  5  6  7  8  9 10   4  5  6  7  8  9 1014 15 16 17 18 19 20  11 12 13 14 15 16 17  11 12 13 14 15 16 1721 22 23 24 25 26 27  18 19 20 21 22 23 24  18 19 20 21 22 23 2428 29 30 31           25 26 27 28           25 26 27 28 29 30 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  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  915 16 17 18 19 20 21  13 14 15 16 17 18 19  10 11 12 13 14 15 1622 23 24 25 26 27 28  20 21 22 23 24 25 26  17 18 19 20 21 22 2329 30                 27 28 29 30 31        24 25 26 27 28 29 30


        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  4  5  6  7            1  2  3  4                     1
 8  9 10 11 12 13 14   5  6  7  8  9 10 11   2  3  4  5  6  7  815 16 17 18 19 20 21  12 13 14 15 16 17 18   9 10 11 12 13 14 1522 23 24 25 26 27 28  19 20 21 22 23 24 25  16 17 18 19 20 21 2229 30 31              26 27 28 29 30 31     23 24 25 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  3  4  5  6               1  2  3                     1
 7  8  9 10 11 12 13   4  5  6  7  8  9 10   2  3  4  5  6  7  814 15 16 17 18 19 20  11 12 13 14 15 16 17   9 10 11 12 13 14 1521 22 23 24 25 26 27  18 19 20 21 22 23 24  16 17 18 19 20 21 2228 29 30 31           25 26 27 28 29 30     23 24 25 26 27 28 29
                                            30 31

要指定年份和月份,使用 -d 选项,如下所示:

$ cal -d 1949-03
     March 1949Su Mo Tu We Th Fr Sa       1  2  3  4  5
 6  7  8  9 10 11 1213 14 15 16 17 18 1920 21 22 23 24 25 2627 28 29 30 31

另一个可能有用的日历选项是 cal 命令的 -j 选项。让我们来看看它显示的是什么。

$ cal -j
        March 2018
 Su  Mo  Tu  We  Th  Fr  Sa                 60  61  62
 63  64  65  66  67  68  69
 70  71  72  73  74  75  76
 77  78  79  80  81  82  83
 84  85  86  87  88  89  90

你可能会问:“什么鬼???” OK, -j 选项显示 Julian 日期 -- 一年中从 1 到 365 年的数字日期。所以,1 是 1 月 1 日,32 是 2 月 1 日。命令 cal -j 2018 将显示一整年的数字,像这样:

$ cal -j 2018 | tail -9

         November                     December
 Su  Mo  Tu  We  Th  Fr  Sa   Su  Mo  Tu  We  Th  Fr  Sa                305 306 307                          335308 309 310 311 312 313 314  336 337 338 339 340 341 342315 316 317 318 319 320 321  343 344 345 346 347 348 349322 323 324 325 326 327 328  350 351 352 353 354 355 356329 330 331 332 333 334      357 358 359 360 361 362 363
                             364 365

这种显示可能有助于提醒你,自从你做了新年计划之后,你已经有多少天没有采取行动了。

运行类似的命令,对于 2020 年,你会注意到这是一个闰年:

$ cal -j 2020 | tail -9

         November                     December
 Su  Mo  Tu  We  Th  Fr  Sa   Su  Mo  Tu  We  Th  Fr  Sa306 307 308 309 310 311 312          336 337 338 339 340313 314 315 316 317 318 319  341 342 343 344 345 346 347320 321 322 323 324 325 326  348 349 350 351 352 353 354327 328 329 330 331 332 333  355 356 357 358 359 360 361334 335                      362 363 364 365 366

calendar

另一个有趣但潜在的令人沮丧的命令可以告诉你关于假期的事情,这个命令有很多选项,但我们这里介绍下你想看到即将到来的假期和值得注意的日历列表。日历的 -l 选项允许你选择今天想要查看的天数,因此 0 表示“仅限今天”。

$ calendar -l 0Mar 26  Benjamin Thompson born, 1753, Count Rumford; physicist
Mar 26  David Packard died, 1996; age of 83Mar 26  Popeye statue unveiled, Crystal City TX Spinach Festival, 1937Mar 26  Independence Day in Bangladesh
Mar 26  Prince Jonah Kuhio Kalanianaole Day in Hawaii
Mar 26* Seward's Day in Alaska (last Monday)
Mar 26  Emerson, Lake, and Palmer record "Pictures at an Exhibition" live, 1971Mar 26  Ludwig van Beethoven dies in Vienna, Austria, 1827Mar 26  Bonne fête aux Lara !
Mar 26  Aujourd'hui, c'est la St(e) Ludger.
Mar 26  N'oubliez pas les Larissa !
Mar 26  Ludwig van Beethoven in Wien gestorben, 1827Mar 26  Emánuel

对于我们大多数人来说,这庆祝活动有点多。如果你看到类似这样的内容,可以将其归咎于你的 calendar.all 文件,该文件告诉系统你希望包含哪些国际日历。当然,你可以通过删除此文件中包含其他文件的一些行来削减此问题。文件看起来像这样:

#include <calendar.world>#include <calendar.argentina>#include <calendar.australia>#include <calendar.belgium>#include <calendar.birthday>#include <calendar.christian>#include <calendar.computer>

假设我们只通过移除除上面显示的第一个 #include 行之外的所有行,将我们的显示切换到世界日历。 我们会看到这个:

$ calendar -l 0Mar 26 Benjamin Thompson born, 1753, Count Rumford; physicist
Mar 26 David Packard died, 1996; age of 83Mar 26 Popeye statue unveiled, Crystal City TX Spinach Festival, 1937Mar 26 Independence Day in Bangladesh
Mar 26 Prince Jonah Kuhio Kalanianaole Day in Hawaii
Mar 26* Seward's Day in Alaska (last Monday)
Mar 26 Emerson, Lake, and Palmer record "Pictures at an Exhibition" live, 1971Mar 26 Ludwig van Beethoven dies in Vienna, Austria, 1827

显然,世界日历的特殊日子非常多。但是,像这样的展示可以让你不要忘记所有重要的“大力水手雕像”揭幕日以及在庆祝“世界菠菜之都”中它所扮演的角色。

更有用的日历选择可能是将与工作相关的日历放入特殊文件中,并在 calendar.all 文件中使用该日历来确定在运行命令时将看到哪些事件。

$ cat /usr/share/calendar/calendar.all/*
 * International and national calendar files
 *
 * This is the calendar master file.  In the standard setup, it is
 * included by /etc/calendar/default, so you can make any system-wide
 * changes there and they will be kept when you upgrade.  If you want
 * to edit this file, copy it into /etc/calendar/calendar.all and
 * edit it there.
 *
 */#ifndef _calendar_all_#define _calendar_all_#include <calendar.usholiday>#include <calendar.work>            <==#endif /* !_calendar_all_ */

日历文件的格式非常简单 - mm/dd 格式日期,空格和事件描述。

$ cat calendar.work03/26   Describe how the cal and calendar commands work03/27   Throw a party!

注意事项和怀旧

注意,有关日历的命令可能不适用于所有 Linux 发行版,你可能必须记住自己的“大力水手”雕像。

如果你想知道,你可以显示一个日历,远至 9999 —— 即使是预言性的 2525

FacebookLinkedIn 上加入网络社区,对那些重要的话题发表评论。


译文出处

via: https://www.networkworld.com/article/3265752/linux/working-with-calendars-on-linux.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:MjSeven 校对:wxy


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP