Go to main content

手册页部分 1:用户命令

退出打印视图

更新时间: 2022年7月27日 星期三
 
 

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 将输出一条错误消息。

Source Format

参考手册页带有 nroff 标记。man 命令会识别标记的类型并相应地处理文件。根据标记的类型,各种源文件均保存在不同的目录中。有关更多信息,请参见 groff(1) 手册页。

手册页的位置

联机参考手册页目录通常位于 /usr/share/man 中。nroff 源位于 /usr/share/man/man* 目录中。每个目录对应于手册页的一节。Since these directories are optionally installed, they might not be present on your host.You might have to use pkg change-facet doc.man=True to install the man pages on the system.

如果在对应的 cat* 或 fmt* 目录中存在已预先格式化的最新版本,则 man 只显示或输出这些版本。如果所需的预先格式化的版本已过期或缺失,则 man 会在显示之前先对其重新格式化,并在 cat* 或 fmt* 可写入的情况下存储预先格式化的版本。不更新索引文件。有关更多信息,请参见 catman(8) 手册页。如果未提供预先格式化的版本的目录,则 man 命令会在需要时重新格式化页面。在显示期间,man 命令使用一个临时文件来存储格式化的文本。

如果标准输出不是终端,或提供了 ‘’ 标志,则 man 命令将通过 cat(1) 传输其输出。否则,man 将通过 less(1) 传输其输出,以便在屏幕中处理分页和下划线。

Query Strings

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

术语是来自有效字符集的字符序列,该字符集包含所有字母字符、数字和下划线,即 {a-z、A-Z、_}。它是全文处理的有用语义单元。但是,在所有有效术语中,将不对停用词或术语创建索引和进行搜索。

停用词是一些最常用的短函数术语,例如 "the"、"is"、"at"、"which" 等。在一些情况下,停用术语会导致出现问题,特别是搜索的查询包含这些术语时。例如 "the ZFS system" 和 "take that"。因此,在创建索引或搜索查询时,应删除停用词以提高 man 命令的性能。

短语包含多个术语,这些术语由未创建索引的字符(通常是空格字符)连接在一起。在终端中,用户搜索短语时,通常用双引号将短语括起来。

查询扩展在全文域中是非常有用的技术。它用于重构原始用户输入的查询字符串并对添加的查询术语重新加权,避免出现空搜索结果的情况,以提高 man 全文搜索性能。

术语查询扩展的目的在于帮助用户自动补足不完整的输入术语并提供更正的形式。

首字母缩略词查询扩展用于在用户查询包含某些首字母缩略词时帮助用户完成首字母缩略词扩展。它会自动将相应的全名字符串附加到用户查询。

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

节匹配允许用户在查询字符串中指定节名称以在每个手册页中限制搜索范围。节名称是指每个手册页中的节标题,以帮助定义手册页布局或结构,例如,“名称”、“用法概要”、“描述”等等。

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

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

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

选项

支持以下选项:

–a

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

–d

调试信息。显示节说明符计算结果、搜索方法以及 man 搜索到的路径。

–f file ...

man 命令会尝试查找与任何给定的文件相关的手册页。它输出包含生成的基名或名称的摘要。whatis 命令执行相同操作。

此选项使用索引文件。有关如何生成索引文件的详细信息,请参见 catman(8) 手册页。

–F

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

–k query ...

从索引文件中搜索指定的查询并输出摘要。仅搜索“名称”节。apropos 命令执行相同操作。

有关如何生成索引文件的信息,请参见 –K 选项。

–K query ...

从索引文件中搜索指定的查询并输出摘要。缺省情况下会搜索所有节。

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

/usr/share/man/usr/gnu/share/man 目录中安装或更新手册页并且提供这些手册页的软件包已使用 restart_fmri=svc:/application/man-index:default 标记文件后,将自动在这些目录中生成 –f–k–K 所使用的索引文件。也可手动运行 svcadm restart application/man-index 或运行 catman 命令(带 –w 选项)生成这些索引文件。

–l

列出在搜索路径中找到的匹配指定 name 的所有手册页。

–M path

