fortune 命令簡介

阮一峰發表於2015-04-14

美國中餐館的最後一道菜,往往是小甜餅,叫做"幸運餅"(fortune cookie)。

裡面有一張紙條,寫著人生格言。

這種形式的格言,顯然很受歡迎。早在1979年,就有人寫了一個叫做 fortune 的小程式。在命令列下輸入fortune,就會跳出一句。

通常,Linux發行版自帶這個程式。如果沒有,需要先安裝這個程式。


# Debian/Ubuntu
$ sudo apt-get install fortune 

# Mac
$ brew install fortune

我很喜歡這個程式,但是它預設的格言庫都是英語的,我覺得這點不好,就自己動手做了一個中文格言庫。上圖就來自這個庫,安裝命令如下。


$ git clone git@github.com:ruanyf/fortunes.git

$ sudo mv fortunes/data/* /usr/share/games/fortunes/

如果是Mac系統,需要重新生成索引檔案,即在上面兩個命令之間,增加幾個命令。


$ strfile fortunes/data/fortunes
$ strfile fortunes/data/chinese
$ strfile fortunes/data/tang300
$ strfile fortunes/data/song100

目前,這個庫帶有四個格言包。

  • fortunes:英語格言,5472條
  • chinese:中文格言,25919條
  • tang300:唐詩三百首,313條
  • song100::宋詞一百首,95條

fortune 命令顯示的格言是隨機的,但是分佈比例與格言包的容量一致。如果希望四個包平均顯示,即每個包都有25%的顯示機會,需要使用下面的命令格式。


$ fortune -e fortunes chinese tang300 song100

# 或者

$ fortune 25% fortunes 25% chinese 25% tang300 25% song100

上面程式碼的第二種形式,讓你可以根據自己的偏好,調節每個包的比重。

在 ~/.bashrc 或 ~/.zshrc 檔案(根據你使用的 shell 而定)的結尾,加上下面幾行,那麼每次啟動 shell 視窗,就會自動跳出一句格言。


echo
echo "=============== Quote Of The Day ==============="
echo
fortune
echo
echo "================================================"
echo

格言包就是一個文字檔案,可以放入任何內容。假如你想用它背單詞,也沒有問題。下面就是如何製作這一類的 fortune 資料檔案。

(1)所有條目都寫入一個文字檔案,檔名任意。

(2)條目之間用單獨一行的百分號(%)分隔,就像下面這樣。

路漫漫其修遠兮,吾將上下而求索。
----屈原《離騷》
%
富貴不能淫,貧賤不能移,威武不能屈。
----《孟子》
%
長風破浪會有時,直掛雲帆濟滄海。
----《行路難·其一》
%
志不強者智不達,言不信者行不果。
----墨子
%
鍥而舍之,朽木不折;鍥而不捨,金石可鏤。
----《荀子·勸學》
%

(3)生成索引檔案。


$ strfile <fortuneFile> <fortuneFile.dat>

上面命令中,尖括號的 fortune 檔名,替換成你的檔名。

(4)fortune 資料檔案和它的索引檔案,都拷貝到目錄 /usr/share/games/fortunes/ 。

(完)

相關文章