fortune是一个非常简单的小程序,几乎存在于所有的unix、bsd、linux操作系统上,它的功能很简单,就是从数据库中随机返回一句话。这个数据库一般是前辈们都设计好了的,也并没有我们常用的关系型数据库那么复杂,一般情况下忽视他们的存在就是了。要使用fortune,在shell中执行就可以了,比如:
很显然这是一个类似脑筋急转弯的问题。fortune有一些参数可以选用,比如:
-c参数让你知道随机的句子出自哪个文件/或者叫数据库,本例中就是fortunes了。并且,在我使用的ubuntu dapper中,这些数据文件都存储在/usr/share/games/fortune中:
看来很多人都把fortune当作一个小“游戏”呢。如果想知道fortune都会从哪些文件中随机挑选句子,可以这样:
-f参数列出fortune所用的所有数据文件,以及他们在随机选取句子过程中的权重。一般这个权重或者比例是按照各个文件中的句子总数来分配的,可以看到ubuntu只带了三个数据文件:fortunes预言,literature名句,riddles谜语。fortune也可以控制每个数据文件的权重大小,比如-e参数让大家平均比例,或者在每个数据文件前面加上百分比:
可以看到比例就随之调整了,当然比例只和要等于100%,不过也可以省略riddles前面的百分比,那么它就是100%减去其他文件所占比例之和。还有其他一些参数可以用,比如:
先用-n指定一个句子长度,然后用-l只返回比这个长的,或者用-s只返回比这个短的。 -m regxp返回符合正则表达式的句子 -i在使用-m参数的时候忽略大小写 -o只返回具有攻击性的句子(不建议在网上对他人使用) -a在所有句子中随机选择,包括具有攻击性或者不具有的。 -w 程序结束前等待一段时间,如果每次关机之前来一下,可以让你有时间来阅读
除了系统给定的那些数据文件之外,我们当然想自己创建啦,这个就要用到strfile命令了,首先来创建一个数据文件test:
句子可以是多行,句子之间用独占一行的字符%来分割,然后用strfile为test创建索引文件,就可以在fortune中使用了:
注意如果不使用strfile创建索引,数据是不会被索引到的,所以要在新建和每次更新数据文件之后重新创建索引。
用法就介绍到这里,那么fortune有什么用呢?这就要看用户们怎么发挥了,比如我想在mutt的签名中随机附上一个脑筋急转弯,或者为网站生成“每日技巧”等等都可以,nix下的工具就是这样,只作一件事,并且作到最好,然后由用户来自由组合。
谁有兴趣把唐诗宋词弄进来玩玩?
update @ 2006-12-09 循着gorf留言的提示,顺利在debian的ftp中下载了fortune-zh 1.6版,把其中的song100和tang300两个文件抓过来就是唐诗宋词了,strfile转换后顺利应用于我的ubuntu中。
准确的说,宋词是95首,唐诗是313首 :-)。
然后,在aptitude中还发现ubuntu源中也有更多的fortune数据文件,比如debian的每日技巧:
甚至从垃圾邮件中收集来的信息,注意这个会安装到off目录下,属于攻击性或者不太适合的内容,慎用:
还有牛人mario打包的超级数据文件,分为好几个文件,比如mario.arteascii
$apt-get install fortunes-mario $ fortune mario.arteascii $ fortune mario.arteascii -=Watch face=-
.---.
/,-"0"-.\
// | \\
||9 o 3|D
\ . //
\
-.6.-'/
`=---='
这就是一个超级ascii艺术图案宝库啊。
用gentoo吧,gentoo-china-overlay里有fortune-zh里有唐诗。
呵呵,这个倒是蛮有趣的。
我在cygwin上试了一下,也有