在 Linux 命令行规划您自己的节日日历

将命令链接在一起以构建一个色彩缤纷的日历,然后在暴风雪中将其带走。
174 位读者喜欢这个。
Linux toy: cal

Jason Baker

欢迎来到今天的 Linux 命令行玩具降临节日历。 如果这是您第一次访问该系列,您可能会问自己,什么是命令行玩具。 即使我也不太确定,但通常,它可以是一个游戏或任何简单的消遣,可以帮助您在终端上获得乐趣。

你们中的一些人很可能已经看过我们日历中的各种选择,但我们希望至少每个人都能找到一些新东西。

我们不知何故已经到了我们系列的第七天,而没有创建一个实际的日历来庆祝,所以让我们今天使用一个命令行工具来做到这一点: **cal**。 就其本身而言,**cal** 可能不是最令人惊叹的工具,但我们可以使用其他一些实用程序来增添色彩。

您的系统很可能已经安装了 **cal**。 要在此处使用它,只需键入 **cal**。

$ cal
    December 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           

我们不会在本文中介绍高级用法,因此如果您想了解有关 **cal** 的更多信息,请查看 Opensource.com 社区版主 Don Watkin 的优秀 日期和 cal 命令概述

现在,让我们用一个漂亮的框来增添色彩,正如我们在之前的 Linux 玩具文章中介绍的那样。 我将使用钻石框,并使用一点填充使其对齐。

$ cal | boxes -d diamonds -p a1l4t2 
       /\          /\          /\
    /\//\\/\    /\//\\/\    /\//\\/\
 /\//\\\///\\/\//\\\///\\/\//\\\///\\/\
//\\\//\/\\///\\\//\/\\///\\\//\/\\///\\
\\//\/                            \/\\//
 \/                                  \/
 /\           December 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                      \/
 /\                                  /\
//\\/\                            /\//\\
\\///\\/\//\\\///\\/\//\\\///\\/\//\\\//
 \/\\///\\\//\/\\///\\\//\/\\///\\\//\/
    \/\\//\/    \/\\//\/    \/\\//\/
       \/          \/          \/

看起来不错,但为了保险起见,让我们将整个东西放在第二个框中,只是为了好玩。 这次我们将使用 scoll 设计。

cal | boxes -d diamonds -p a1t2l3 | boxes -a c -d scroll         
 / ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \
|  /~~\                                              /~~\  |
|\ \   |         /\          /\          /\         |   / /|
| \   /|      /\//\\/\    /\//\\/\    /\//\\/\      |\   / |
|  ~~  |   /\//\\\///\\/\//\\\///\\/\//\\\///\\/\   |  ~~  |
|      |  //\\\//\/\\///\\\//\/\\///\\\//\/\\///\\  |      |
|      |  \\//\/                            \/\\//  |      |
|      |   \/                                  \/   |      |
|      |   /\          December 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                       \/   |      |
|      |   /\                                  /\   |      |
|      |  //\\/\                            /\//\\  |      |
|      |  \\///\\/\//\\\///\\/\//\\\///\\/\//\\\//  |      |
|      |   \/\\///\\\//\/\\///\\\//\/\\///\\\//\/   |      |
|      |      \/\\//\/    \/\\//\/    \/\\//\/      |      |
|      |         \/          \/          \/         |      |
|      |                                            |      |
 \     |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|     /
  \   /                                              \   /
   ~~~                                                ~~~

完美。 现在,事情变得有点疯狂了。 我喜欢我们的设计,但是,我想全力以赴。 所以我要给它上色。 但是在 Opensource.com 的工作人员所在的北卡罗来纳州罗利办事处,这个周末很有可能会下雪。 所以让我们享受我们彩色化的降临节日历,然后用雪暴把它冲走。

对于雪,我正在抓取我在 CLIMagic 上找到的一段巧妙的 Bash 和 Gawk 代码片段。 如果您不熟悉 CLIMagic,请查看他们的 网站并在 Twitter 上关注他们。 你会很高兴你这么做了。

所以我们开始了。 让我们清除屏幕,显示我们的盒状日历,对其进行着色,等待几秒钟,然后用暴风雪将其冲走。 全部都在终端上,在一行中。

$ clear;cal|boxes -d diamonds -p a1t2l3|boxes -a c -d scroll|lolcat;sleep 3;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS)) $(printf "\u2744\n");sleep 0.1;done|gawk '{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf "\033[%s;%sH ",o,x;printf "\033[%s;%sH%s \033[0;0H",a[x],x,$4;}}'

就这样了。

Animated calendar

为了使它在您的系统上工作,您需要所有引用的实用程序(boxes、lolcat、cal、gawk 等),并且您需要使用支持 Unicode 的终端模拟器。

您是否有您认为我应该分析的最喜欢的命令行玩具? 该系列的日历大部分都已填写完毕,但我还剩下几个位置。 请在下面的评论中告诉我,我会检查一下。 如果有空间,我会尝试将其包括在内。 如果没有,但我收到了一些好的投稿,我将在最后做一个荣誉奖总结。

看看昨天的玩具,使用 Nyan Cat 在 Linux 命令行中休息一下,明天再回来看看另一个玩具!

接下来阅读什么
标签
User profile image.
Jason 是从 2013 年到 2022 年的 Opensource.com 员工和 Red Hatter。此个人资料包含他当时与工作相关的文章。其他贡献可以在他的个人帐户中找到。

1 条评论

如果你继续这样下去,杰森,你会让红帽的每个人都意识到你每天在工作中是如何度过的。

Creative Commons License本作品已根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.