在 Linux 命令行中規劃你的假期日曆
歡迎閱讀今天推出的 Linux 命令行玩具降臨日曆。如果這是你第一次訪問本系列,你可能會問:什麼是命令行玩具。即使我不太確定,但一般來說,它可以是一個遊戲或任何簡單的娛樂,可以幫助你在終端玩得開心。
很可能你們中的一些人之前已經看過我們日曆上的各種選擇,但我們希望給每個人至少一件新東西。
我們在沒有創建實際日曆的情況下完成了本系列的第 7 天,所以今天讓我們使用命令行工具來做到這一點: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
的更多信息,查看 Opensouce.com 社區版主 Don Watkin 的優秀文章 date 和 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 /
/ /
//\/ ///\
\///\///\///\///\///\///\//
/\///\///\///\///\///\///
/\/// /\/// /\///
/ / /
看起來很不錯,但是為了更規整,讓我們把整個東西放到另一個盒子里,為了好玩,這次我們將使用捲軸式設計。
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 員工所在的北卡羅來版納州羅利辦公室,本周末很有可能下雪。所以,讓我們享受彩色降臨日曆,然後用雪擦掉它。
關於雪,我抓取了一些 Bash 和 Gawk 的漂亮代碼片段,幸虧我發現了 CLIMagic。如果你不熟悉 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 "u2744n");sleep 0.1;done|gawk '{a[$3]=0;for(x in a) {o=a[x];a[x]=a[x]+1;printf "