シェルへのログイン時に格言を表示したりおみくじを引いたりする

UNIXのジョークコマンド,fortuneコマンドを使って,ランダムにことわざ・格言を表示したり,おみくじを引いてみたりします。

インストール

macOSの場合は$ brew install -y fortune, Debian系Linuxの場合は$ sudo apt-get install -y fortuneでインストール。
CentOSなどは試していませんが,$ yum install fortuneでインストールできるのではないでしょうか。

コマンドの実行と引数

fortuneでプログラムを起動すると,ランダムに選ばれた格言が表示されます。たとえば:

$ fortune
Love is not enough, but it sure helps.

引数を指定すれば,表示する格言の幅を狭めることができます。なお,以下の表はman fortuneの日本語訳です。

コマンド+引数 結果
fortune(引数なし) 無作為に選ばれた格言を1つ表示
fortune -a 耳が痛くなるような金言を含む,すべてのリストから1つ選んで表示
fortune -e すべてのfortuneファイルが同一サイズであるとみなす
fortune -f 検索されるファイルの一覧を表示し,格言は表示しない
fortune -l 長い金言のみを表示する。-nを指定すると,どれくらいの長さが「長い」と判定されるか指定可能。
fortune -m pattern pattern(正規表現)に合致するようなすべてのことわざを表示
fortune -n length 「短い」と判定される最大文字数をlengthで指定。たとえば,lengthに100を指定した場合,101文字以上の格言はすべて「長い」と判定される。デフォルトは160
fortune -o 耳が痛くなるようなことわざのみから引用。 なあ,ほんとにな,自分のメンタルがやられてない,心の奥底からそう確信しているときにだけこのオプションを指定してくれよな?
fortune -s 「短い」ことわざだけ出力。-nオプションの解説も参照してね。
fortune -i -mオプションの中の大文字・小文字の区別を無視する
fortune -w メッセージの文字数に応じて計算された長さの時間待ってから,終了する。

これらのほかに,データベースを指定することや,確率の指定もできる。ここでは,データベースの指定のみ解説します。

fortune (データベスのファイル名)で,ことわざ集を指定することができます。allをつければ,すべてのことわざと指定されたことわざをすべて検索対象にすることができます。

デフォルトの格言集は,
macOSでは,
/usr/local/Cellar/fortune/9708/share/games/fortunesに普通のことわざ集,/usr/local/Cellar/fortune/9708/share/games/fortunes/offにグサリとくることわざ集が置かれています。

Ubuntuでは,/usr/games/fortuneまたは/usr/share/games/fortune/*ことわざ集が置かれています(ファイル名が-oで終わるファイルは重いことわざが含まれています)。

ログイン時にことわざを表示する

~/bashrcないしは~/.bash_profileに書いてやります。zshやfishなど,他のシェルを使っている方はそれ用の設定ファイルがあるはずなので,そこに記述してください。

$ echo "fortune" >> ~/.bashrc 

または

$ echo "fortune" >> ~/.bash_profile

を端末で実行します。実行後,再度シェルにログインすると,

No mail.
Last login: Fri May  4 16:22:10 2018 from aaa.bbb.cc.c
Keep it short for pithy sake.
ubuntu@tk:~$

となってくれるはずです(メッセージは環境に応じて変わります)。

おみくじをつくる

どこからともなく「bashrcにfunctionを書けばいいんでは?」という声が聞こえてきそうですが,この記事の趣旨から,fortuneコマンドを使っておみくじを作ってみます。

前述したように,fortuneコマンドは外部の辞書から「ことわざ」をランダムに指定することができます。とすれば,「ことわざ」の中身を「吉」とか「大凶」とかにすれば,おみくじが実装できるはずです。

そういうわけで,おみくじ用データベースを作ってみます。どこか適当な作業ディレクトリに移動して,

$ echo -e "大吉\n%\n中吉\n%\n小吉\n%\n\n%\n\n%\n大凶\n%" > database && strfile -c % database database.dat

これでおみくじ用の「ことわざ」集(database.dat)が生成されました。
同じディレクトリで

$ fortune database

を実行してやると,おみくじが実行できます。

シェルのログイン時におみくじが実行できるように設定

.bash_profileまたは.bashrcfortune databaseと書けば,ログイン時におみくじが実行されると思います。

というわけで,駄記事な気もしますが,ことわざやおみくじをシェルのログイン時に表示してみました。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.