手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

man(1)

名称

man - 查找并显示参考手册页

用法概要

man [-] [-adFlrt] [
-M path] [-T 
macro-package] [-s section] 
name...
man [-M path] [
-s section] -k 
query...
man [-M path] 
-f file...
man [-M path] [
-s section] -K 
query...

描述

man 命令用于显示参考手册中的信息。它会显示根据 name 选择的完整手册页,或者显示根据 query–k–K)或关联文件 (–f) 的名称所选择的一行摘要。如果未找到任何手册页,man 将输出一条错误消息。

源格式

参考手册页使用 nroff(请参见 nroff(1))或 SGML(Standard Generalized Markup Language,标准通用标记语言)标记(请参见 sgml(5))进行标记。man 命令会识别标记的类型并相应地处理文件。根据标记的类型,各种源文件均保存在不同的目录中。

手册页的位置

联机参考手册页目录通常位于 /usr/share/man 中。nroff 源位于 /usr/share/man/man* 目录中。SGML 源位于 /usr/share/man/sman* 目录中。每个目录对应于手册页的一节。由于可以选择性地安装这些目录,因此目录可能并不驻留于主机中。您可能需要从这些目录所驻留的主机中挂载 /usr/share/man

如果在对应的 cat* 或 fmt* 目录中存在已预先格式化的最新版本,则 man 只显示或输出这些版本。如果所需的预先格式化的版本已过期或缺失,则 man 会在显示之前先对其重新格式化,并在 cat* 或 fmt* 可写入的情况下存储预先格式化的版本。不更新索引文件。请参见 catman(1M)。如果未提供预先格式化的版本的目录,则每当请求某页时,man 均会重新格式化该页。在显示过程中,man 会使用临时文件存储预先格式化的文本。

