Linux命令行上如何使用日历详解

 更新时间:2018年04月26日 08:58:56   作者:MjSeven  
这篇文章主要给大家介绍了Linux命令行上如何使用日历的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用linux具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

前言

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

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

日期

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

$ date
Mon Mar 26 08:01:41 EDT 2018

cal 和 ncal

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

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

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

$ cal -d 1949-03
 March 1949
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 命令的 -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       335
308 309 310 311 312 313 314 336 337 338 339 340 341 342
315 316 317 318 319 320 321 343 344 345 346 347 348 349
322 323 324 325 326 327 328 350 351 352 353 354 355 356
329 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 Sa
306 307 308 309 310 311 312   336 337 338 339 340
313 314 315 316 317 318 319 341 342 343 344 345 346 347
320 321 322 323 324 325 326 348 349 350 351 352 353 354
327 328 329 330 331 332 333 355 356 357 358 359 360 361
334 335      362 363 364 365 366

calendar

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

$ calendar -l 0
Mar 26 Benjamin Thompson born, 1753, Count Rumford; physicist
Mar 26 David Packard died, 1996; age of 83
Mar 26 Popeye statue unveiled, Crystal City TX Spinach Festival, 1937
Mar 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, 1971
Mar 26 Ludwig van Beethoven dies in Vienna, Austria, 1827
Mar 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, 1827
Mar 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 0
Mar 26 Benjamin Thompson born, 1753, Count Rumford; physicist
Mar 26 David Packard died, 1996; age of 83
Mar 26 Popeye statue unveiled, Crystal City TX Spinach Festival, 1937
Mar 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, 1971
Mar 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.work
03/26 Describe how the cal and calendar commands work
03/27 Throw a party!

注意事项和怀旧

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

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Centos安装php高版本

    Centos安装php高版本

    PHP(超文本预处理器)是一种通用开源脚本语言。主要适用于Web开发领域。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多,使代码运行更快。
    2016-05-05
  • linux 编译安装python3.6的教程详解

    linux 编译安装python3.6的教程详解

    这篇文章主要介绍了linux 编译安装python3.6的教程,本文通过图文并茂的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • linux crm部署代码详解

    linux crm部署代码详解

    在本篇文章里小编给大家分享了关于linux crm部署流程代码,需要的朋友们可以学习下。
    2020-01-01
  • Centos 5下配置https服务器的方法

    Centos 5下配置https服务器的方法

    Centos 5下配置https服务器的步骤,需要的朋友可以参考下。
    2010-07-07
  • 腾讯云上免费部署HTTPS的方法步骤

    腾讯云上免费部署HTTPS的方法步骤

    这篇文章主要介绍了腾讯云上免费部署HTTPS的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Linux系统磁盘格式化以及手动增加swap分区

    Linux系统磁盘格式化以及手动增加swap分区

    本文给大家详细介绍了在Linux系统中磁盘格式化 以及手动增加swap分区的方法和命令,十分全面,有需要的小伙伴可以参考下
    2018-09-09
  • web服务器集群(多台web服务器)session同步、共享的3种解决方法

    web服务器集群(多台web服务器)session同步、共享的3种解决方法

    这篇文章主要介绍了web服务器集群(多台web服务器)session同步、共享的3种解决方法,需要的朋友可以参考下
    2014-04-04
  • CentOS 7如何快速开放端口

    CentOS 7如何快速开放端口

    这篇文章主要为大家详细介绍了CentOS 7如何快速开放端口,如何使用firewalld开放Linux端口,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 配置Linux服务器SSH 安全访问的四个小技巧

    配置Linux服务器SSH 安全访问的四个小技巧

    越来越多的站长,开始使用独立主机(Dedicated Host)和 VPS。而为了节省成本或提高性能,不少人的独机和 VPS,都是基于 unmanaged 的裸机,一切都要自己 DIY。这时候,安全策略的实施,就犹为重要。
    2010-12-12
  • Apache POI简介及应用场景

    Apache POI简介及应用场景

    Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目,我们可以使用POI在Java程序中对Miscrosoft Office各种文件进行读写操作,本文给大家介绍Apache POI简介,感兴趣的朋友一起看看吧
    2023-11-11

最新评论