1.3 使用手册页
为了充分利用手册页,您需要学习如何使用显示页面的分页器,并阅读 man 命令本身的手册页,这样您才能理解手册页的结构以及 man 命令的选项。
1.3.1 分页器
分页器是一个一次显示一屏输入的程序。手册页以压缩格式存储在目录层次结构中。man 命令会解压缩并格式化它们,然后使用其分页器显示它们。默认分页器实际上名为 pager,但它通常是指向 less 命令的符号链接。因此,当您查看页面时,您很可能使用的是 less 命令。屏幕底部的 : 后面跟着您的光标,因为 : 是 less 命令提示您在键盘上输入内容的提示。您可以通过更改 PAGER 环境变量的值来更改 man 使用的分页器。以下列表介绍了使用默认分页器时的一些基本导航控件:
- 要查看下一屏,请按空格键或输入 f(前进)。
- 要后退一屏,请输入 b(后退)。
- 要停止阅读,请输入 q(退出)。
- 要跳至第 N 行,请输入 NG。如果直接输入 G,则会跳至页面底部。
- 要正向搜索关键字,请输入 /keyword。输入 n 向下查找下一个匹配项,或输入 N 向上搜索。
- 要反向搜索关键字,请输入 ?。输入 n 向上查找下一个匹配项,或输入 N 向下搜索。
要查看所有可能的导航运算符列表,请阅读分页器的手册页。这两个搜索运算符都接受带有通配符的模式,您可以在 pager 命令的手册页中了解相关信息。
1.3.2 手册页的结构
输入 man 后跟任何包含手册页的命令或主题的名称,即可显示该手册页。我们之前看到,man 命令本身也有一个手册页。我们即将学习该手册页,但在此之前,我们先来看看其他几个更简单的手册页。
由于我们已经在简介中了解过 echo 命令,所以就先从 echo 开始吧。如果您想了解更多关于如何使用 echo 的信息,可以输入man echo,然后会看到几个屏幕输出,开头是:
页面顶部通常包含您需要了解的所有内容,例如可用的选项以及命令是否有多种形式。有时,man 显示的手册页名称与您作为参数输入的命令名称不同。例如,输入 man view 会产生以下输出:
这是 vim 的页面,但 view 命令也列在该页面上。有时,单个手册页会提供相关命令的信息。
另请注意,此页面的标题不是“用户命令”,而是“通用命令手册”。编写手册页的人遵循标准,但该标准允许一些变化,例如页面标题的变化。
手册页的章节在某种程度上是标准化的。少数章节是必需的,但大多数章节是可选的。以下列表显示了一些常用章节名称及其内容:
首次阅读手册页时,最重要的部分是“名称”、“概要”、“描述”和“另请参阅”,如果您正在阅读有关命令的内容,也请检查“选项”部分。“概要”部分包含该命令或函数接口的简要概述。如果有
示例部分,我通常会在阅读完“概要”后立即查看它,而“概要”通常是我阅读该页面的第一站。示例通常包含可复制运行的程序或可供试用的命令。
命令的概要部分展示了命令的语法,包括所有参数和选项。方括号 ([ ]) 括起可选元素,竖线 (|)(有时称为交替运算符)分隔元素之间的选项,尖括号 (< >) 括起占位符,省略号 (...) 表示可重复的元素。当多个选项字母括在方括号中时,例如 [-aHvW],表示所有选项字母可以一起给出。如果写成 [-a | -H | -v | -W],则只允许其中一个选项。举例来说,git 命令是一个版本控制程序,其复杂概要如下:
从这个概要中,我们可以得出几条规则:
- 占位符
是命令之后唯一必需的元素命令名称。
- [-c =] 元素是 git 的一个选项,但如果 -c 存在,则其后必须跟有名称-值赋值语句。
- 竖线 | 用于指示最多只能使用 -p、
- --paginate、-P 或 --no-pager 中的一个。
- --super-prefix 是一个包含必需参数的长选项。
对于函数,“概要”会显示所有必需的数据声明或 #include 指令,后跟函数声明。如果有功能测试宏的要求(我们将在第 67 页的“功能测试宏”中介绍),也会对此进行描述。阅读函数相关内容时,务必阅读“错误”和“返回值”部分;它们会告诉您该函数可能报告哪些错误、可能返回哪些值以及您需要如何处理这些错误。
要学习如何使用命令和函数,通常手册页本身就足够了。要了解命令如何与操作系统交互,或者如何实现,我们需要做更多的研究。在第 3 章中,我们将通过一个练习更详细地展示如何使用手册页。
参考资料
- 软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
- 本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
- python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
- Linux精品书籍下载 https://www.cnblogs.com/testing-/p/17438558.html
- python八字排盘 https://github.com/china-testing/bazi
- 联系方式:钉ding或V信: pythontesting
1.3.3 搜索手册页
man 命令有许多用于执行搜索的选项。让我们看一下 man 手册页的开头:
您可能无法看到此处显示的所有选项。POSIX.1-2024 标准 (https://pubs.opengroup.org/onlinepubs/9699919799/utilities/man.html)
仅需要 -k 选项,但大多数实现都提供了更多选项。
本例中显示的输出来自 Linux man-pages 项目 (https://www.kernel.org/doc/man-pages/) 最新版本的手册页,该项目独立于POSIX.1-2024 标准提供并标准化了手册页。许多 Linux 发行版,包括 Debian、Fedora、Gentoo、openSUSE 和 Ubuntu,以及 macOS 和一些专有 Unix 系统,都遵循后者的标准。 (请参阅 https://man-db.gitlab.io/man-db/ ,了解可安装在其他系统上的一组备用手册页。)
对我们来说,最重要的选项是 -k 和 -K,它们允许我们在手册页中搜索 k关键词。如果您进一步阅读手册页,
您会看到以下示例:
在页面下方,您会看到此命令和 -K 选项功能的描述:
-k 选项允许我们搜索所有手册页,以查找与我们输入的单词匹配的简短描述。简短描述是指“名称”部分及其一行描述。-K 选项会搜索整个手册页,
而不仅仅是简短描述。这种方法很慢,但有时可能会有用。该手册页还建议我们阅读 apropos 命令。
如果我们查看它的手册页,就会找到我们需要的内容:
我们可以使用 apropos 进行搜索。如果使用 -r 选项,我们可以提供一个正则表达式,这是一种特殊类型的模式;或者,我们可以使用 -w 选项,并使用另一种称为通配符的模式,通配符是用于匹配文件名的模式。如果使用 -e 选项,它将与关键字完全匹配。
如果我们继续阅读本页,就会发现默认情况下,匹配不区分大小写。此外,默认情况下,apropos 会搜索手册的所有章节(卷),但我们可以使用 -s 选项将搜索范围限制在特定章节。 -a 选项强制匹配仅返回匹配所有搜索词的页面,而不是匹配任何搜索词。以下示例将对此进行说明:- $ apropos case
- $ apropos Case
复制代码 这两个命令都会匹配任何包含单词 case 的行,不区分大小写。
匹配可以包含包含大小写子字符串的单词的行,例如 lowercase、case-insensitive 等,并且搜索将检查所有部分。以下两个示例可以说明这一点:- $ apropos -s2,3 file
- $ apropos -e file
复制代码 第一个命令将搜索范围限制在第 2 和第 3 部分,并匹配包含任何包含 file 的单词的描述,例如 filename、FileProducer 等。第二个命令仅匹配包含确切单词 file 的行,因此它排除 filename、FileProducer 等。
apropos 命令在您的系统上的实现可能与我在此处描述的不同。这些选项的用法可能略有不同。例如,在 Ubuntu Linux 中,-s3 选项会搜索第 3、3posix、3perl 等章节。在您的系统上,您可能需要明确指定所有章节。您应该根据系统的 apropos 手册页的说明来使用它。
请考虑以下示例:- $ apropos -a convert case
复制代码 此命令匹配所有简短描述中包含 convert 和 case 这两个单词的页面,这两个单词不必相邻,例如 convert lowercase。
以下命令仅匹配包含以 case 开头的单词或 case 包含带连字符的单词(例如 case-sensitive)的行:
总而言之,apropos 是一款非常实用的帮助搜索工具。本书的其余部分将广泛使用它,以便我们进行背景研究来实现各种系统程序。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |