fortune is a fun UNIX program that’s traditionally installed on all UNIX-like machines.  It usually lives in /usr/games.  Its purpose is to print a fortune from one of several databases.  They’re usually funny.  On most Linux distros, the original fortune (as created in 4.2BSD and maintained by NetBSD) is not used, but a clone, usually called fortune-mod, is installed in its place.  My shells automatically print a fortune on login but you can get a fortune anytime by typing “fortune”.

My shell session

My shell session on RHEL 5.4, from Windoze Vista via PuTTY

My initial shell is Bash since my usual purpose for logging onto the server via shell is system administration.  But today, I want to hack some source, so I start a csh session.  On login, when Bash starts, it automatically gives me a fortune.  Since /etc/csh.cshrc also contains code to print a fortune (for those who have csh as their default shell), I get a second fortune when I start csh.

Sorry for being in Windoze – I’m there so I can play WoW but I suddenly got inspiration to look into something in a binary image format converter I’m working on.  Rather than reboot into RHEL to edit the source, I just started up PuTTY.  It’s Advent now, so my windows are blue 🙂

UPDATE:  Here’s the manpage for the fortune command from the fortune-mod package for RHEL 5.4:

FORTUNE(6)                   UNIX Reference Manual                  FORTUNE(6)

       fortune - print a random, hopefully interesting, adage

       fortune [-acefilsw] [-n length] [ -m pattern] [[n%] file/dir/all]

       When  fortune  is run with no arguments it prints out a random epigram.
       Epigrams are divided into several categories.

       The options are as follows:

       -a     Choose from all lists of maxims.

       -c     Show the cookie file from which the fortune came.

       -e     Consider all fortune files to be of equal size  (see  discussion
              below on multiple files).

       -f     Print  out  the list of files which would be searched, but donât
              print a fortune.

       -l     Long dictums only.  See -n on how ââlongââ is  defined  in  this

       -m pattern
              Print  out all fortunes which match the basic regular expression
              pattern.  The syntax of these expressions depends  on  how  your
              system defines re_comp(3) or regcomp(3), but it should neverthe-
              less be similar to the syntax used in grep(1).

              The fortunes are output to standard output, while the  names  of
              the  file  from which each fortune comes are printed to standard
              error.  Either or both can be redirected; if standard output  is
              redirected  to  a  file, the result is a valid fortunes database
              file.  If standard error is also redirected to  this  file,  the
              result  is  still  valid,  but there will be ââbogusââ fortunes,
              i.e. the filenames themselves, in parentheses.  This can be use-
              ful if you wish to remove the gathered matches from their origi-
              nal files, since each filename-record will precede  the  records
              from the file it names.

       -n length
              Set  the longest fortune length (in characters) considered to be
              ââshortââ (the default is 160).  All fortunes longer  than  this
              are considered ââlongââ.  Be careful!  If you set the length too
              short and ask for short fortunes, or too long and ask  for  long
              ones, fortune goes into a never-ending thrash loop.

       -s     Short  apothegms  only.  See -n on which fortunes are considered

       -i     Ignore case for -m patterns.

       -w     Wait before termination for an amount of  time  calculated  from
              the  number  of characters in the message.  This is useful if it
              is executed as part of the logout procedure  to  guarantee  that
              the message can be read before the screen is cleared.

       The  user  may  specify  alternate sayings.  You can specify a specific
       file, a directory which contains one or more files, or the special word
       all  which says to use all the standard databases.  Any of these may be
       preceded by a percentage, which is a number n between 0 and 100  inclu-
       sive, followed by a %.  If it is, there will be a n percent probability
       that an adage will be picked from that file or directory. If  the  per-
       centages  do  not sum to 100, and there are specifications without per-
       centages, the remaining percent will apply to those files and/or direc-
       tories,  in  which  case  the probability of selecting from one of them
       will be based on their relative sizes.

       As an example, given two databases  funny  and  not-funny,  with  funny
       twice as big (in number of fortunes, not raw file size), saying

              fortune funny not-funny

       will get you fortunes out of funny two-thirds of the time.  The command

              fortune 90% funny 10% not-funny

       will pick out 90% of its fortunes from funny (the ââ10% not-funnyââ  is
       unnecessary, since 10% is all thatâs left).

       The -e option says to consider all files equal; thus

              fortune -e funny not-funny

       is equivalent to

              fortune 50% funny 50% not-funny

       Note: these are the defaults as defined at compile time.

              Directory for fortunes.

       If  a  particular set of fortunes is particularly unwanted, there is an
       easy solution: delete the associated .dat file.  This leaves  the  data
       intact,  should  the  file later be wanted, but since fortune no longer
       finds the pointers file, it ignores the text file.

       The supplied fortune databases have been attacked, in order to  correct
       orthographical  and  grammatical  errors,  and  particularly  to reduce
       redundancy and repetition and redundancy.  But especially to avoid rep-
       etitiousness.   This  has not been a complete success.  In the process,
       some fortunes may also have been lost.

       The fortune databases are now divided into a larger number  of  smaller
       files, some organized by format (poetry, definitions), and some by con-
       tent (religion, politics).

       This version of fortune is based on the NetBSD fortune 1.4, but with  a
       number of bug fixes and enhancements.

       The  original  fortune/strfile  format used a single file; strfile read
       the text file and converted it to null-delimited  strings,  which  were
       stored after the table of pointers in the .dat file.  By NetBSD fortune
       1.4, this had changed to two separate files: the .dat file was only the
       header (the table of pointers, plus flags; see strfile.h), and the text
       strings were left in their own file.  The potential problem  with  this
       is  that text file and header file may get out of synch, but the advan-
       tage is that the text files can be easily edited without  resorting  to
       unstr,  and  there is a potential savings in disk space (on the assump-
       tion that the sysadmin kept both .dat file with strings  and  the  text

       Many  of  the enhancements made over the NetBSD version assumed a Linux
       system, and thus caused it to fail  under  other  platforms,  including
       BSD.   The  source code has since been made more generic, and currently
       works on SunOS 4.x as well as Linux, with support  for  more  platforms
       expected in the future.  Note that some bugs were inadvertently discov-
       ered and fixed during this process.

       At a guess, a great many people have worked on this program, many with-
       out leaving attributions.

       re_comp(3), regcomp(3), strfile(1), unstr(1)

BSD Experimental             19 April 94 [May. 97]                  FORTUNE(6)



  1. Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: