fortune (UNIX)

Unix系OSのコマンド

fortuneとは、Unix系OSのコマンドの一つ。フォーチュン・クッキーを模したプログラムであり、歴史上の偉人の名言や有名人の発言などを一部引用したメッセージを無作為に表示する。

フォーチュンクッキーに仕込まれたおみくじのように、金言名句を表示する

概要 編集

本プログラムと構成ファイルの名前の由来となっている「フォーチュン・クッキー」とは、金言名句や運勢の書かれたおみくじが中に仕込まれた菓子のことである。fortuneはそれを模したものであり、コンソール上に有名人の発言などを表示させることができる。古くはVersion 7 Unixの時代に登場したプログラムであり、現在Linux用などとして配布されているものは、ケン・アーノルドによって作成されたBSD由来のバージョンが元となっている。

普通にコマンドを入力して表示させる等の他、ログイン時・ログアウト時に引用句をランダムに表示させる、といったように使う。ユーザーのホームディレクトリ.profileまたは.logoutファイルにこのコマンドを書き込んでおくと、現代でも端末エミュレータによるセッション開始時(あるいは終了時[1])にメッセージが表示される。またウィンドウ環境でGUI的に表示するもの[2]や、Unix系以外用のバージョンもある。

fortuneは通常、プログラム本体とともに引用句が収録されたテーマファイル集がセットで配布されており、そのデータベースからランダムに選び出して[3]メッセージを表示させている。テーマファイル集の中には、まさに金言名句というべき偉人の発言の引用で占められたファイルもあるが、アニメの登場人物の名言、ハッカー一流のジョーク、どうでもいい雑学的知識、あるいは意味不明なポエムといった、金言名句とは到底呼べない発言が「引用句」の名目で収録されているファイルがメインであるバージョンも多く、ジョークプログラムとしての要素も強い。

XScreenSaver英語版(画面に適当な文字列を表示させるUNIX系OS用スクリーンセーバー)のいくつかのモードの入力テキストを生成するためにも利用される。

引用句の内容 編集

fortuneの引用句データベースはUNIXユーザーの嗜好に極めて偏っており、したがって、計算機科学プログラミングについての変てこなジョークが多く含まれている。他にもSF(例えば、スタートレックツィベリアダ英語版ドクター・フー銀河ヒッチハイク・ガイドなど)、漫画のヅィッピー・ザ・ピンヘッド英語版アンブローズ・ビアスデーブ・バリー英語版といった、往年のハッカーに非常に好まれた作品からの引用が含まれている一方で、欧米で伝統的に親しまれている定番の名言やジョークなども幅広く含まれている。いくつかのバージョンにはいわゆる「お下品な(offensive)」言葉が含まれているが、それらはコマンドラインオプションとして-a(all)を与えて、データの全てを選出対象とするか、-o(offensive)オプションにより意図的に選択しない限りは表示されない。

プログラムの目的 編集

fortuneの引用句ファイルの一つ"goedel"には、fortuneコマンド自身についての発言が含まれている。ここにfortuneプログラムの目的が集約されているといえるだろう。

Has anyone realized that the purpose of the fortune cookie program is to
defuse project tensions?  When did you ever see a cheerful cookie, a
non-cynical, or even an informative cookie?
        Perhaps inadvertently, we have a channel for our aggressions.  This
still begs the question of whether the cookie releases the pressure or only
serves to blunt the warning signs.

        Long live the revolution!
        Have a nice day.

意訳

まったく楽しくない、皮肉たっぷりの、有益なことなどこれっぽっちもない迷言ばかり
表示するこのfortuneプログラムが、プロジェクトの緊張を和らげるために作られたものだと
気付いた者はいるだろうか?
        おそらく、自分で意識しているかどうかに関わらず、我々は誰しも、自らの中に
秘められた攻撃性を露わにさせるような回路を持っているのだ。fortuneとは、そんな我々の
感情の回路をオープンにすることで、溜まったストレスを解放してくれるための物なのか?あるいは
そういう難しいことはなく、単にどうでもいい金言名句を表示するだけのプログラムなのか?
その答えは君自身の中にある。

                  革命よ、永遠なれ!
                  ごきげんよう。

fortuneの構成ファイル 編集

よくあるバージョンのfortuneでは、2つのファイルが使用される。

  • 1つは、引用句のリストであり、各引用句がテキストファイルに記載され、文字"%"のある行で区切られている。
  • もう1つは、strfile(8)[4]プログラムで、引用句のテキストファイルから生成された、ランダムアクセス用データファイルである。

ウェブページ上で引用句を表示させたり、データファイルを生成するのではなく直接テキストファイルを利用したりするバージョンも存在する。

共通のオプション 編集

コマンドライン版のfortuneの挙動を変化させるいくつかの共通のオプションが存在する。

オプション 動作
-a 「お下品な」引用句ファイルを含む、全てのデータベースから引用句を選び出す。
-e 全ての引用句ファイルから等しく同じ確率で引用句を選択する。
-f 検索可能な全ての引用句ファイルをリストアップする。ただし、引用句自体は表示しない。
-i -mオプションが使用された場合、文字の大小を区別しない正規表現検索を行う。
-l -nオプションで指定される値、もしくは-nオプションが指定されていない場合は160文字以上の長さの引用句のみ表示する。
-m [pattern] [pattern]で指定される正規表現に適合する全ての引用句を表示する。
-n [length] 「長大な」引用もしくは「短い」引用句を指定する際、-lオプション並びに-sオプションで使用される文字数を上書きする(デフォルトは160文字)。
-o 「お下品な」引用句のみ表示する。
-s -nオプションで指定される値もしくは、-nオプションが指定されていない場合は160文字以下の長さの引用句のみ表示する。
-w 終了時にある程度の時間待機したのち終了する。これは、スクリーンがクリアされる直前にfortuneが表示されるケースにて有用である。

脚注 編集

  1. ^ 昔のハードウェアによる端末であれば画面をクリアしなければ表示が残って見えていたが、端末エミュレータでは何かひと工夫が必要だろう。
  2. ^ http://fortune-gui.sourceforge.net/
  3. ^ fortuneプログラムで必ず使われているとは限らないが、全体の個数が不明なデータを端から順番になめながら、そのうちのどれか1つを均等な確率になるように選び出す、というちょっとしたアルゴリズムがある。ウェブページのアクセスカウンタのようにして表示する場合は、単に順番に表示するだけでランダムに見える、というハックもある。
  4. ^ strfile(1) – Linux User Commands Manual (en)

関連項目 編集

  • sl - slコマンド。fortuneと同じくUNIXの定番ジョークプログラム。

外部リンク 編集