如何使用 Linux 的 man 命令:隐藏的秘密和基础知识

您需要了解的有关 Linux 的所有信息都在其手册页中。例如,您可以搜索完成任务的命令,即使您不知道它叫什么。但是如何找到手册页呢?这里有一些技巧。
Linux 的内置手册
有一个古老的(来自 Unix 黄金时代)Linux 笑话,你唯一需要知道的命令是 man
,用户手册的系统入口点。这有一点点道理,但即使是 man
一开始也会让人感到困惑。或者,更准确地说,查找所需信息可能会造成混淆。
您是否知道自己想做什么,但不知道完成任务的命令名称?我们可能都去过那里。这就像当你不认识这个词时试图在字典中查找一个词。
那么,您如何才能找到您要找的东西呢?好吧,man
有很多方法可以解决这个难题。
这些数字是另一个新生问题。它们是什么,它们是什么意思?您会在文档和互联网上看到诸如 man(2)
或 man(5)
之类的引用。您还会看到对命令的引用后跟数字,例如 mount(2)
和 mount(8)
。 mount
命令肯定不会超过一个,对吧?正如我们将要看到的,数字很重要而且相对简单。
说到简单,一旦您知道如何在 man
中搜索就非常容易。事实上,您可以通过一些巧妙的方式在 man
中进行搜索和导航。让我们启动它,看看吧!
如何打开说明书
要使用 man
,您可以在命令行中键入 man
,然后输入空格和 Linux 命令。 man
打开 Linux 手册到描述该命令的“手册页”——当然,如果它能找到的话。
让我们输入以下内容,看看 man
对 man
说了什么:
man man

man
的手册页打开。

如您所见,这是 man(1)
页面。
请按照以下提示导航页面:
- 要一次一行地浏览手册页: 使用鼠标上的滚轮,或上下箭头和 Enter 键。
- 要在手册页中一次移动一个屏幕:按空格键以及 PgDn 和 PgUp 键。
- 要直接移动到手册页的顶部或底部: 按 Home 和 End 键。
如果您按 H,您将进入帮助部分并查看您可以使用的备用击键表。上面列出的那些对大多数人来说可能会感觉更自然。
要退出 man
,只需按 Q。
手册页剖析
在页面顶部,您会看到标题“名称”和“概要”。手册页的布局有一个约定。命令、程序和编程函数(库例程)都有手册页。您不会在每个手册页上看到所有这些标题,因为其中一些仅适用于某些类型的命令。
以下是您可能会看到的一些标题:
- 名称:手册页描述的命令的名称。
- 概要命令及其语法的概要。
- 配置:设备的配置详细信息。
- 描述:对程序功能的解释。
- 选项:命令接受的命令行选项的描述。
- 退出状态:命令的可能退出状态值,以及可能导致使用它们的原因。
- 返回值:如果手册页是针对库例程的,则这描述了库例程可以发送回调用该例程的函数的值。
- 错误:在发生错误时可能放置在
errno
中的值的列表。 - 环境:影响命令或程序的环境变量列表,以及影响方式。
- 文件:命令或程序使用的文件列表,例如配置文件。
- 属性:命令的各种属性的摘要。
- 版本:系统调用或库函数首次出现或与之前版本相比发生重大变化的 Linux 内核或库版本的详细信息。
- 符合命令可能符合的任何标准的描述,例如 POSIX。
- 备注:杂项备注。
- 错误:已知问题。
- 示例:一个或多个演示命令用法的示例。
- 作者:编写或维护命令的人。
- 另请参阅:与命令或主题相关的推荐读物。
男人 章节
如果向下滚动几页,您会看到手册中各部分的列表。

这些部分是:
- 一般命令:您在命令行上使用的命令。
- 系统调用:内核提供程序可以调用的函数。
- 库函数:程序可以在代码库(主要是C标准)中调用的函数。
- 特殊文件:通常是设备,例如 /dev 中的设备及其驱动程序。
- 文件格式和约定:文件格式,例如
passwd
、cron
表和tar
归档文件。 - 游戏:对命令的描述,例如
fortune
,当您运行它们时会显示来自数据库的报价。 - 杂项:对 inode、引导参数和
man
本身的描述。 - 系统管理:命令和守护进程通常保留给
root
使用。 - 内核例程:与内核内部操作相关的信息。例如,这包括对编写设备驱动程序的程序员有用的函数接口和变量。在大多数系统上,此部分未安装。
当您看到一个命令后跟一个数字时,它指的是手册该部分中对该命令的描述。例如,man(1)
指的是手册第一部分中描述 man
命令的条目。
在上图中,您看到了对 man(7)
的引用。这意味着在另一部分中有更多关于 man
的信息。当我们第一次打开手册页时,它显示 man(1)
。如果您只键入 man
而没有节号,man
会按顺序搜索所有节,查找您键入的命令的条目。当然,它在 man(7)
之前找到了 man(1)
。
如果要强制 man
从特定部分查找条目,则必须在命令行中包含部分编号。
例如,我们键入以下内容以打开第七节中 man
的条目:
man 7 man

