1 # SPDX-License-Identifier: GPL-3.0-only
5 manual_title = Games Manual
7 [supercommand tfortune]
16 synopsis = [global-options...] [--] [<subcommand> [subcommand-options...]]
18 summary = print help and exit
20 [option detailed-help]
21 summary = print help, including all details, and exit
23 summary = print version and exit
26 summary = control amount of logging
28 arg_info = required_arg
32 LSGLL_DEBUG = "debug",
34 LSGLL_NOTICE = "notice",
35 LSGLL_WARNING = "warning",
36 LSGLL_ERROR = "error",
42 Log only messages with severity greater or equal than the given
43 value. Possible values:
45 debug: Produces really noisy output.
46 info: Still noisy, but won't fill up the disk quickly.
47 notice: Indicates normal, but significant event.
48 warning: Unexpected events that can be handled.
49 error: Unhandled error condition.
50 crit: System might be unreliable.
51 emerg: Last message before exit.
54 summary = where to look for input files
56 arg_info = required_arg
59 default_val = "~/.tfortune"
61 This is used to locate epigrams and named tag expressions.
62 If any filename argument does not start with a slash, the
63 filename is interpreted as relative to this base directory.
65 Epigrams are expected in the "epigrams" subdirectory of the base
66 directory while tag expressions are expected to be stored below
71 purpose = perform bash command line completion
72 non-opts-name = arg...
74 This subcommand is executed from the bash completer for tfortune. The
75 completer sets the non-option arguments for the subcommand to the
76 words of the current command line. It obtains these words from the
77 elements of the special COMP_WORDS array which is maintained by bash.
79 The compgen subcommand writes all possible completions to stdout. The
80 completer reads in the completions and builds the COMPREPLY array
81 containing the matching entries. Bash examines the elements of this
82 array and completes the command line if there is a single matching
83 completion, or prints out the list of completions in case of ambiguity.
86 [option current-word-index]
88 summary = index of the current word in the command line
90 arg_info = required_arg
93 An index into the argument vector of the word containing the current
94 cursor position. See the description of the $CWORD special variable
98 [subcommand completer]
99 purpose = print the bash completer to stdout
101 The output of this command is designed to be re-used as input for bash.
102 Specifically, bash completion for tfortune can be activated by adding
103 the following to .bashrc: eval "$(tfortune completer)".
106 summary = also add an alias and a completer for it
108 arg_info = required_arg
112 Specify this to define a bash alias for tfortune along with the
113 completer. Unlike the regular tfortune program, the alias will
114 contain the double dash argument which separates the subcommand and
115 its options from the options to tfortune itself.
119 purpose = edit epigrams
120 non-opts-name = basename...
122 Opens the named epigram file an interactive editor. The executable
123 of the editor is determined as follows: First the contents of the
124 environment variable TFORTUNE_EDITOR is examined. If this variable
125 is empty or unset, EDITOR is tried. If EDITOR is also unset, vi
128 The given basename is interpreted as described in the help text of the
129 --basedir option above. If --basedir is not given and the "epigrams"
130 directory does not exist, it is created.
134 purpose = edit tag expressions
135 non-opts-name = basename...
137 Opens the named tag expression file an interactive editor. The editor
138 to execute is determined in the same way as for the "ede" subcommand.
139 Also, a non-existing "expressions" subdirectory is handled in the same
143 purpose = list available subcommands or print command-specific help
144 non-opts-name = [command]
146 Without any arguments, help prints the list of available commands. When
147 called with a command name argument, it prints the help text of the
152 summary = show the long help text
154 If the optional argument is supplied, the long help text contains the
155 synopsis, the purpose and the description of the specified command,
156 followed by the option list including summary and help text of each
157 option. Without --long, the short help is shown instead. This omits
158 the description of the command and the option help.
160 If no command is supplied but --long is given, the list contains the
161 purpose of each command.
165 purpose = list epigram files
167 Print the list of all epigram files.
171 summary = long listing
173 This is similar to the long output of the standard ls(1) command.
179 This lists all tags contained in any of the given input files.
181 non-opts-name = <file>...
184 summary = long listing
186 Also show how many times this tag appears.
188 [option sort-by-count]
190 summary = sort by occurrence count rather than alphabetically.
193 summary = reverse sort order
196 purpose = list tag expressions
198 Print the list of all named tag expressions.
202 summary = long listing
204 This is similar to the long output of the standard ls(1) command.
207 purpose = print epigram(s)
209 Unless --all is given, this picks an epigram by random from the
210 given file(s) which is admissible with respect to the given named
211 tag expression. If no file is given, all files are taken into account.
213 non-opts-name = [file...]
216 summary = name of the tag expression
217 arg_info = required_arg
220 default_val = /dev/null
222 Use the tag expression stored in the given file to define the
223 admissible epigrams. The special string "-" means to read the tag
224 expression from stdin. The default value corresponds to the empty
225 tag expression for which all epigrams are admissible.
229 summary = print all admissible epigrams, not just a random one.
232 summary = print also the tags of the selected epigram
234 purpose = show statistics
236 This prints several counts and averages about the epigrams, tags and
241 summary = include statistics about hash table utilization
243 [section Input file format]
244 Input files may contain arbitrary many epigrams. The end of each
245 epigram must be marked with a "tag" line. The tag line consists of
246 four dashes, a space character, and a comma separated list of tags.
247 Tags may span multiple words, but no comma is allowed. The following
248 is an example input file for tfortune. It contains a single epigram
253 Anyone who attempts to generate random numbers by deterministic means
254 is, of course, living in a state of sin. -- John von Neumann
260 [section Tag Expressions]
261 Tag expressions are based on a context-free grammar in which the
262 following keywords are defined:
267 if the epigram contains a tag named
273 evaluates to the number of bytes of the epigram.
276 evaluates to contents of the epigram. This is useful for pattern
280 The grammar admits the following operators and relations:
285 logical operators for
295 arithmetic operators for addition, negation or subtraction (unary
296 or binary minus), multiplication and division. Arithmetic is always
297 performed on 64 bit signed integers.
306 less than, greater than, less or equal than, greater or equal than,
307 equal to, not equal to, regular expression match.
308 Regular expression patterns are of the form
309 .IR /pattern/[flags] .
310 That is, the pattern is delimited by slashes, and is followed by
311 zero or more characters, each specifying a flag according to the
320 Treat newline as an ordinary character
325 Note that only extended regular expression patterns are supported. See
326 regex(3) for details.
329 The above operators obey the usual associativity and precedence
330 rules. Parentheses can be used to change precedence.
334 is an expression in this grammar which evaluates to either
338 Epigrams for which the expression is
343 For example, the above epigram is admissible for the tag expression
347 (tag("math") || tag("physics")) && len < 1000 && text =~ /neumann/i
351 It is not admissible for
355 (tag("math") && tag("physics")) || len > 1000 || text =~ /neumann/
362 Print a random epigram:
370 Print a random short (less than 100 bytes) epigram:
374 echo 'len < 100' | tfortune -l debug -- print -x -
378 List tags, including usage counts, sort by count in descending order:
386 Activate bash completion and define the
392 eval "$(tfortune completer -a tf)"
401 Copyright (C) COPYRIGHT_YEAR() AUTHOR()
405 This is free software: you are free to change and redistribute it.
407 There is NO WARRANTY, to the extent permitted by law.
410 .UR PACKAGE_HOMEPAGE()