指定手册页的备用搜索路径。path 是以冒号分隔的目录列表,包含手册页目录子树。例如,如果 path/usr/share/man:/usr/local/man,则 man 会先在标准位置中搜索 name,然后在 /usr/local/man 中进行搜索。当与 –f–k–K 选项结合使用时,–M 选项必须首先出现。Each directory in the path is assumed to contain subdirectories of the form man*, one for each section.此选项会覆盖 MANPATH 环境变量。

–r

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

–s section ...

指定手册页的节,以供 man 命令搜索。搜索 name 的目录限于 section 指定的目录。section 可以是数字,可能后跟一个或多个字母,以匹配手册页的所需节,例如 "3lib"。section 也可以是词,例如 localnewoldpublic 等等,也可以是字母。要指定多个节,请用逗号分隔每个节。此选项会覆盖 MANPATH 环境变量和 man.cf 文件。有关 man 命令如何执行搜索的说明,请参见下面的 Search Path

主节名称(例如 "9")可以作为该名称的小节(例如 "9e"、"9f" 或 "9s")的缩写。有关更多详细信息,请参见下面的“手册页的各节”。

有些节名称在 Oracle Solaris 11.4 中发生了更改,而且这些节的小节也发生了更改。

Solaris 2 through 11.3	  	Solaris 11.4
----------------------		  ------------
1m                      ->        8
4                       ->        5
5                       ->        7
7                       ->        4

如果在指定的节名称中没有找到任何手册页,而且指定了 Solaris 2 到 11 使用的节名称,man 命令会在 Oracle Solaris 11.4 使用的节名称中进一步搜索。例如,可以通过以下任一方式找到手册页 ip(4P)

man -s 4p ip
man -s 4 ip
man -s 7p ip
man -s 7 ip
–t

man 命令将 postscript 输出到 stdout。如果同时给定 –t 标志,则 man 会更新每个名为 nametroff 格式版本(如果需要),但不会显示这些版本。

–T macro-package

使用 macro-package 而非标准 –mandoc 宏来格式化手册页。如果它以 '–m' 选项开头,则在 groff 中以一个选项指定宏软件包。有关这些选项的更多信息,请参见 groff(1) 手册页。You can add the '–r' option to specify options for the macros.A macro package can be directly specified by providing a fully qualified path starting with the '/ character.可按这种方式指定 /usr/share/lib/tmac 下的宏。See Example 5.

操作数

支持下列操作数:

name

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

用法

man 的用法如下所述:

手册页的各节

参考手册中的条目分为若干个 section。节名称包括一个主节名称,通常为一个数字,后面还可能带有一个小节名称,通常为一个或多个字母。未经修饰的主节名称(例如 "9")作为该名称的小节(例如 "9e"、"9f" 或 "9s")的缩写。也就是说,如果指定了 'man -s 9 name',而且在子节 "9" 中找不到名称,则会搜索 "9e"、"9f" 和 "9s" 子节。每一节均包含有关某个特定引用类别的描述,通过各小节可以细化这些区分。有关此发行版中使用的分类的说明,请参见 intro 手册页。

以下列表包含对手册页各节及其所引用信息的简要描述:

  • 第 1 部分介绍了适用于操作系统的各种命令。

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

  • 第 2D 部分介绍了 DTrace 提供者。

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

  • 第 3* 部分介绍了相关库的集合。

  • 第 4 部分介绍了系统上可用的各种设备和网络接口。

  • 第 4D 部分介绍了涉及特定硬件外围设备和设备驱动程序的特殊文件。此外,还介绍了 STREAMS 设备驱动程序。

  • 第 4FS 部分介绍了适用于 Oracle Solaris 支持的多个文件系统的编程接口。

  • 第 4I 部分介绍了应用于一类驱动程序或子系统的 ioctl 请求。

  • 第 4M 部分介绍了 STREAMS 模块。

  • 第 4P 部分介绍了 Oracle Solaris 中可用的各种网络协议。

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

  • 第 6 部分介绍了游戏和屏幕保护程序。

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

  • 第 8 部分介绍了主要用于系统维护和管理目的的命令。

  • 第 8S 部分介绍了 SMF 服务。

  • 第 9 部分介绍了为 Oracle Solaris 操作环境编写设备驱动程序所需的参考信息。

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

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

  • 第 9P 部分介绍了驱动程序属性。

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

搜索路径

