fortune 命令簡介
作者: 阮一峰
日期: 2015年4月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/ 。
(完)