当前位置: 首页 > 科技观察

RTFM!如何阅读(和理解)Linux中神奇的手册页

时间:2023-03-13 19:11:17 科技观察

手册页是参考手册页的简称,是您进入Linux的关键。你想知道的都有,应有尽有。这套文件永远不会赢得普利策奖,但它非常准确和完整。手册页是主要来源,是众所周知的权威。虽然它们是来源,但它们并不是最令人愉快的阅读。有一次,在很久以前的哲学课上,我被告知阅读亚里士多德是有史以来最无聊的阅读。我不同意:在干读方面,亚里士多德仅次于手册页。乍一看,这些页面可能看起来不完整,但是,不管你信不信,手册页并不是要隐藏信息——只是由于信息量巨大,页面必须结构化,并且信息要尽可能简短尽可能在表格中给出。这些解释相当简短,需要一些时间来适应,但是一旦您掌握了使用它们的窍门,您就会发现它们实际上有多大用处。开始使用Linux中的手册页这些页面是通过一个名为man的工具来查看的,使用它的命令相当简单。在最简单的情况下,要使用man,您可以在命令行中键入man,后跟一个空格和您想要的命令,例如ls或cp,如下所示:manlsman将打开ls命令的手册页。您可以使用箭头键上下移动,然后按q退出并查看手册页。通常,手册页是用less打开的,所以less命令的键盘快捷键在man中也有效。比如你可以用/search_term来搜索特定的文本等等。manpage里面有介绍,值得一看的介绍。它非常详细地解释了手册页的布局和组织方式。要查看此页面,请打开终端并键入:manmanmanpageofmansection在开始深入挖掘手册页之前,了解手册页具有固定的页面布局和归档方案会有所帮助。这可能会让新手感到困惑,因为我可以说:“查看ls手册页的NAME部分”,我也可以说:“查看手册页中第5部分的passwd”。我把“section”这个词用斜体表示,以表明混淆的来源。“section”这个词有两种不同的用法,但并不总是向新手解释不同之处。我不确定为什么会出现这种混淆,但我在培训新用户和初级系统管理员时见过几次。我认为这可能是狭隘的视野,专注于一件事会使人忘记另一件事。一叶障眼,不见泰山。对于那些已经知道区别的人,您可以跳过此小节。本节适用于手册页的新手。这就是区别:对于手册页,单独的手册页用于显示信息块。例如,每个手册页都有一个显示命令名称和简短描述的“名称”部分。还会有另一个信息块,称为“SYNOPSIS”,显示该命令是如何使用的,等等。每个手册页都会有这些和其他标题。各个手册页上的这些部分或标题有助于保持内容的一致性和信息的组织性。对手册使用“节”,如“请参阅第5节中的密码手册页”,指的是整个手册的内容。当我们只看一页时很容易忽略这一点,但passwd手册页是同一手册页的一部分,该手册页还有ls、rm、date、cal等手册页。整个Linux手册非常庞大;它有成千上万的手册页。其中一些手册页有专门的信息。一些手册页包含程序员需要的信息,一些包含网络特有的信息,还有一些是系统管理员感兴趣的。这些手册页根据其独特用途进行分组。想一想,将整本手册分成几章——每一章都有一个特定的主题。有9章左右(非常大的章节)。碰巧的是,这些章节被称为“章节”。总结一下:手册中单个页面(我们称之为“手册页”)的一部分是由标题定义的信息块。这本大手册(所有页面的集合)中的章节简称为“章节”。既然您知道了区别,希望本文的其余部分会更容易理解。手册页的各个部分您会看到不同的手册页,所以让我们首先检查每个页面的布局。手册页分为几个标题,这些标题可能因提供商而异,但会有相似之处。一般类别如下:NAMESYNOPSISDESCRIPTIONDESCRIPTIONEXAMLESSDIAGNOSTICSFILESLIMITSPORTABILITYSEEALSOHISTORYWARNING(警告)或BUGS`(错误)NOTES(注释)命令。SYNOPSIS-显示如何使用该命令。例如,这里是cal命令的概要:cal[Month][Year]概要以命令名称开头,后面是选项列表。摘要采用命令行的一般形式;它显示了您可以输入的内容和参数的顺序。方括号([])中的参数是可选的;您可以将它们排除在外,该命令仍然有效。必须使用不在括号中的项目。请注意,方括号只是为了便于阅读。当您键入命令时,不应键入它们。DESCRIPTION-描述命令或工具的作用以及如何使用它。本节通常以对摘要的解释以及如果省略任何可选参数会发生什么情况开始。对于较长或复杂的命令,此部分可能会被细分。示例-一些手册页提供了如何使用命令或工具的示例。如果有这样的部分,手册页会尝试给出一些简单的用法示例,以及如何完成复杂任务的更复杂的示例。诊断-此部分列出了命令或工具返回的状态或错误消息。通常不显示不言自明的错误和状态消息。通常会列出可能难以理解的信息。文件-本部分包含UNIX用于运行此特定命令的补充文件列表。此处,“补充文件”是指未在命令行中指定的文件。例如,如果您正在查看passwd命令的手册,您可能会发现此部分中列出了/etc/passwd,因为这是UNIX存储密码信息的地方。限制-本节描述工具的限制。操作系统和硬件限制通常不会列出,因为它们不在工具的控制范围内。可移植性-列出可以使用该工具的其他系统,以及该工具的其他版本可能有何不同。还请参见-列出包含相关信息的相关手册页。HISTORY-提供命令的简短历史记录,例如它首次出现的时间。警告-如果存在,则此部分包含对用户的重要建议。注意-不像警告那么严重,但重要信息。同样,并非所有手册都使用上面列出的确切标题,但它们足够接近以供遵循。手册的章节整个Linux手册集的手册页传统上分为编号部分:第1节:Shell命令和应用程序第2节:基本内核服务-系统调用和错误代码第3节:程序员存储库信息第4节:网络服务-如果安装了TCP/IP或NFS设备驱动程序和网络协议第5节:文件格式-示例:显示Tar存档的外观第6节:游戏第7节:杂项文件和文档第8节:系统管理和维护命令部分9:未知的内核规范和接口将手册页分成这些组可以提高搜索效率。在我工作的地方,我有时会做一些编程,所以我会花一点时间查看第3部分的手册页。我也做一些网络方面的事情,所以我也知道涉足网络部分。作为几台实验机器的系统管理员,我在第8节花了很多时间。将HandbookWeb分成特定的部分(章节)可以更容易地搜索信息——无论是对于需要搜索的人还是对于机器做搜索。您可以通过名称旁边的数字来判断哪个手册页属于哪个部分。例如,如果您正在查看ls的手册页,并且页面的最顶部显示.LS(1),那么您正在查看第1部分中的ls页面,其中包含有关shell命令和应用程序的页面。下面是另一个例子。如果您正在查看passwd手册页并在页面顶部显示:PASSWD(1),那么您正在阅读第1节中描述passwd命令如何更改用户帐户密码的手册页。如果您看到PASSWD(5),那么您正在阅读有关密码文件及其组成方式的手册页。passwd恰好是两个不同的东西:一个是命令名,一个是文件名。同样,第1节描述命令,而第5节处理文件格式。括号中的数字是一个重要的线索——数字表明您正在阅读的页面来自哪个部分。搜索特定部分基本命令:man-aname将在每个部分中搜索由名称标识的手册页,并按数字顺序逐一显示。要将搜索限制在特定部分,请使用man命令的参数,如下所示:man1name此命令将仅在手册页的第1部分中搜索名称。使用我们之前的passwd示例,这意味着我们可以保持我们的搜索特定。如果我想阅读passwd命令的手册页,我可以在终端中输入以下内容:man1passwdman工具将只搜索第1部分中的passwd并显示它。它不会在任何其他节中查找passwd。此命令的替代方法是输入:manpasswd.1。使用man-k搜索包含某个关键字的所有手册页如果您想获得包含某个关键字的手册页列表,man命令中的-k选项(通常称为标志或开关)可以派上用场。例如,如果您想查看有关ftp的手册页列表,您可以通过键入以下命令获取此列表:man-kftp在下面的列表中,您可以选择特定的手册页来阅读:mankexampleatacertainOn某些系统,系统管理员需要先运行一个名为catman的工具,然后man-k才能工作。使用whatis和whereis命令来理解手册的各个部分有两个有趣的工具可以帮助您搜索信息:whatis和whereis。whatis有时,我们可以获得我们需要的信息。很有可能可以找到我们需要的信息——找到它可能是一个小问题。例如,如果我想查看有关passwd文件的手册页,我在终端中输入:manpasswd我将看到包含有关passwd命令的所有信息的手册页,但没有关于passwd文件的信息。我知道passwd是一个命令,并且有一个passwd文件,但有时,我可能会忘记这一点。就在那时我意识到文件结构位于手册页的不同部分,所以我输入:man4passwd我得到了这个回复:Nomanualentryforpasswdinsection4See'man7undocumented'forhelpwhenmanualpages无法使用。另一个健忘的失误。文件结构位于SystemVUNIX页面的第4部分。多年前,当我构建文件时,我经常使用man4...;这仍然是我的习惯。那么它在Linux手册中的什么位置呢?是时候打电话给whatis来纠正我了。为此,我在终端中键入以下内容:whatispasswd,然后我看到以下内容:passwd(1)-更改用户密码passwd(1ssl)-计算密码哈希值passwd(5)-密码文件啊!passwd文件的页面在第5部分。现在没问题,可以访问我想要的信息:man5passwd,我被带到包含我需要的信息的手册页。whatis是一个方便的工具,可以用一个简短的句子告诉您命令的作用。想象一下,您想在不查看手册页的情况下了解cal的作用。只需在命令提示符下键入以下内容。whatiscal您将看到以下响应:cal(1)-显示日历和复活节日期现在您知道了whatis命令,我可以告诉您一个秘密-有一个与man命令等效的命令。为此,我们使用-f开关:man-f....试一试。在终端提示符下键入whatiscal。执行后输入:man-fcal。这两个命令的输出将是相同的:whatiscal和manfcal的输出是相同的whereiswhereis命令的名称说明了一切-它告诉您程序在文件系统中的位置。它还会告诉您手册页的存储位置。再次以cal为例,我在提示符下输入以下内容:whereiscal我看到了:whereiscaloutput仔细看看这个答案。答案在一行中,但它告诉我两件事:/usr/bin/cal是cal程序所在的位置,而/usr/share/man/man1/cal.1.gz是手册页所在的位置(我的也知道手册页是压缩的,但别担心-man命令知道如何即时解压缩它们)。whereis依赖于PATH环境变量;如果文件在您的PATH环境变量中,它只能告诉您文件的位置。您可能想知道是否存在与whereis等效的man命令。没有一个命令可以告诉您可执行文件的位置,但是有一个开关可以告诉您手册页的位置。在这个例子中使用date命令,如果我们在终端提示符下输入:whereisdate,我们将看到:whereisdate输出我们看到date程序在/usr/bin/目录中,其man的名称和位置页面是:/usr/share/man/man1/date.1.gz。我们可以让man表现得最接近whereis的是使用-w开关。我们不会得到程序的位置,但我们至少可以得到手册页的位置,像这样:man-wdate我们会看到这个返回:你知道whatis和whereis,让man命令做相同(或接近)的事物方式。出于几个不同的原因,我展示了这两种方法。多年来,我一直使用whatis和whereis,因为它们在我的培训手册中。我直到最近才了解man-f...和man-w...。我敢肯定我已经看过数百次手册页,但我从未注意到-f和-w开关。我一直在查看其他内容的手册页(例如:man-k...)。我只专注于我需要找到的东西而忽略其余部分。一旦我找到我需要的信息,我就离开页面并完成工作,而没有注意这个命令必须提供的其他一些精华。没关系,因为这就是手册页的用途:帮助您完成工作。直到最近,当我向某人展示如何使用手册页时,我才花时间阅读它——“看看还有什么可能”——我们才真正注意到有关-f和-w标志的信息man命令可以做到。无论您使用Linux已有多长时间,或者您的经验有多么丰富,总有一些新东西需要学习。手册页告诉您完成某项任务可能需要了解的内容——但它们也很多——足以让您看起来像个魔术师,但前提是您花时间阅读它。结论如果您在手册页上花费一些时间和精力,您就会成功。您对手册页的熟练程度将对您掌握Linux发挥巨大作用。