Skip to main content.

fortune(6) に新しい警句を追加する方法

fortune に新しい警句を追加する方法です。追加してどうするわけでもありませんが、 どうせなら英語ではなく日本語の警句が出てくるほうが嬉しい人もいるかと思い書いてみました。

はじめに

私自身は米国へ行ったことがないので実際に目にしたわけではありませんが、 アメリカの中華料理店では勘定を済ませた後に、ちょっと気の利いた警句(Epigrams)が書かれた紙切れが入っている 「Fortune Cookies」という中空のクッキーをくれるのだそうです。 fortune(6) はこの「Fortune Cookies」をシミュレート(?)するためのコマンドで、起動される度にランダムな警句を表示します。

fortune(6) は BSD 由来のコマンドで、Linux などでは NetBSD の fortune 1.4 をベース(*1)にした fortune-mod が利用されています。

警句の追加方法

以下のようにすれば fortnue に新しい警句を追加できます。

警句を書く

追加する警句(要するに、ネタ)をテキストファイルに書きます。 フォーマットはごく単純で、警句の区切りに「%%」を配置するだけです。 区切りに利用する文字は「%」でなくとも構わないのですが、デフォルトは 「%」となっていますので、余程の理由(祖父の遺言、父の教え、 実家の仕来り、宗教上の制約など)がなければ「%」を利用するのが無難です。

以下に例を挙げます。 全然警句じゃありませんが、この際内容については無視して下さい。

のび太のくせに生意気だ!!
%%
スネ夫を殺して僕も死ぬ!!
%%
ジャイアンリサイタル。ジャイアン大いに歌う。

fortune 用ファイルに変換する

警句を書いたらそのファイル(以後、「警句ファイル」と呼びます)を fortune(6) が利用出来るように変換します。 変換には strfile(1) を利用します(/usr/sbin に含まれていることがあるので注意して下さい)。ただ単に

$ strfile 警句ファイル名

を実行すれば拡張子 .datが付いたファイルが作成されます。 仮に警句ファイルの名前が original だとすると、original.dat というファイルが作成されることになります。 この .dat ファイルには、警句ファイル中の各警句に対するポインタテーブルが格納されています。

.datファイルが出来たら、fortune(6) のデータディレクトリ(通常は /usr/share/games/fortunes)に警句ファイルと .dat ファイルをコピーします。これで fortune(6) を実行すれば、新しく作成したこの警句ファイルも fortune(6) が出力する警句の候補となります。

fortune(6) を実行する際に自分が作成 / 追加した警句だけを対象にしたいのなら、

$ fortune 警句ファイル名

とすればよいでしょう。

*1: fortune-mod 9708 の README より。