原文:Drawing boxes at the Linux command line
原作者:Jason Baker (Red Hat)
台灣中文譯者:林博仁
編譯團隊註:這一系列文章是 opensource.com 搭配降臨節日曆(Advent calendar)所推出的一系列 Linux 命令列小工具介紹。所謂的「降臨節日曆」簡單地說,就是一個小日曆,每一天是一格,從 12 月 1 日開始,每天可以從格子中取出一個小禮物,直到聖誕節到來為止。因此在這一系列中,我們將會介紹 24 個有趣的 Linux 終端機、命令列上的小工具。
圖片由Jason Baker提供
我們 24 個 Linux 終端機玩意中第一個玩意是一個叫做 boxes 的軟體。為什麼從 boxes 開始介紹起呢?因為在後面的介紹中,我們會常常用到這個玩意來包裝!
在我的 Fedora 電腦上 boxes 並沒有被預設安裝,但它在我的作業系統散佈版預設軟體倉庫中,所以要安裝它只需要簡單地執行:
$ sudo dnf install boxes
即可。在 Debian/Ubuntu 上則用
$ sudo apt install boxes
來安裝。當然如果您使用其他的 GNU/Linux 作業系統散布版,有很大的可能性您也可以透過預設的軟體庫直接安裝。
Boxes 是個我非常希望能在我高中與大學的資訊科學課程時期能擁有的工具,因為在我的老師們用意良善地堅持下,我必須在每個來源程式碼檔案、函式、程式碼區塊等等的開頭放上特別指定風格的註解:
/***************/
/* Hello World */
/***************/
事實證明,當你加了幾行文字之後將它們正確地格式化會變得非常地,嗯,繁瑣。所以 Boxes 就派上用場了。Boxes 是個將文字區塊用一個 ASCII 藝術風格的外框包住的簡單工具。它內建了用於來源程式碼註解的多個預設外框風格以及其他的功能項目。
使用上非常簡單。透過 shell 的 pipe 功能我可以將一個簡短的問候語塞到一個文字框中。下列命令:
$ cat greeting.txt | boxes -d diamonds -a c
會帶給我們如下的輸出結果:
/\ /\ /\
/\//\\/\ /\//\\/\ /\//\\/\
/\//\\\///\\/\//\\\///\\/\//\\\///\\/\
//\\\//\/\\///\\\//\/\\///\\\//\/\\///\\
\\//\/ \/\\//
\/ \/
/\ I'm wishing you all a /\
//\\ joyous holiday season //\\
\\// and a Happy Gnu Year! \\//
\/ \/
/\ /\
//\\/\ /\//\\
\\///\\/\//\\\///\\/\//\\\///\\/\//\\\//
\/\\///\\\//\/\\///\\\//\/\\///\\\//\/
\/\\//\/ \/\\//\/ \/\\//\/
\/ \/ \/
或者來點更有娛樂效果的東西,如:
$ echo "I am a dog" | boxes -d dog -a c
輸出結果應該很好猜吧:
__ _,--="=--,_ __
/ \." .-. "./ \
/ ,/ _ : : _ \/` \
\ `| /o\ :_: /o\ |\__/
`-'| :="~` _ `~"=: |
\` (_) `/
.-"-. \ | / .-"-.
.---{ }--| /,.-'-.,\ |--{ }---.
) (_)_)_) \_/`~-===-~`\_/ (_(_(_) (
( I am a dog )
) (
'---------------------------------------'
Boxes 內建許多設定選項來調整邊距設定(padding)、調整位置,甚至是處理正規表達式。您可以在該專案的首頁了解更多它的用法,或是到 GitHub 下載其來源程式碼,甚至是貢獻您自己的外框風格。事實上,如果您正在想要貢獻什麼的話,我可以給您一個主意:何不實作一個聖誕節禮物呢?
_ _
/_\/_\
_______\_\/_/_______
| ///\\\ |
| /// \\\ |
| |
| "Happy pull |
| request!" |
|____________________|
Boxes 以第二版 GNU 通用公眾授權條款釋出。
您有最喜歡的命令列小工具,認為我們應該要介紹的嗎?可以在下方留言給我們。
或是來瞧瞧明天的命令列小玩意:在 Linux 終端機內開火車。
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Syncing