「apropos(1)」-

在手册页面名称(NAME)和描述(DESCRIPTION)部分中搜索内容

命令语法格式

apropos [-dalv?V] [-e|-w|-r] [-s list] [-m system[,…]] [-M path] [-L locale] [-C file] keyword …

命令描述

手册页面「名称」指的是手册页面里的NAME部分;「描述」指定是DESCRIPTION部分,每个手册页都有这么一个简短的描述。apropos会搜索出包括指定关键字的名称和描述。

关键字通常是正则表达式,就像使用-r选项,或者可能包含通配符(-w),或者匹配确切的关键字(-e)。使用这些选项,关键字需要转义,或对其使用单引号以防止SHELL解释它们。

标准匹配规则允许匹配手册页名称和描述里的单词边界。

由apropos搜索的数据库是通过mandb命令更新。所以需要使用cron进行周期性更新,或者在安装新的手册页之后手动执行 mandb进行更新。

命令支持的选项及含义

-r, –regex
将每个keyword解释为正则表达式。这是默认行为。每个关键词将与手册页名称和描述分别匹配。它可以匹配任何部分。匹配不限于单词边界。

-w, –wildcard
将每个keyword解释为shell风格的通配符。每个关键词将与手册页名称和描述分别匹配。如果同时使用了–exact选项,只有展开的关键词与整个描述或手册页名称完全匹配时才视为找到。否则关键词也允许匹配描述中的单词边界。

-e, –exact
每个keyword将严格与手册页名称和描述匹配。

-a, –and
默认情况下,只要匹配任意一个keyword,项目就可以显示出来。使用该选项后,只有匹配所有keyword的项目才算匹配。

-l, –long
通常,会将输出截短为终端宽度,使得每一行只显示一个匹配的项。使用该选项后,不按终端宽度截断输出,超出一行的内容会显示在下一行(自动换行)。

-s list, –sections list, –section list
只搜索指定的手册章节。list是由冒号或逗号分隔的章节列表。如果list中的指定的是简单的章节号,如“3”,则显示的描述列表将只包含章节“3”中的页面,“3perl”、“3x”等;如果list中的章节号带扩展,如“3perl”,则显示的描述列表将只包含手册章节中对应部分的页面。

题外话:在实际的man手册中,除了1-9章节外,还有其他的“子章节”,你可以尝试执行apropos -e fork命令,输出你会看到有些fork手册的章节为3am、3pm,它们属于第3章节,但是是第3章节的“子章节”。这些“子章节”存在的主要原因是为了解决手册页重名的问题。参见man(1)中的-e选项。

-m system[,…], –systems=system[,…]
如果此系统可以访问其他操作系统的手册页描述,则可以通过使用这一选项来搜索它们。如要搜索NewOS的手册页描述,使用-m NewOS选项。

指定的system选项可以是逗号分隔的操作系统名称组合。要在搜索中包括本地操作系统的whatis描述,可以在参数字符串中包含系统名man。此选项会覆盖$SYSTEM环境变量。

-M path, –manpath=path
另外指定一组以冒号分隔的手册页层次结构作为搜索路径。默认情况下,apropos会使用$MANPATH环境变量作为搜索路径;如果该环境变量为空或未设置,程序会根据你的$PATH环境变量确定相应的手册路径。此选项会覆盖 $MANPATH环境变量的内容。

-L locale, –locale=locale
通常,apropos会通过调用C语言函数setlocale(3)来确定你的当前区域设置,该函数会查询多个环境变量,可能包括$LC_MESSAGES和$LANG。如果你要临时覆盖检测到的值,可以使用该选项直接向apropos提供一个locale字符串来临时指定区域设置。

注意,在搜索页面实际开始前它不会生效。帮助消息等输出将始终以检测到的区域语言显示。

-C file, –config-file=file
使用用户配置文件file代替默认的~/.manpath

-d, –debug
打印调试信息信息。

-v, –verbose
打印详细警告消息。

-?, –help
打印帮助信息并退出。

-V, –version
显示版本信息并退出。

–usage
显示简短的使用用法信息并退出。

退出状态

0 程序成功执行。
1 用法、语法或配置文件出错。
2 操作出错。
16 未找到符合指定条件的结果

环境变量

SYSTEM
环境变量$SYSTEM与-m选项具有相同的效果。

MANPATH
如果设置了$MANPATH环境变量,它的值将被解释为手册页的搜索路径。多个路径使用冒号分隔。

MANWIDTH
如果设置了$MANWIDTH,它的值将用作终端宽度(参阅–long选项)。如果未设置它,终端宽度将通过$COLUMNS环境变量或调用ioctl(2)(如果有的话)计算显示的宽度。若都失败,将退回到80个字符。

POSIXLY_CORRECT
如果设置了$POSIXLY_CORRECT环境变量(即使是空值),默认的apropos搜索将使用扩展的正则表达式(-r)。不过,现在这已经是默认行为了。

相关文件

/usr/share/man/index.(bt|db|dir|pag)
传统的全局索引数据库缓存。

/var/cache/man/index.(bt|db|dir|pag)
符合FHS的全局索引数据库缓存。

/usr/share/man/…/whatis
一个传统的whatis文本数据库。

相关手册

man(1), whatis(1), mandb(8)

参考文献

更新日志

  • 06/17/2017 首次创建