标签 手册页 下的文章

手册页 man pages ,即 参考手册页 reference manual pages 的简称,是你进入 Linux 的钥匙。你想知道的一切都在那里,包罗万象。这套文档永远不会赢得普利策奖,但这套文档是相当准确和完整的。手册页是主要信源,其权威性是众所周知的。

虽然它们是源头,但阅读起来并不是最令人愉快的。有一次,在很久以前的哲学课上,有人告诉我,阅读 亚里士多德 是最无聊的阅读。我不同意:说到枯燥的阅读,亚里士多德远远地排在第二位,仅次于手册页。

乍一看,这些页面可能看起来并不完整,但是,不管你信不信,手册页并不是为了隐藏信息 —— 只是因为信息量太大,这些页面必须要有结构,而且信息是以尽可能简短的形式给出的。这些解释相当简略,需要一些时间来适应,但一旦你掌握了使用它们的技巧,你就会发现它们实际上是多么有用。

Linux 中的手册页入门

这些页面是通过一个叫做 man 的工具查看的,使用它的命令相当简单。在最简单的情况下,要使用 man,你要在命令行上输入 man,后面加一个空格和你想查询的命令,比如 lscp,像这样:

man ls

man 会打开 ls 命令的手册页。

你可以用方向键上下移动,按 q 退出查看手册页。通常情况下,手册页是用 less 打开的,所以 less 命令的键盘快捷键在 man 中也可以使用。

例如,你可以用 /search_term 来搜索一个特定的文本,等等。

有一个关于手册页的介绍,这是一篇值得阅读介绍。它非常详细地说明了手册页是如何布局和组织的。

要看这个页面,请打开一个终端,然后输入:

man man

man page of man

在你开始更深入地研究手册页之前,知道手册页有一个固定的页面布局和一个归档方案会有帮助。这可能会让新手感到困惑,因为我可以说:“看手册页中关于 ls 的 NAME section ”,我也可以说:“看第 5 section 中的 passwd 的手册页。”

我把 “ section ” 这个词用斜体字表示,是为了显示混淆的来源。这个词,“节” 被用于两种不同的方式,但并不总是向新人解释其中的区别。

我不确定为什么会出现这种混淆,但我在培训新用户和初级系统管理员时看到过几次这种混淆。我认为这可能是隧道视野,专注于一件事会使一个人忘记另一件事。一叶障目,不见泰山。

对于那些已经知道其中的区别的人,你可以跳过这一小节。这一部分是针对那些刚接触到手册页的人。

这就是区别:

对于手册页

单独的手册页是用来显示信息块的。例如,每个手册页都有一个“NAME”节,显示命令的名称和简短的描述。还会有另一个信息块,称为“SYNOPSIS”,显示该命令是如何使用的,以此类推。

每个手册页都会有这些,以及其他的标题。这些在各个手册页上的节,或者说标题,有助于保持事情的一致性和信息的分工。

对于手册

使用“节”,如 “查看第 5 节中的 passwd 的手册页”,是指整个手册的内容。当我们只看一页时,很容易忽略这一点,但是 passwd 手册页是同一本手册的一部分,该手册还有 lsrmdatecal 等的手册页。

整个 Linux 手册是巨大的;它有成千上万的手册页。其中一些手册页有专门的信息。有些手册页有程序员需要的信息,有些手册页有网络方面的独特信息,还有一些是系统管理员会感兴趣的。

这些手册页根据其独特的目的被分组。想想看,把整个手册分成几个章节 —— 每章有一个特定的主题。有 9 个左右的章节(非常大的章节)。碰巧的是,这些章节被称为“节”。

总结一下:

  • 手册中单页(我们称之为“手册页”)的节是由标题定义的信息块。
  • 这个大的手册(所有页面的集合)中的章节,刚好被称为“节”。

现在你知道区别了,希望本文的其余部分会更容易理解。

手册页的节

你将会看到不同的手册页,所以让我们先研究一下各个页面的布局。

