FORTUNE(6) | UNIX Reference Manual | FORTUNE(6) |
fortune - print a random, hopefully interesting, adage
fortune [-acefilosuw] [-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, where each category is sub-divided into those which are potentially offensive and those which are not.
The options are as follows:
Please, please, please request a potentially offensive fortune if and only if you believe, deep in your heart, that you are willing to be offended. (And that you'll just quit using -o rather than give us grief about it, okay?)
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 inclusive, 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 percentages do not sum to 100, and there are specifications without percentages, the remaining percent will apply to those files and/or directories, 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
fortune 90% funny 10% not-funny
The -e option says to consider all files equal; thus
fortune -e funny not-funny
fortune 50% funny 50% not-funny
Note: these are the defaults as defined at compile time.
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 repetitiousness. 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 content (religion, politics). There are parallel files in the main directory and in the offensive files directory (e.g., fortunes/definitions and fortunes/off/definitions). Not all the potentially offensive fortunes are in the offensive fortunes files, nor are all the fortunes in the offensive files potentially offensive, probably, though a strong attempt has been made to achieve greater consistency. Also, a better division might be made.
When passing files to fortune, directories must be specified by absolute pathnames, and filenames starting with a dot are ignored. See: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=241888
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 advantage is that the text files can be easily edited without resorting to unstr, and there is a potential savings in disk space (on the assumption that the sysadmin kept both .dat file with strings and the text file).
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 discovered and fixed during this process.
At a guess, a great many people have worked on this program, many without leaving attributions.
re_comp(3), regcomp(3), strfile(1), unstr(1)
19 April 94 [May. 97] | BSD Experimental |