1.\" $OpenBSD: apropos.1,v 1.38 2017/07/04 23:38:49 schwarze Exp $ 2.\" 3.\" Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv> 4.\" Copyright (c) 2011, 2012, 2014, 2017 Ingo Schwarze <schwarze@openbsd.org> 5.\" 6.\" Permission to use, copy, modify, and distribute this software for any 7.\" purpose with or without fee is hereby granted, provided that the above 8.\" copyright notice and this permission notice appear in all copies. 9.\" 10.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17.\" 18.Dd $Mdocdate: July 4 2017 $ 19.Dt APROPOS 1 20.Os 21.Sh NAME 22.Nm apropos , 23.Nm whatis 24.Nd search manual page databases 25.Sh SYNOPSIS 26.Nm 27.Op Fl afk 28.Op Fl C Ar file 29.Op Fl M Ar path 30.Op Fl m Ar path 31.Op Fl O Ar outkey 32.Op Fl S Ar arch 33.Op Fl s Ar section 34.Ar expression ... 35.Sh DESCRIPTION 36The 37.Nm apropos 38and 39.Nm whatis 40utilities query manual page databases generated by 41.Xr makewhatis 8 , 42evaluating 43.Ar expression 44for each file in each database. 45By default, they display the names, section numbers, and description lines 46of all matching manuals. 47.Pp 48By default, 49.Nm 50searches for 51.Xr makewhatis 8 52databases in the default paths stipulated by 53.Xr man 1 54and uses case-insensitive substring matching 55.Pq the Cm = No operator 56over manual names and descriptions 57.Pq the Li \&Nm No and Li \&Nd No macro keys . 58Multiple terms imply pairwise 59.Fl o . 60.Pp 61.Nm whatis 62is a synonym for 63.Nm 64.Fl f . 65.Pp 66The options are as follows: 67.Bl -tag -width Ds 68.It Fl a 69Instead of showing only the title lines, show the complete manual pages, 70just like 71.Xr man 1 72.Fl a 73would. 74If the standard output is a terminal device and 75.Fl c 76is not specified, use 77.Xr more 1 78to paginate them. 79In 80.Fl a 81mode, the options 82.Fl IKOTW 83described in the 84.Xr mandoc 1 85manual are also available. 86.It Fl C Ar file 87Specify an alternative configuration 88.Ar file 89in 90.Xr man.conf 5 91format. 92.It Fl f 93Search for all words in 94.Ar expression 95in manual page names only. 96The search is case insensitive and matches whole words only. 97In this mode, macro keys, comparison operators, and logical operators 98are not available. 99.It Fl k 100Support the full 101.Ar expression 102syntax. 103It is the default for 104.Nm . 105.It Fl M Ar path 106Use the colon-separated path instead of the default list of paths 107searched for 108.Xr makewhatis 8 109databases. 110Invalid paths, or paths without manual databases, are ignored. 111.It Fl m Ar path 112Prepend the colon-separated paths to the list of paths searched 113for 114.Xr makewhatis 8 115databases. 116Invalid paths, or paths without manual databases, are ignored. 117.It Fl O Ar outkey 118Show the values associated with the key 119.Ar outkey 120instead of the manual descriptions. 121.It Fl S Ar arch 122Restrict the search to pages for the specified 123.Xr machine 1 124architecture. 125.Ar arch 126is case insensitive. 127By default, pages for all architectures are shown. 128.It Fl s Ar section 129Restrict the search to the specified section of the manual. 130By default, pages from all sections are shown. 131See 132.Xr man 1 133for a listing of sections. 134.El 135.Pp 136The options 137.Fl chlw 138are also supported and are documented in 139.Xr man 1 . 140The options 141.Fl fkl 142are mutually exclusive and override each other. 143.Pp 144An 145.Ar expression 146consists of search terms joined by logical operators 147.Fl a 148.Pq and 149and 150.Fl o 151.Pq or . 152The 153.Fl a 154operator has precedence over 155.Fl o 156and both are evaluated left-to-right. 157.Bl -tag -width Ds 158.It \&( Ar expr No \&) 159True if the subexpression 160.Ar expr 161is true. 162.It Ar expr1 Fl a Ar expr2 163True if both 164.Ar expr1 165and 166.Ar expr2 167are true (logical 168.Sq and ) . 169.It Ar expr1 Oo Fl o Oc Ar expr2 170True if 171.Ar expr1 172and/or 173.Ar expr2 174evaluate to true (logical 175.Sq or ) . 176.It Ar term 177True if 178.Ar term 179is satisfied. 180This has syntax 181.Sm off 182.Oo 183.Op Ar key Op , Ar key ... 184.Pq Cm = | \(ti 185.Oc 186.Ar val , 187.Sm on 188where 189.Ar key 190is an 191.Xr mdoc 7 192macro to query and 193.Ar val 194is its value. 195See 196.Sx Macro Keys 197for a list of available keys. 198Operator 199.Cm = 200evaluates a substring, while 201.Cm \(ti 202evaluates a regular expression. 203.It Fl i Ar term 204If 205.Ar term 206is a regular expression, it 207is evaluated case-insensitively. 208Has no effect on substring terms. 209.El 210.Pp 211Results are sorted according to the following criteria: 212.Bl -enum 213.It 214The manpath directory tree the page is found in, according to the 215order specified with 216.Fl M , 217.Fl m , 218the 219.Ev MANPATH 220environment variable, the 221.Xr man.conf 5 222configuration file, or the default documented in 223.Xr man.conf 5 . 224.It 225The section number in ascending numerical order. 226.It 227The page name in ascending 228.Xr ascii 7 229alphabetical order, case-insensitive. 230.El 231.Pp 232Each output line is formatted as 233.Pp 234.D1 name[, name...](sec) \- description 235.Pp 236Where 237.Dq name 238is the manual's name, 239.Dq sec 240is the manual section, and 241.Dq description 242is the manual's short description. 243If an architecture is specified for the manual, it is displayed as 244.Pp 245.D1 name(sec/arch) \- description 246.Pp 247Resulting manuals may be accessed as 248.Pp 249.Dl $ man \-s sec name 250.Pp 251If an architecture is specified in the output, use 252.Pp 253.Dl $ man \-s sec \-S arch name 254.Ss Macro Keys 255Queries evaluate over a subset of 256.Xr mdoc 7 257macros indexed by 258.Xr makewhatis 8 . 259In addition to the macro keys listed below, the special key 260.Cm any 261may be used to match any available macro key. 262.Pp 263Names and description: 264.Bl -column "xLix" description -offset indent -compact 265.It Li \&Nm Ta manual name 266.It Li \&Nd Ta one-line manual description 267.It Li arch Ta machine architecture (case-insensitive) 268.It Li sec Ta manual section number 269.El 270.Pp 271Sections and cross references: 272.Bl -column "xLix" description -offset indent -compact 273.It Li \&Sh Ta section header (excluding standard sections) 274.It Li \&Ss Ta subsection header 275.It Li \&Xr Ta cross reference to another manual page 276.It Li \&Rs Ta bibliographic reference 277.El 278.Pp 279Semantic markup for command line utilities: 280.Bl -column "xLix" description -offset indent -compact 281.It Li \&Fl Ta command line options (flags) 282.It Li \&Cm Ta command modifier 283.It Li \&Ar Ta command argument 284.It Li \&Ic Ta internal or interactive command 285.It Li \&Ev Ta environmental variable 286.It Li \&Pa Ta file system path 287.El 288.Pp 289Semantic markup for function libraries: 290.Bl -column "xLix" description -offset indent -compact 291.It Li \&Lb Ta function library name 292.It Li \&In Ta include file 293.It Li \&Ft Ta function return type 294.It Li \&Fn Ta function name 295.It Li \&Fa Ta function argument type and name 296.It Li \&Vt Ta variable type 297.It Li \&Va Ta variable name 298.It Li \&Dv Ta defined variable or preprocessor constant 299.It Li \&Er Ta error constant 300.It Li \&Ev Ta environmental variable 301.El 302.Pp 303Various semantic markup: 304.Bl -column "xLix" description -offset indent -compact 305.It Li \&An Ta author name 306.It Li \&Lk Ta hyperlink 307.It Li \&Mt Ta Do mailto Dc hyperlink 308.It Li \&Cd Ta kernel configuration declaration 309.It Li \&Ms Ta mathematical symbol 310.It Li \&Tn Ta tradename 311.El 312.Pp 313Physical markup: 314.Bl -column "xLix" description -offset indent -compact 315.It Li \&Em Ta italic font or underline 316.It Li \&Sy Ta boldface font 317.It Li \&Li Ta typewriter font 318.El 319.Pp 320Text production: 321.Bl -column "xLix" description -offset indent -compact 322.It Li \&St Ta reference to a standards document 323.It Li \&At Ta At No version reference 324.It Li \&Bx Ta Bx No version reference 325.It Li \&Bsx Ta Bsx No version reference 326.It Li \&Nx Ta Nx No version reference 327.It Li \&Fx Ta Fx No version reference 328.It Li \&Ox Ta Ox No version reference 329.It Li \&Dx Ta Dx No version reference 330.El 331.Sh ENVIRONMENT 332.Bl -tag -width MANPAGER 333.It Ev MANPAGER 334Any non-empty value of the environment variable 335.Ev MANPAGER 336is used instead of the standard pagination program, 337.Xr more 1 ; 338see 339.Xr man 1 340for details. 341Only used if 342.Fl a 343or 344.Fl l 345is specified. 346.It Ev MANPATH 347A colon-separated list of directories to search for manual pages; see 348.Xr man 1 349for details. 350Overridden by 351.Fl M , 352ignored if 353.Fl l 354is specified. 355.It Ev PAGER 356Specifies the pagination program to use when 357.Ev MANPAGER 358is not defined. 359If neither PAGER nor MANPAGER is defined, 360.Xr more 1 361.Fl s 362is used. 363Only used if 364.Fl a 365or 366.Fl l 367is specified. 368.El 369.Sh FILES 370.Bl -tag -width "/etc/man.conf" -compact 371.It Pa mandoc.db 372name of the 373.Xr makewhatis 8 374keyword database 375.It Pa /etc/man.conf 376default 377.Xr man 1 378configuration file 379.El 380.Sh EXIT STATUS 381.Ex -std 382.Sh EXAMPLES 383Search for 384.Qq .cf 385as a substring of manual names and descriptions: 386.Pp 387.Dl $ apropos .cf 388.Pp 389Include matches for 390.Qq .cnf 391and 392.Qq .conf 393as well: 394.Pp 395.Dl $ apropos .cf .cnf .conf 396.Pp 397Search in names and descriptions using a regular expression: 398.Pp 399.Dl $ apropos \(aq\(tiset.?[ug]id\(aq 400.Pp 401Search for manuals in the library section mentioning both the 402.Qq optind 403and the 404.Qq optarg 405variables: 406.Pp 407.Dl $ apropos \-s 3 Va=optind \-a Va=optarg 408.Pp 409Do exactly the same as calling 410.Nm whatis 411with the argument 412.Qq ssh : 413.Pp 414.Dl $ apropos \-\- \-i \(aqNm\(ti[[:<:]]ssh[[:>:]]\(aq 415.Pp 416The following two invocations are equivalent: 417.Pp 418.D1 Li $ apropos -S Ar arch Li -s Ar section expression 419.Bd -ragged -offset indent 420.Li $ apropos \e( Ar expression Li \e) 421.Li -a arch\(ti^( Ns Ar arch Ns Li |any)$ 422.Li -a sec\(ti^ Ns Ar section Ns Li $ 423.Ed 424.Sh SEE ALSO 425.Xr man 1 , 426.Xr re_format 7 , 427.Xr makewhatis 8 428.Sh HISTORY 429Part of the functionality of 430.Nm whatis 431was already provided by the former 432.Nm manwhere 433utility in 434.Bx 1 . 435The 436.Nm 437and 438.Nm whatis 439utilities first appeared in 440.Bx 2 . 441They were rewritten from scratch for 442.Ox 5.6 . 443.Pp 444The 445.Fl M 446option and the 447.Ev MANPATH 448variable first appeared in 449.Bx 4.3 ; 450.Fl m 451in 452.Bx 4.3 Reno ; 453.Fl C 454in 455.Bx 4.4 Lite1 ; 456and 457.Fl S 458and 459.Fl s 460in 461.Ox 4.5 462for 463.Nm 464and in 465.Ox 5.6 466for 467.Nm whatis . 468The options 469.Fl acfhIKklOTWw 470appeared in 471.Ox 5.7 . 472.Sh AUTHORS 473.An -nosplit 474.An Bill Joy 475wrote 476.Nm manwhere 477in 1977 and the original 478.Bx 479.Nm 480and 481.Nm whatis 482in February 1979. 483The current version was written by 484.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv 485and 486.An Ingo Schwarze Aq Mt schwarze@openbsd.org . 487