如果标准输出不是终端,或者如果给定 `' 标志,则 man 将通过 cat(1) 传输其输出。否则,man 将通过 more(1) 传输其输出,以便在屏幕中处理分页和下划线。

查询字符串

使用 –k–K 选项时,可以使用 query(通过一个或多个词条或短语)搜索手册页。它支持基于文件的索引、全文搜索、词干分析以及节匹配。有关如何生成索引文件的信息,请参见 catman(1M)man(5)

英文的词干分析,例如,基于词根 cat 识别字符串 catscatlikecatty 等等。它可以基于 stem 来识别 stemmerstemmingstemmed。词干分析算法会将词 fishingfishedfishfisher 简化为词根 fish

匹配以不区分大小写的方式执行。词干分析仅针对英文手册页执行。

基于查询匹配项的评分按升序排列并显示匹配的手册页。

Oracle Solaris 手册页分为多个节,如“名称”、“用法概要”、“描述”等等。根据 –K 选项中所述的详细信息,用户可以指定搜索范围仅限于某一节。

选项

支持以下选项:

–a

显示与 MANPATH 搜索路径内的 name 匹配的所有手册页。按照查找的顺序显示手册页。

–d

调试信息。显示要计算的节说明符、使用的搜索方法以及 man 所搜索的路径。

–f file ...

man 会尝试查找与任何给定的 file 相关的手册页。该选项会从各个 file 中分离前导路径名称部分,然后输出一行包含生成的基名或名称的摘要。

此选项使用索引文件。有关如何生成索引文件的详细信息,请参见 catman(1M)man(5)

–F

强制 man 搜索由 MANPATH 或 man.cf 文件指定的所有目录,而不是使用索引查找文件。如果索引文件不是最新的,且其已设置了 man 命令的缺省行为,则此选项非常有用。因此,并不一定需要调用该选项,在此处介绍仅供参考。

–k query ...

从索引文件中输出一行摘要。

有关如何生成索引文件的信息,请参见 –K 选项。如果没有索引文件,会直接查找手册页文件,因此产生的响应时间要比存在索引文件的情况下更长。

–K query ...

从索引文件中搜索指定的查询。如果没有索引文件,则在手册页中直接执行搜索,这将导致搜索的速度较慢。

如果在查询选项参数中提供一个以冒号 (:) 结束的节名称作为从左起的第一个文本(正如 section name: query 一样),则仅在指定的节中搜索查询字符串。如果指定的节名称不存在,将为用户列出所有支持的节名称。

/usr/share/man/usr/gnu/share/man 目录中供 –f–k–K 使用的索引文件可以自动生成,其前提是,已在这些目录中安装或更新手册页,且提供手册页的软件包已按照在 Oracle Solaris 11.2 中使用映像包管理系统打包和交付软件 中的第 2  章 使用 IPS 打包软件 中所述,使用 restart_fmri=svc:/application/man-index:default 对这些文件进行了标记。还可以通过手动运行 svcadm restart application/man-index 或使用 –w 运行catman(1M)来生成索引文件。

–l

列出已找到的与搜索路径中 name 匹配的所有手册页。

–M path

指定手册页的备用搜索路径。path 是以冒号分隔的目录列表,包含手册页目录子树。例如,如果 path/usr/share/man:/usr/local/man,则 man 会先在标准位置中搜索 name,然后在 /usr/local/man 中进行搜索。当与 –f–k–K 选项结合使用时,–M 选项必须首先出现。假定 path 中的每个目录均包含格式为 man* 或 sman* 的子目录,一个子目录对应一节。此选项会覆盖 MANPATH 环境变量。

–r

重新格式化手册页,但不显示该页。此选项会替换 man –t name 组合。

–s section ...

指定 man 要搜索的手册的各个节。搜索 name 的目录仅限于由 section 指定的目录。section 可以是数字,可能后面会跟有一个或多个字母以匹配手册中所需要的某一节,例如,“3lib”。此外,section 可以是一个单词,例如 localnewoldpublicsection 还可以是一个字母。要指定多个节,请用逗号分隔每个节。此选项会覆盖 MANPATH 环境变量和 man.cf 文件。有关 man 执行搜索的说明,请参见下面的“搜索路径”

–t

man 可对指定手册页进行调整,以便执行 troff 命令,用于适当的光栅输出设备(请参见 troff(1))。如果同时给定 –-–-t 标志,则 man 会更新每个名为 nametroff 版本(如果需要),但不会显示这些版本。

–T macro-package

使用 macro-package 而不是 /usr/share/lib/tmac/an 中定义的标准 –man 宏来格式化手册页。有关缺省搜索路径顺序的完整说明,请参见位于“用法”下方的“搜索路径”

操作数

支持下列操作数:

name

标准实用程序或关键字的名称。

用法

man 的用法如下所述:

手册页的各节

参考手册中的条目分为若干个 section。节名称包括一个主节名称,通常为一个数字,后面还可能带有一个小节名称,通常为一个或多个字母。一个未加修饰的主节名称(例如,“9”)不会充当该名称的各小节的缩写,如 “9e”、“9f” 或 “9s”。也就是说,必须通过 man –s 分别搜索各个小节。每一节均包含针对某个参考类别的相应说明,通过各小节可以细化这些区分。有关在此发行版中使用的分类的说明,请参见 intro 手册页。

以下内容包含对手册页各节及其所引用信息的简要说明:

  • 第 1 部分按照字母顺序介绍了操作系统中提供的各种命令。

  • 第 1M 部分按照字母顺序介绍了主要用于系统维护和管理的各种命令。

  • 第 2 部分介绍了所有的系统调用。其中的大多数调用可能返回一个或多个错误。如果返回一个异常值,则表明有错误情况。

  • 第 3 部分介绍了各种库中包含的函数,这些函数不属于第 2 部分介绍的那些直接调用 UNIX 系统原语 (primitive) 的函数。

  • 第 4 部分简要介绍了各种文件的格式,并在适当之处给出了文件格式的 C 结构声明。

  • 第 5 部分包含其他文档,如字符集表。

  • 第 7 部分介绍了涉及特定硬件外围设备和设备驱动程序的各种特殊文件。还介绍了 STREAMS 软件驱动程序、模块和 STREAMS 通用的一组系统调用。

  • 第 9E 部分介绍了 DDI(Device Driver Interface,设备驱动程序接口)/DKI(Driver/Kernel Interface,驱动程序/内核接口)、仅 DDI 和仅 DKI 入口点例程,开发者可以将这些例程包含在设备驱动程序中。

  • 第 9F 部分介绍了可供设备驱动程序使用的内核函数。

  • 第 9S 部分介绍了驱动程序用来在驱动程序和内核之间共享信息的数据结构。

搜索路径

在搜索给定的 name 之前,man 会构建一个候选目录和各节的列表。man 将搜索由 MANPATH 环境变量指定的目录中的 name

如果缺少 MANPATHman 将基于 PATH 环境变量构建其搜索路径,主要方法是用 man 替换 PATH 元素的最后一部分。为了说明诸如 /sbin/usr/ucb/usr/xpg4/bin 目录及其他目录的独有特征,还会添加特殊规定。如果文件参数包含 / 字符,则使用参数的 dirname 部分替代 PATH 元素以构建搜索路径。

在手册页目录中,man 可按以下顺序将搜索范围缩小到指定的节:

  • 通过 –s 选项在命令行上指定的 section

  • 在 MANPATH 环境变量中嵌入的 section

  • 在 MANPATH 环境变量中为各个目录指定的 man.cf 文件中指定的 section

如果以上内容均不存在,则 man 将在手册页路径中搜索每一个目录,并显示所找到的第一个匹配手册页。

man.cf 文件具有以下格式:

MANSECTS=section[,section]... 

以 `#' 开头的行和空行均视为注释并忽略。在 MANPATH 中指定的各个目录可以包含手册页配置文件,其中指定该目录的缺省搜索顺序。

