欢迎来到今天的 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;}}'
就这样了。

为了使它在您的系统上工作,您需要所有引用的实用程序(boxes、lolcat、cal、gawk 等),并且您需要使用支持 Unicode 的终端模拟器。
您是否有您认为我应该分析的最喜欢的命令行玩具? 该系列的日历大部分都已填写完毕,但我还剩下几个位置。 请在下面的评论中告诉我,我会检查一下。 如果有空间,我会尝试将其包括在内。 如果没有,但我收到了一些好的投稿,我将在最后做一个荣誉奖总结。
看看昨天的玩具,使用 Nyan Cat 在 Linux 命令行中休息一下,明天再回来看看另一个玩具!
1 条评论