手册打开到第七部分的 man 条目。

此手册页提供编写手册页的说明。它描述了您可以用来为您完成某些工作的文件格式和宏。我们之前看到的第一节中的 man(1)
页面描述了如何使用 man
本身。
如何在部分中查找条目
通常,如果您只是想知道如何使用命令,则不必提供章节编号。 man
将在手册的第一节中找到描述如何使用该命令的标准条目。但是,有时您确实需要在特定部分打开命令条目,因为您需要不同的信息。
您可以轻松找出手册的哪些部分包含命令条目。每个手册页都有一个标题和一个简短的描述。 -f
(whatis) 选项搜索页面标题并返回匹配列表。
对于此示例,我们键入以下内容:
man -f man

man
的两个手册页连同它们的节号和简短描述一起列出。不过要小心——有些条目具有相同的名称,但描述的是不同的命令和功能。
例如,我们键入以下内容:
man -f printf

似乎为 printf
找到了两个条目:第一个在第一节中,另一个在第三节中。但是,这些是不同的命令。第一节中的手册页描述了命令行 printf
命令,该命令在终端窗口中格式化输出。第三部分的手册页描述了 C 编程语言中的 printf
库函数系列。
也可以通过简短描述和页面标题进行搜索。为此,您可以使用 -k
(apropos) 选项。这也将匹配搜索项在其他更长的单词中的出现。
我们键入以下内容:
man -k printf

其中许多命令在相同的几个手册页中进行了描述,因为它们的核心功能基本相同。 vprintf
的手册页描述了上图中列出的 10 个命令的功能。
您可以利用此功能搜索与您要实现的目标相关的信息,即使您不知道要使用的命令的名称。
假设您想更改用户帐户的密码。我们可以搜索手册页标题或描述中提到“用户”的任何命令。然后我们可以通过 grep
来查找包含“密码”的条目。
为此,我们键入以下内容:
man -k 'user ' | grep password

因为我们用单引号将“user”一词括起来并在末尾包含一个空格,所以它只会找到“user”而不是“users”的匹配项。快速浏览一下搜索结果,我们会发现可能的候选者是 passwd
。
因为它是手册页的第一部分,我们不需要在命令中包含部分编号,所以我们键入以下内容:
man passwd
假设我们需要一个命令来计算文本文件中的单词数。我们键入以下内容以查看是否存在类似的内容:
man -k word | grep count

要找出关于计算单词的所有知识,我们键入以下命令:
man wc
说到 wc
,我们还可以使用带有单个句点 (.
) 的 -k
(apropos) 选项作为搜索目标,这将匹配一切。如果我们将其通过 wc
进行管道传输并使用 -l
(行数)选项,它将告诉我们计算机上有多少手册页。
为此,我们键入以下命令:
man -k . | wc -l

这台 Ubuntu 计算机上有 6,706 个手册页,但如果您的数字有所不同,请不要感到惊讶。它可能会有所不同,具体取决于您的计算机上有哪些软件包和实用程序,以及预装了哪些手册页。
在手册页中搜索
您还可以从手册页中的当前位置向前或向后搜索。
对于此示例,我们键入以下内容以打开 history
命令的手册页:
man history

要向前搜索,我们按正斜杠 (/
),然后键入单词“event”。搜索目标出现在终端窗口的底部,我们按 Enter 开始搜索。

该窗口显示找到的所有匹配项的第一个结果,并突出显示。

按“n”从一个结果移动到页面底部的结果。要通过手册页向后搜索,请按“N”;这将使您回到页面顶部。
要打开和关闭突出显示,请按 Esc+U。
如果您接近手册页的底部并想向上搜索,请按问号 (?),然后键入搜索词。我们搜索“条目”。

同样,任何匹配的结果都会突出显示。

要搜索下一个匹配结果,请按“n”移至手册页的开头。按“N”转到上一个匹配结果并移至手册页的末尾。
还有另一种方法可以搜索手册页。它会隐藏所有不包含与您的搜索词匹配的行,因此最好在该技术中使用行号。
如果我们输入“-N”并回车,我们可以在手册页中看到行号。

我们按和号 (&),键入我们的搜索词(数字),然后按 Enter。

仅显示包含我们的搜索词的行。

浏览这些内容并发现任何看起来有趣的内容很容易。我们认为第 292 行看起来很有希望,所以我们想转到手册页的那部分并检查一下。
要再次查看所有行,我们点击与号 (&),然后按 Enter。

我们键入“292”,然后键入“g”以转到该行。

一旦我们输入“g”,我们就会被带到第 292 行(这就是为什么“g”没有出现在上图中的原因)。然后第 292 行显示在终端窗口的顶部。

您可以按“-n”并按 Enter 键删除行号。
阅读精彩手册
手册页中有大量信息。即使使用您认为自己很了解的命令,也可以肯定还有其他您从未听说过的选项。
您肯定还会发现您不知道存在的命令。有这么多不同的方式来搜索和追踪信息,一切都触手可及真是太棒了。
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts