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