在搜索给定 name 之前,man 命令会构建备选目录和节列表。manMANPATH 环境变量指定的目录中搜索 name

如果缺少 MANPATHman 命令将基于 PATH 环境变量构建其搜索路径,主要方法是用 man 命令替换 PATH 元素的最后一个组成部分。为了说明诸如 /sbin/usr/xpg4/bin 目录及其他目录的独有特征,还会添加特殊规定。如果 file 参数是绝对路径,则使用该参数的 dirname 部分替代 PATH 元素来构建搜索路径。

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

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

  • MANPATH 环境变量中嵌入的 section

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

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

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

MANSECTS=section[,section]...

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

分层手册页名称

man 命令支持包含一个和多个正斜杠的分层手册页名称。<name> 可以通过指定手册页名称的结尾部分来进行缩写,例如,对于 smf(7) 向命令指定 FMRI 时。

例如,system/name-service/switch.8s 将显示 /usr/share/man/man8s/system/name-service/switch.8s 中的手册页。以下示例显示了相同的结果。

man system/name-service/switch
man name-service/switch
man -s 8s switch
man -s 8 switch
man switch.8s

格式化手册页

手册页可在 groff 命令中进行标记。nroff 手册页可通过带 –mandoc 宏软件包的 groff 进行处理。有关宏用法的信息,请参见 groff(1) 手册页。

预处理 nroff 手册页

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

'\" X

其中,X 通过一个空格与 ‘"’ 分隔开,并包含以下列表中字符的任一组合。man 命令随后通过预处理程序将其输入传输到 groff(1)

e

geqn (1)

r

grefer (1)

t

gtbl(1)

v

vgrind(1)

请参见其他 nroff 手册页

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

.so man*/sourcefile
.so sourcefile

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

如果第二行或任何后续行以 .so 开头,则 man 命令将忽略该行。然后,相关的 roff 以常规方式处理请求。

环境变量

有关影响 man 命令执行的 LANG_LC_ALL_CTYPELC_MESSAGESNLSPATH 环境变量的信息,请参见 environ(7) 手册页。

MANPATH

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

PAGER

此程序以交互方式将 man 命令的输出传送到屏幕。如果未设置,将使用 ‘less -ins’。

TCAT

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

TROFF

指定了 –t 标志时使用的格式化程序的名称。

示例

示例 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"
示例 5 更改缺省宏软件包

以下示例将行宽设置为 67 列,并在多个页面而不是单个长页面中提供输出。此操作提供的外观类似于使用 man(7) 宏生成的输出。

% man -T '-mandoc -rLL=67n -rcR=0' zfs

以下示例使用实际的 man(7) 宏而非缺省的 mandoc 宏。

% man -T /usr/share/lib/tmac/an zfs

退出状态

将返回以下退出值:

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/cat?/*

nroff 格式的手册条目

/usr/share/man/fmt?/*

troff 格式的手册条目

/usr/share/groff/<version>/tmac/mandoc.tmac

缺省情况下使用的标准 –mandoc 宏软件包

man.cf

节的缺省搜索顺序

属性

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

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

The mapping behavior in the –s option, from previous Oracle Solaris section numbers, is Uncommitted.

另请参见

apropos(1)cat(1)col(1)groff(1)gtbl(1)less(1)vgrind(1)whatis(1)attributes(7)environ(7)standards(7)catman(8)

附注

–f–k–K 选项使用由 SMF 服务创建或手动使用带 –w 选项的 catman 命令创建的索引文件。

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

man 命令支持 CSI。不过,经验证,man 命令调用的某些实用程序不支持 CSI。因此,带 –t 选项的 man 命令无法处理非 ASCII 数据。另外,使用 man 命令显示需要通过 geqngrefergtblvgrind 进行特殊处理的手册页时,无法支持 CSI。The default PAGER program, less, cannot handle non-UTF-8 multibyte characters.You should set the PAGER environment variable to '/usr/xpg4/bin/more' if your environment is a non-UTF-8 locale.

已知问题

The manual is supposed to be reproducible either in printed output or viewed on a monitor.However, when displayed in a terminal, some information (indicated by font changes, for instance) is lost.See the man pages on https://docs.oracle.com/cd/E88353_01/ for a more complete view.