手册页被分成几个标题,它们可能因提供者不同而不同,但会有相似之处。一般的分类如下:

  • NAME(名称)
  • SYNOPSIS(概要)
  • DESCRIPTION(描述)
  • EXAMPLES(例子)
  • DIAGNOSTICS(诊断)
  • FILES(文件)
  • LIMITS(限制)
  • PORTABILITY(可移植性)
  • SEE ALSO(另见)
  • HISTORY(历史)
  • WARNING(警告)或BUGS`(错误)
  • NOTES(注意事项)

NAME - 在这个标题下是命令的名称和命令的简要描述。

SYNOPSIS - 显示该命令的使用方法。例如,这里是 cal 命令的概要:

cal [Month] [Year]

概要以命令的名称开始,后面是选项列表。概要采用命令行的一般形式;它显示了你可以输入的内容和参数的顺序。方括号中的参数([])是可选的;你可以不输入这些参数,命令仍然可以正常工作。不在括号内的项目必须使用。

请注意,方括号只是为了便于阅读。当你输入命令时,不应该输入它们。

DESCRIPTION - 描述该命令或工具的作用以及如何使用它。这一节通常以对概要的解释开始,并说明如果你省略任何一个可选参数会发生什么。对于长的或复杂的命令,这一节可能会被细分。

EXAMPLES - 一些手册页提供了如何使用命令或工具的例子。如果有这一节,手册页会尝试给出一些简单的使用例子,以及更复杂的例子来说明如何完成复杂的任务。

DIAGNOSTICS - 本节列出了由命令或工具返回的状态或错误信息。通常不显示不言自明的错误和状态信息。通常会列出可能难以理解的信息。

FILES - 本节包含了 UNIX 用来运行这个特定命令的补充文件的列表。这里,“补充文件”是指没有在命令行中指定的文件。例如,如果你在看 passwd 命令的手册,你可能会发现 /etc/passwd 列在这一节中,因为 UNIX 是在这里存储密码信息。

LIMITS - 本节描述了一个工具的限制。操作系统和硬件的限制通常不会被列出,因为它们不在工具的控制范围内。

PORTABILITY - 列出其他可以使用该工具的系统,以及该工具的其他版本可能有什么不同。

SEE ALSO - 列出包含相关信息的相关手册页。

HISTORY - 提供命令的简要历史,如它第一次出现的时间。

WARNING - 如果有这个部分,它包含了对用户的重要建议。

NOTES - 不像警告那样严重,但也是重要的信息。

同样,并不是所有的手册都使用上面列出的确切标题,但它们足够接近,可以遵循。

手册的节

整个 Linux 手册集合的手册页传统上被划分为有编号的节:

第 1 节:Shell 命令和应用程序 第 2 节:基本内核服务 - 系统调用和错误代码 第 3 节:为程序员提供的库信息 第 4 节:网络服务 - 如果安装了 TCP/IP 或 NFS 设备驱动和网络协议 第 5 节:文件格式 - 例如:显示 tar 存档的样子 第 6 节:游戏 第 7 节:杂项文件和文档 第 8 节:系统管理和维护命令 第 9 节:不知名的内核规格和接口

将手册页分成这些组,可以使搜索更有效率。在我工作的地方,我有时会做一些编程工作,所以我花了一点时间看第 3 节的手册页。我也做一些网络方面的工作,所以我也知道要涉足网络部分。作为几个实验性机器的系统管理员,我在第 8 节花了很多时间。

将手册网归入特定的节(章节),使搜索信息更加容易 —— 无论是对需要搜索的人,还是对进行搜索的机器。

你可以通过名称旁边的数字来判断哪个手册页属于哪个部分。例如,如果你正在看 ls 的手册页,而页面的最上面写着。 LS(1),那么你正在浏览第 1 节中的 ls 页面,该节包含关于 shell 命令和应用程序的页面。

下面是另一个例子。如果你在看 passwd 的手册页,页面的顶部显示: PASSWD(1),说明你正在阅读第 1 节中描述 passwd 命令如何更改用户账户密码的手册页。如果你看到 PASSWD(5),那么你正在阅读关于密码文件和它是如何组成的的手册页。

passwd 恰好是两个不同的东西:一个是命令的名称,一个是文件的名称。同样,第 1 节描述了命令,而第 5 节涉及文件格式。

括号中的数字是重要的线索 —— 这个数字告诉你正在阅读的页面来自哪一节。

搜索一个特定的节

基本命令:

man -a name

将在每一节中搜索由 name 标识的手册页,按数字顺序逐一显示。要把搜索限制在一个特定的部分,请在 man 命令中使用一个参数,像这样:

man 1 name

这个命令将只在手册页的第 1 节中搜索 name。使用我们前面的 passwd 例子,这意味着我们可以保持搜索的针对性。如果我想阅读 passwd 命令的手册页,我可以在终端输入以下内容:

man 1 passwd

man 工具将只在第 1 节中搜索 passwd 并显示它。它不会在任何其他节中寻找 passwd

这个命令的另一种方法是输入: man passwd.1

使用 man -k 来搜索包含某个关键词的所有手册页

如果你想获得包含某个关键词的手册页的列表,man 命令中的 -k 选项(通常称为标志或开关)可以派上用场。例如,如果你想看一个关于 ftp 的手册列表,你可以通过输入以下内容得到这个列表:

man -k ftp

在接下来的列表中,你可以选择一个特定的手册页来阅读:

man k example

在某些系统上,在 man -k 工作之前,系统管理员需要运行一个叫做 catman 的工具。

使用 whatis 和 whereis 命令来了解手册的各个节

有两个有趣的工具可以帮助你搜索信息:whatiswhereis

whatis

有的时候,我们完全可以得到我们需要的信息。我们需要的信息有很大的机会是可以找到的 —— 找到它可能是一个小问题。

例如,如果我想看关于 passwd 文件的手册页,我在终端上输入:

man passwd

我就会看到关于 passwd 命令所有信息的手册页,但没有关于 passwd 文件的内容。我知道 passwd 是一个命令,也有一个 passwd 文件,但有时,我可能会忘记这一点。这时我才意识到,文件结构在手册页中的不同节,所以我输入了:

man 4 passwd

我得到这样的答复:

No manual entry for passwd in section 4
See 'man 7 undocumented' for help when manual pages are not available.

又是一次健忘的失误。文件结构在 System V UNIX 页面的第 4 节中。几年前,当我建立文件时,我经常使用 man 4 ...;这仍然是我的一个习惯。那么它在 Linux 手册中的什么地方呢?

现在是时候调用 whatis 来纠正我了。为了做到这一点,我在我的终端中输入以下内容:

whatis passwd

然后我看到以下内容:

passwd (1)           - change user password
passwd (1ssl)        - compute password hashes
passwd (5)           - the password file

啊!passwd 文件的页面在第 5 节。现在没问题了,可以访问我想要的信息了:

man 5 passwd

然后我被带到了有我需要的信息的手册页。

whatis 是一个方便的工具,可以用简短的一句话告诉你一个命令的作用。想象一下,你想知道 cal 是做什么的,而不想查看手册页。只要在命令提示符下键入以下内容。

whatis cal

你会看到这样的回应:

cal (1)              - displays a calendar and the date of Easter

现在你知道了 whatis 命令,我可以告诉你一个秘密 —— 有一个 man 命令的等价物。为了得到这个,我们使用 -f 开关:man -f ...

试试吧。在终端提示下输入 whatis cal。执行后就输入:man -f cal。两个命令的输出将是相同的:

whatis cal and man f cal outputs are the same

whereis

whereis 命令的名字就说明了这一点 —— 它告诉你一个程序在文件系统中的位置。它也会告诉你手册页的存放位置。再以 cal 为例,我在提示符下输入以下内容:

whereis cal

我将看到这个:

whereis cal output

仔细看一下这个回答。答案只在一行里,但它告诉我两件事:

  • /usr/bin/calcal 程序所在的地方,以及
  • /usr/share/man/man1/cal.1.gz 是手册页所在的地方(我也知道手册页是被压缩的,但不用担心 —— man 命令知道如何即时解压)。

whereis 依赖于 PATH 环境变量;它只能告诉你文件在哪里,如果它们在你的 PATH 环境变量中。

你可能想知道是否有一个与 whereis 相当的 man 命令。没有一个命令可以告诉你可执行文件的位置,但有一个开关可以告诉你手册页的位置。在这个例子中使用 date 命令,如果我们输入:

whereis date

在终端提示符下,我们会看到:

whereis date output

我们看到 date 程序在 /usr/bin/ 目录下,其手册页的名称和位置是:/usr/share/man/man1/date.1.gz

我们可以让 manwhereis 一样行事,最接近的方法是使用 -w 开关。我们不会得到程序的位置,但我们至少可以得到手册页的位置,像这样:

man -w date

我们将看到这样的返回:

你知道了 whatiswhereis,以及让 man 命令做同样(或接近)事情的方法。我展示了这两种方法,有几个不同的原因。

多年来,我使用 whatiswhereis,因为它们在我的培训手册中。直到最近我才了解到 man -f ...man -w ...。我确信我看了几百次 man 的手册页,但我从未注意到 -f-w 开关。我总是在看手册页的其他东西(例如:man -k ...)。我只专注于我需要找到的东西,而忽略了其他的东西。一旦我找到了我需要的信息,我就会离开这个页面,去完成工作,而不去注意这个命令所提供的其他一些宝贝。

这没关系,因为这部分就是手册页的作用:帮助你完成工作。

直到最近我向别人展示如何使用手册页时,我才花时间去阅读 —— “看看还有什么可能” —— 我们才真正注意到关于 man 命令的 -f-w 标记可以做什么的信息。

不管你使用 Linux 多久了,或者多么有经验,总有一些新东西需要学习。

手册页会告诉你在完成某项任务时可能需要知道的东西 —— 但它们也有很多内容 —— 足以让你看起来像个魔术师,但前提是你要花时间去读。

结论

如果你花一些时间和精力在手册页上,你将会取得胜利。你对手册页的熟练程度,将在你掌握 Linux 的过程中发挥巨大作用。


via: https://itsfoss.com/linux-man-page-guide/

作者:Bill Dyer 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Linux 系统上的手册页可以做的不仅仅是提供特定命令的信息。它们可以帮助你发现你没有意识到的命令。

手册页提供了关于 Linux 命令的基本信息,很多用户经常参考它,但手册页的内容比我们很多人意识到的要多得多。

你总是可以输入一个像 man who 这样的命令,然后得到 who 命令的工作原理的漂亮描述,但是探索你可能不知道的命令可能会更有启发。例如,你可以使用 man 命令来帮助找到一些处理非常具有挑战性的任务的命令,或者显示一些选项,这些选项可以帮助你以新的更好的方式使用你已经知道的命令。

让我们来浏览一些选项,看看最终的结果是什么。

用 man 去识别命令

man 命令可以帮助你按主题查找命令。例如,如果你要找一个计算文件中的行数的命令,你可以提供一个关键字。在下面的例子中,我们把关键字 “count” 放在了引号中,并添加了空格,这样我们就不会得到与 “accounts” 或 “accounting” 相关的命令,而是得到那些可以为我们做一些计算的命令。

$ man -k ' count '
anvil (8postfix)     - Postfix session count and request rate control
cksum (1)            - checksum and count the bytes in a file
sum (1)              - checksum and count the blocks in a file
timer_getoverrun (2) - get overrun count for a POSIX per-process timer

为了显示与新用户账户相关的命令,我们可以尝试使用这样的命令。

$ man -k "new user"
newusers (8)         - update and create new users in batch
useradd (8)          - create a new user or update default new user information
zshroadmap (1)       - informal introduction to the zsh manual The Zsh Manual, …

需要说明的是,上面的第三项只是提到 “new users” 类似的内容,并不是设置、删除或配置用户账号的命令。man 命令只是在命令描述中匹配了一些词,作用很像 apropos 命令。注意上面列出的每个命令后面的括号中的数字。这些数字与包含这些命令的手册页的分区有关。

确定手册页的分区

man 命令的分区将其内容划分为不同的类别。要列出这些类别,请键入 man man,并查看类似下面的描述。你的系统中很可能没有第 9 分区的命令。

  • 1:可执行程序或 shell 命令
  • 2:系统调用(内核提供的函数)
  • 3:库调用(程序库内的函数)
  • 4:特殊文件(通常在可以 /dev 中找到)
  • 5:文件格式和惯例,例如 /etc/passwd
  • 6:游戏
  • 7:杂项(包括宏包和约定),例如 man(7)、groff(7)
  • 8:系统管理命令(通常只由 root 用户使用)
  • 9:内核例程(非标准)

手册页涵盖了比我们通常认为的“命令”更多的内容。从上面的描述中可以看到,它们涵盖了系统调用、库调用、特殊文件等等。

下面的列表显示了 Linux 系统中的手册页的实际存储位置。这些目录上的日期会有所不同,因为随着更新,其中一些分区会有新的内容,而另一些则不会。

$ ls -ld /usr/share/man/man?
drwxr-xr-x 2 root root  98304 Feb  5 16:27 /usr/share/man/man1
drwxr-xr-x 2 root root  65536 Oct 23 17:39 /usr/share/man/man2
drwxr-xr-x 2 root root 270336 Nov 15 06:28 /usr/share/man/man3
drwxr-xr-x 2 root root   4096 Feb  4 10:16 /usr/share/man/man4
drwxr-xr-x 2 root root  28672 Feb  5 16:25 /usr/share/man/man5
drwxr-xr-x 2 root root   4096 Oct 23 17:40 /usr/share/man/man6
drwxr-xr-x 2 root root  20480 Feb  5 16:25 /usr/share/man/man7
drwxr-xr-x 2 root root  57344 Feb  5 16:25 /usr/share/man/man8

注意,为了节省空间,手册页文件一般都是 gzip 压缩的。每当你使用 man 命令时,man 命令会根据需要解压。

$ ls -l /usr/share/man/man1 | head -10
total 12632
lrwxrwxrwx 1 root root      9 Sep  5 06:38 [.1.gz -> test.1.gz
-rw-r--r-- 1 root root    563 Nov  7 05:07 2to3-2.7.1.gz
-rw-r--r-- 1 root root    592 Apr 23  2016 411toppm.1.gz
-rw-r--r-- 1 root root   2866 Aug 14 10:36 a2query.1.gz
-rw-r--r-- 1 root root   2361 Sep  9 15:13 aa-enabled.1.gz
-rw-r--r-- 1 root root   2675 Sep  9 15:13 aa-exec.1.gz
-rw-r--r-- 1 root root   1142 Apr  3  2018 aaflip.1.gz
-rw-r--r-- 1 root root   3847 Aug 14 10:36 ab.1.gz
-rw-r--r-- 1 root root   2378 Aug 23  2018 ac.1.gz

按分区列出的手册页

即使只看第 1 分区的前 10 个手册页(如上所示),你也可能会看到一些新的命令 —— 也许是 a2queryaaflip(如上所示)。

探索命令的更好策略是按分区列出命令,不查看文件本身,而是使用 man 命令向你显示命令并提供每个命令的简要说明。

在下面的命令中,-s 1 指示 man 显示第 1 分区中的命令信息。-k . 使该命令对所有命令都有效,而不是指定一个特定的关键字;如果没有这个,man 命令就会回过头来问:“你想要什么手册页?”所以,使用关键字来选择一组相关的命令,或者使用点来显示一个分区中的所有命令。

$ man -s 1 -k .
2to3-2.7 (1)         - Python2 to Python3 converter
411toppm (1)         - convert Sony Mavica .411 image to ppm
as (1)               - the portable GNU assembler.
baobab (1)           - A graphical tool to analyze disk usage
busybox (1)          - The Swiss Army Knife of Embedded Linux
cmatrix (1)          - simulates the display from "The Matrix"
expect_dislocate (1) - disconnect and reconnect processes
red (1)              - line-oriented text editor
enchant (1)          - a spellchecker
…

有多少手册页?

如果你对每个分区中有多少手册页感到好奇,可以使用以下命令按分区对它们进行计数:

$ for num in {1..8}
> do
>   man -s $num -k . | wc -l
> done
2382
493
2935
53
441
11
245
919

确切的数量可能有所不同,但是大多数 Linux 系统的命令数量差不多。如果我们使用命令将这些数字加在一起,我们可以看到运行该命令的系统上有将近 7500 个手册页。有很多命令,系统调用等。

$ for num in {1..8}
> do
>     num=`man -s $num -k . | wc -l`
>     tot=`expr $num + $tot`
>     echo $tot
> done
2382
2875
5810
5863
6304
6315
6560
7479            <=== total

阅读手册页可以学到很多东西,但是以其他方式浏览手册页可以帮助你了解系统上可能不知道的命令。


via: https://www.networkworld.com/article/3519853/navigating-man-pages-in-linux.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我一般都很喜欢无所事事,但有时候太无聊了也不行 —— 2015 年的一个星期天下午就是这样,我决定开始写一个开源项目来让我不那么无聊。

在我寻求创意时,我偶然发现了一个请求,要求构建一个由 Mathias Bynens 提出的“按 Web 标准构建的 Man 手册页查看器”。没有考虑太多,我开始使用 JavaScript 编写一个手册页解析器,经过大量的反复思考,最终做出了一个 Jroff

那时候,我非常熟悉手册页这个概念,而且使用过很多次,但我知道的仅止于此,我不知道它们是如何生成的,或者是否有一个标准。在经过两年后,我有了一些关于此事的想法。

man 手册页是如何写的

当时令我感到惊讶的第一件事是,手册页的核心只是存储在系统某处的纯文本文件(你可以使用 manpath 命令检查这些目录)。

此文件中不仅包含文档,还包含使用了 20 世纪 70 年代名为 troff 的排版系统的格式化信息。

troff 及其 GNU 实现 groff 是处理文档的文本描述以生成适合打印的排版版本的程序。它更像是“你所描述的即你得到的”,而不是你所见即所得的。

如果你对排版格式毫不熟悉,可以将它们视为 steroids 期刊用的 Markdown,但其灵活性带来的就是更复杂的语法:

groff-compressor

groff 文件可以手工编写,也可以使用许多不同的工具从其他格式生成,如 Markdown、Latex、HTML 等。

为什么 groff 和 man 手册页绑在一起是有历史原因的,其格式随时间有变化,它的血统由一系列类似命名的程序组成:RUNOFF > roff > nroff > troff > groff。

但这并不一定意味着 groff 与手册页有多紧密的关系,它是一种通用格式,已被用于书籍,甚至用于照相排版

此外,值得注意的是 groff 也可以调用后处理器将其中间输出结果转换为最终格式,这对于终端显示来说不一定是 ascii !一些支持的格式是:TeX DVI、HTML、Canon、HP LaserJet4 兼容格式、PostScript、utf8 等等。

该格式的其他很酷的功能是它的可扩展性,你可以编写宏来增强其基本功能。

鉴于 *nix 系统的悠久历史,有几个可以根据你想要生成的输出而将特定功能组合在一起的宏包,例如 manmdocmommsmm 等等。

手册页通常使用 manmdoc 宏包编写。

区分原生的 groff 命令和宏的方式是通过标准 groff 包大写其宏名称。对于 man 宏包,每个宏的名称都是大写的,如 .PP.TH.SH 等。对于 mdoc 宏包,只有第一个字母是大写的: .Pp.Dt.Sh

groff-example

挑战

无论你是考虑编写自己的 groff 解析器,还是只是好奇,这些都是我发现的一些更具挑战性的问题。

上下文敏感的语法

表面上,groff 的语法是上下文无关的,遗憾的是,因为宏描述的是主体不透明的令牌,所以包中的宏集合本身可能不会实现上下文无关的语法。

这导致我在那时做不出来一个解析器生成器(不管好坏)。

嵌套的宏

mdoc 宏包中的大多数宏都是可调用的,这差不多意味着宏可以用作其他宏的参数,例如,你看看这个:

  • Fl(Flag)会在其参数中添加破折号,因此 Fl s 会生成 -s
  • Ar(Argument)提供了定义参数的工具
  • Op(Optional)会将其参数括在括号中,因为这是将某些东西定义为可选的标准习惯用法
  • 以下组合 .Op Fl s Ar file 将生成 [-s file],因为 Op 宏可以嵌套。

缺乏适合初学者的资源

让我感到困惑的是缺乏一个规范的、定义明确的、清晰的来源,网上有很多信息,这些信息对读者来说很重要,需要时间来掌握。

有趣的宏

总结一下,我会向你提供一个非常简短的宏列表,我在开发 jroff 时发现它很有趣:

man 宏包:

  • .TH:用 man 宏包编写手册页时,你的第一个不是注释的行必须是这个宏,它接受五个参数:titlesectiondatesourcemanual
  • .BI:粗体加斜体(特别适用于函数格式)
  • .BR:粗体加正体(特别适用于参考其他手册页)

mdoc 宏包:

  • .Dd.Dt.Os:类似于 man 宏包需要 .THmdoc 宏也需要这三个宏,需要按特定顺序使用。它们的缩写分别代表:文档日期、文档标题和操作系统。
  • .Bl.It.El:这三个宏用于创建列表,它们的名称不言自明:开始列表、项目和结束列表。

via: https://monades.roperzh.com/memories-writing-parser-man-pages/

作者:Roberto Dip 译者:wxy 校对:wxy 选题:lujun9972

本文由 LCTT 原创编译,Linux中国 荣誉推出