格式化手册页

格式化手册页

手册页在 nroff(1)sgml(5) 中进行标记。nroff 手册页通过具有 –man 宏软件包的 nroff(1)troff(1) 来处理。有关宏使用方法的信息,请参见 man(5)。带有 SGML— 标记的手册页通过 SGML 解析器处理,然后传递给格式化程序。

预处理 nroff 手册页

格式化 nroff 手册页时,man 会检查第一行以确定其是否需要特殊处理。如果第一行是以下格式的字符串:

'\" X

其中,X 通过一个 SPACE 与 `"' 隔开,并由以下列表中字符的任意组合构成,则 man 会通过对应的预处理程序将其输入传输到 troff(1)nroff(1)

e

eqn(1),或用于 nroffneqn

r

refer(1)

t

tbl(1)

v

vgrind(1)

如果调用 eqnneqn,将自动读取文件 /usr/pub/eqnchar(请参见 eqnchar(5))。如果调用 nroff(1),将自动使用 col(1)

请参见其他 nroff 手册页

如果 nroff 手册页的第一行是对其他手册页条目的引用并符合以下模式:

.so man*/sourcefile
.so sourcefile

man 将处理指定的文件,而不是当前的文件。当影子文件位于与其引用不同的子目录中时(如第一种模式),引用必须表示为相对于手册页目录子树根的路径名称。如果它们位于相同的节子目录 (man*) 中,可以将引用简短地表示为文件名(如第二种模式)。

当第二行或任意后续行以 .so 开头时,man 将忽略该行;troff(1)nroff(1) 会以常规方式处理请求。

处理 SGML 手册页

如果存在字符串 <!DOCTYPE,则将手册页标识为使用 SGML 进行标记。如果文件还包含字符串 SHADOW_PAGE,则表明该文件引用了其他手册页的相应内容。这是一种文件实体引用,引用的是包含相应文本的手册页。这与在 nroff 格式的手册页中使用的 .so 机制类似。

环境变量

有关影响 man 执行的以下环境变量的描述,请参见 environ(5):LANG、LC_ALL、LC_CTYPE、LC_MESSAGES 和 NLSPATH。

MANPATH

以冒号分隔的目录列表;每个目录后面都可以带有以逗号分隔的节列表。如果设置,则其值将作为缺省目录搜索路径来覆盖 /usr/share/man,并作为缺省节搜索路径来覆盖 man.cf 文件。而 –M–s 标志又会覆盖这些值。

PAGER

此程序以交互方式将 man 的输出传送到屏幕。如果未设置,则使用 `more –s'。请参见more(1)

