xref: /dragonfly/contrib/mdocml/apropos.1 (revision 25a2db75)
1.\"	$Id: apropos.1,v 1.17 2012/03/24 01:46:25 kristaps Exp $
2.\"
3.\" Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
4.\"
5.\" Permission to use, copy, modify, and distribute this software for any
6.\" purpose with or without fee is hereby granted, provided that the above
7.\" copyright notice and this permission notice appear in all copies.
8.\"
9.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16.\"
17.Dd $Mdocdate: March 24 2012 $
18.Dt APROPOS 1
19.Os
20.Sh NAME
21.Nm apropos
22.Nd search manual page databases
23.Sh SYNOPSIS
24.Nm
25.Op Fl C Ar file
26.Op Fl M Ar manpath
27.Op Fl m Ar manpath
28.Op Fl S Ar arch
29.Op Fl s Ar section
30.Ar expression ...
31.Sh DESCRIPTION
32The
33.Nm
34utility queries manual page databases generated by
35.Xr mandocdb 8 ,
36evaluating on
37.Ar expression
38for each file in each database.
39.Pp
40By default,
41.Nm
42searches for
43.Xr mandocdb 8
44databases in the default paths stipulated by
45.Xr man 1 ,
46parses terms as case-sensitive regular expressions
47over manual names and descriptions.
48Multiple terms imply pairwise
49.Fl o .
50If standard output is a TTY, a result may be selected from a list and
51its manual displayed with the pager.
52.Pp
53Its arguments are as follows:
54.Bl -tag -width Ds
55.It Fl C Ar file
56Specify an alternative configuration
57.Ar file
58in
59.Xr man.conf 5
60format.
61.It Fl M Ar manpath
62Use the colon-separated path instead of the default list of paths
63searched for
64.Xr mandocdb 8
65databases.
66Invalid paths, or paths without manual databases, are ignored.
67.It Fl m Ar manpath
68Prepend the colon-separated paths to the list of paths searched
69for
70.Xr mandocdb 8
71databases.
72Invalid paths, or paths without manual databases, are ignored.
73.It Fl S Ar arch
74Search only for a particular architecture.
75.It Fl s Ar cat
76Search only for a manual section.
77See
78.Xr man 1
79for a listing of manual sections.
80.El
81.Pp
82An
83.Ar expression
84consists of search terms joined by logical operators
85.Fl a
86.Pq and
87and
88.Fl o
89.Pq or .
90The
91.Fl a
92operator has precedence over
93.Fl o
94and both are evaluated left-to-right.
95.Bl -tag -width Ds
96.It \&( Ar expr No \&)
97True if the subexpression
98.Ar expr
99is true.
100.It Ar expr1 Fl a Ar expr2
101True if both
102.Ar expr1
103and
104.Ar expr2
105are true (logical
106.Qq and ) .
107.It Ar expr1 Oo Fl o Oc Ar expr2
108True if
109.Ar expr1
110and/or
111.Ar expr2
112evaluate to true (logical
113.Qq or ) .
114.It Ar term
115True if
116.Ar term
117is satisfied.
118This has syntax
119.Li [key[,key]*(=~)]?val ,
120where operand
121.Cm key
122is an
123.Xr mdoc 7
124macro to query and
125.Cm val
126is its value.
127See
128.Sx Macro Keys
129for a list of available keys.
130Operator
131.Li \&=
132evaluates a substring, while
133.Li \&~
134evaluates a regular expression.
135.It Fl i Ar term
136If
137.Ar term
138is a regular expression, it
139is evaluated case-insensitively.
140Has no effect on substring terms.
141.El
142.Pp
143Results are sorted by manual title, with output formatted as
144.Pp
145.D1 title(sec) \- description
146.Pp
147Where
148.Qq title
149is the manual's title (note multiple manual names may exist for one
150title),
151.Qq sec
152is the manual section, and
153.Qq description
154is the manual's short description.
155If an architecture is specified for the manual, it is displayed as
156.Pp
157.D1 title(cat/arch) \- description
158.Pp
159If on a TTY, results are prefixed with a numeric identifier.
160.Pp
161.D1 [index] title(cat) \- description
162.Pp
163One may choose a manual be entering the index at the prompt.
164Valid choices are displayed using
165.Ev MANPAGER ,
166or failing that ,
167.Ev PAGER
168or just
169.Xr more 1 .
170Source pages are formatted with
171.Xr mandoc 1 ;
172preformatted pages with
173.Xr cat 1 .
174.Ss Macro Keys
175Queries evaluate over a subset of
176.Xr mdoc 7
177macros indexed by
178.Xr mandocdb 8 .
179In addition to the macro keys listed below, the special key
180.Cm any
181may be used to match any available macro key.
182.Pp
183Names and description:
184.Bl -column "xLix" description -offset indent -compact
185.It Li \&Nm Ta manual name
186.It Li \&Nd Ta one-line manual description
187.El
188.Pp
189Sections and cross references:
190.Bl -column "xLix" description -offset indent -compact
191.It Li \&Sh Ta section header (excluding standard sections)
192.It Li \&Ss Ta subsection header
193.It Li \&Xr Ta cross reference to another manual page
194.It Li \&Rs Ta bibliographic reference
195.El
196.Pp
197Semantic markup for command line utilities:
198.Bl -column "xLix" description -offset indent -compact
199.It Li \&Fl Ta command line options (flags)
200.It Li \&Cm Ta command modifier
201.It Li \&Ar Ta command argument
202.It Li \&Ic Ta internal or interactive command
203.It Li \&Ev Ta environmental variable
204.It Li \&Pa Ta file system path
205.El
206.Pp
207Semantic markup for function libraries:
208.Bl -column "xLix" description -offset indent -compact
209.It Li \&Lb Ta function library name
210.It Li \&In Ta include file
211.It Li \&Ft Ta function return type
212.It Li \&Fn Ta function name
213.It Li \&Fa Ta function argument type and name
214.It Li \&Vt Ta variable type
215.It Li \&Va Ta variable name
216.It Li \&Dv Ta defined variable or preprocessor constant
217.It Li \&Er Ta error constant
218.It Li \&Ev Ta environmental variable
219.El
220.Pp
221Various semantic markup:
222.Bl -column "xLix" description -offset indent -compact
223.It Li \&An Ta author name
224.It Li \&Lk Ta hyperlink
225.It Li \&Mt Ta Do mailto Dc hyperlink
226.It Li \&Cd Ta kernel configuration declaration
227.It Li \&Ms Ta mathematical symbol
228.It Li \&Tn Ta tradename
229.El
230.Pp
231Physical markup:
232.Bl -column "xLix" description -offset indent -compact
233.It Li \&Em Ta italic font or underline
234.It Li \&Sy Ta boldface font
235.It Li \&Li Ta typewriter font
236.El
237.Pp
238Text production:
239.Bl -column "xLix" description -offset indent -compact
240.It Li \&St Ta reference to a standards document
241.It Li \&At Ta At No version reference
242.It Li \&Bx Ta Bx No version reference
243.It Li \&Bsx Ta Bsx No version reference
244.It Li \&Nx Ta Nx No version reference
245.It Li \&Fx Ta Fx No version reference
246.It Li \&Ox Ta Ox No version reference
247.It Li \&Dx Ta Dx No version reference
248.El
249.Sh ENVIRONMENT
250.Bl -tag -width Ds
251.It Ev MANPAGER
252Default pager for manuals.
253If this is unset, falls back to
254.Ev Pager .
255.It Ev PAGER
256The second choice for a manual pager.
257If this is unset, use
258.Xr more 1 .
259.It Ev MANPATH
260Colon-separated paths modifying the default list of paths searched for
261manual databases.
262Invalid paths, or paths without manual databases, are ignored.
263Overridden by
264.Fl M .
265If
266.Ev MANPATH
267begins with a
268.Sq \&: ,
269it is appended to the default list;
270else if it ends with
271.Sq \&: ,
272it is prepended to the default list; else if it contains
273.Sq \&:: ,
274the default list is inserted between the colons.
275If none of these conditions are met, it overrides the default list.
276.El
277.Sh FILES
278.Bl -tag -width "/etc/man.conf" -compact
279.It Pa whatis.db
280name of the
281.Xr mandocdb 8
282keyword database
283.It Pa whatis.index
284name of the
285.Xr mandocdb 8
286filename database
287.It Pa /etc/man.conf
288default
289.Xr man 1
290configuration file
291.El
292.Sh EXIT STATUS
293.Ex -std
294.Sh EXAMPLES
295Search for
296.Qq mdoc
297as a substring and regular expression
298within each manual name and description:
299.Pp
300.Dl $ apropos mdoc
301.Dl $ apropos ~^mdoc$
302.Pp
303Include matches for
304.Qq roff
305and
306.Qq man
307for the regular expression case:
308.Pp
309.Dl $ apropos ~^mdoc$ roff man
310.Dl $ apropos ~^mdoc$ \-o roff \-o man
311.Pp
312Search for
313.Qq optind
314and
315.Qq optarg
316as variable names in the library category:
317.Pp
318.Dl $ apropos \-s 3 Va~^optind \-a Va~^optarg$
319.Sh SEE ALSO
320.Xr more 1
321.Xr re_format 7 ,
322.Xr mandocdb 8
323.Sh AUTHORS
324The
325.Nm
326utility was written by
327.An Kristaps Dzonsons ,
328.Mt kristaps@bsd.lv .
329