TCAT

用于显示 troff 格式手册页的程序名称。

TROFF

指定 –t 标志时要使用的格式化程序的名称。如果未设置,将使用 troff(1)

示例

示例 1 创建手册页的文本版本

以下示例采用 ascii 文本创建 pipe(2) 手册页:

% man pipe.2 | col -x -b > pipe.text

这种方法可以代替使用 man –t,它可向缺省打印机发送手册页(假如用户需要手册页的文本文件版本的话)。

示例 2 获取与一个或多个词条匹配的手册页列表

通过以下示例可获取与词条 zfscreate 相匹配的手册页列表:

% man -K zfs create
示例 3 获取匹配一个或多个短语的手册页列表

通过以下示例可获取与带双引号的短语 “zfs create” 或 “storage pool” 相匹配的手册页列表。

% man -K 'zfs create' "storage pool"
示例 4 获取与某节中的词条或短语匹配的手册页列表

通过以下示例可获取在“另请参见”节中具有词条 zfs 的手册页列表:

% man -K see also: zfs

通过以下示例可获取“示例”节中具有短语 “zfs create” 的手册页列表:

% man -K examples: "zfs create"

退出状态

将返回以下退出值:

0

成功完成。

>0

出现错误。

文件

/usr/share/man

标准手册页目录子树的根

/usr/share/man/man?/*

未格式化的 nroff 手册条目

/usr/share/man/man_index/*

目录和关键字数据库。

生成的文件包括:

  • /usr/share/man/man-index/term.idx

  • /usr/share/man/man-index/term.dic

  • /usr/share/man/man-index/term.req

  • /usr/share/man/man-index/term.pos

  • /usr/share/man/man-index/term.doc

  • /usr/share/man/man-index/term.exp

/usr/share/man/sman?/*

未格式化的 SGML 手册条目

/usr/share/man/cat?/*

nroff 格式的手册条目

/usr/share/man/fmt?/*

troff 格式的手册条目

/usr/share/lib/tmac/an

标准 –man 宏软件包

/usr/share/lib/sgml/locale/C/dtd/*

SGML 文档类型定义文件

/usr/share/lib/sgml/locale/C/solbook/*

SGML 样式表和实体定义目录

/usr/share/lib/pub/eqnchar

eqnneqn 的标准定义

man.cf

节的缺省搜索顺序

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
text/doctools
CSI
Enabled(已启用),请参见“附注”部分。
接口稳定性
Committed(已确定)
标准
请参见 standards(5)

另请参见

apropos(1)cat(1)col(1)eqn(1)more(1)nroff(1)refer(1)tbl(1)troff(1)vgrind(1)whatis(1)catman(1M)attributes(5)environ(5)eqnchar(5)man(5)sgml(5)standards(5)

附注

–f–k–K 选项会使用索引文件,索引文件可通过 man(5) 中指定的 SMF 服务进行创建,或手动结合使用 catman(1M)–w 选项进行创建。

不再使用 windex 数据库文件。新的索引文件已替换 windex 数据库文件。

man 命令支持 CSI。但是,并未验证由 man 命令调用的某些实用程序(即,troffeqnneqnrefertblvgrind)是否支持 CSI。正因为如此,使用 –t 选项的 man 命令无法处理非 EUC 数据。此外,使用 man 命令显示需要通过 eqnneqnrefertblvgrind 进行特殊处理的手册页时,无法支持 CSI。

已知问题

手册内容应该能够在排照机或 ASCII 终端上完全重现出来。但是,在终端上某些信息(例如,体现为字体变化)会丢失。

某些哑终端无法处理由 e(请参见eqn(1))预处理标志生成的垂直移动。要在这些终端上防止乱码输出,当使用 e 时,请同时使用 t 以隐式调用 col(1)。此解决办法的不足之处在于会消除上标和下标,甚至在那些可以显示上标和下标的终端上也是如此。Control-q 会清除由eqn(1) 输出造成混乱的终端输出。