需要更多信息?

作者:Bill W. Cunningham

您是否曾在阅读 man 手册时遇到过类似“另请参阅 info 中的 gdb 条目”的内容,并想知道它是什么意思? 仍然感到困惑,您是否拿起 运行 LinuxUnix Unleashed,却找不到一个关于 info 的词? 如果是这样,那么本文正适合您。

背景

info(信息)是 GNU 项目的超文本系统,填补了 man 手册和印刷参考书之间的空白。info 是 info 文件的查看器。无需赘述,info 文件是严格格式化的文本文件,它们通过 texinfo 程序处理,然后由 makeinfo 编译。它们最终以 gzip 格式存在,通常位于 /usr/info/(至少在 Slackware 96 上是这样)。info 程序的工作是解压缩它们并将它们呈现给读者。Info 文件也可以用 Emacs 查看,但本文将仅关注独立的 info 程序。

info 文件构成了一个交叉引用的虚拟文档层次结构。此层次结构的顶部是目录节点。如果您在命令提示符下不带参数运行 info,目录节点将在您的控制台上打开。目录节点充当您计算机上所有 info 文档的主索引,并提供进入所有其他文件的入口点。也可以直接访问这些文件,而无需先转到目录节点。例如,我可以在我的提示符下键入 info make,直接转到 make 的文档。

info 的文档分为节点——基本上类似于段落的结构。一个节点可以是一个简短的句子或几个屏幕。节点物理上存储在文件中。info 程序允许节点之间的交叉链接和垂直链接。一旦进入 info,您就可以在节点之间随机搜索数据,或者您可以快速查找并转到特定信息。文档的详细程度随着您在层次树中向下移动而增加。在任何给定的详细程度级别,您可以关注交叉引用到大致相同详细程度级别的相关主题。

当然,必须有人编写文档才能使其可用,并非所有 Linux 软件都有可用于 info 的数据。大多数 info 数据涉及 gcc、g++、gdb、make 以及与编程和系统管理相关的其他主题。换句话说,存在大量旧软件的 info 文档;这很有道理,因为 info 已经存在一段时间了。研究这些领域的用户很幸运,因为他们会发现一个信息金矿,它像 man 手册一样易于阅读。

动手实践

GNU Info 基本参考卡

此时,您可能希望查看参考卡,并在记住这些基本命令的情况下,尝试在您的 Linux 系统上导航 info。只需在提示符下输入 info 并开始阅读。我建议在目录节点输入 h,并首先完成在线教程。整个课程只需大约半小时。我发现唯一令人困惑的点是 info 文件只能从 Emacs 中打印(M-x print-node 选项)。教程和 info 手册都没有明确说明这一点,但我发现这是事实。

新的 Info 文件

当您获得一个新的软件包(例如 mgetty),其中包含几个 info 文件作为其原生文档的一部分时,会发生什么情况?您可以将这些文件留在原处,并接受您必须运行 info mgetty 才能查看它们的事实。或者,您可以将新文件安装到现有的层次结构中。您甚至不必将它们移动到默认的 info 目录。

首先,记下新 info 文件的位置。我将以 mgetty 为例。这些文件安装在 /usr/local/info/ 中。在这种情况下,主 info 文件名为 /usr/local/info/mgetty.info。主 info 文件始终以 .info 后缀结尾。

接下来,将 mgetty 的条目添加到 info 的目录文件中。为此,以 root 身份编辑文件 /usr/info/dir。向下移动到新条目的适当位置。我选择了“杂项命令和文档”,即倒数第二个部分。dir 文件中的菜单条目由三个部分组成。第一个是菜单条目名称,以星号开头,后跟一个冒号。第二个是括号中的菜单文件名,后跟一个句点。(此处不需要 .info 后缀,即使它是实际文件名的一部分。)第三部分是软件包描述,其中包含 mgetty 的以下条目

*mgetty:        (mgetty).       mgetty documentation.

将此行添加到 /usr/info/dir 文件并退出保存文件。最后,info 必须能够找到 mgetty 的 info 文件,因为它们不在默认目录 /usr/info/ 中。虽然我们可以在条目的第二部分中指定 (/usr/local/info/mgetty),但这会使 dir 文件变得非常难看。最美观的解决方案是设置 INFOPATH 变量。INFOPATH 中的目录由 info 程序搜索数据文件。因此,添加行

export INFOPATH=/usr/info:/usr/local/info
到 /etc/profile,在下次登录时,所有用户都将能够访问 mgetty 的 info 文档,就像它一直都是层次结构的一部分一样。如果 mgetty 曾经升级过——没问题——info 会找到新的文档,无需进一步调整。
建议

我希望节点内的移动能够响应向上翻页和向下翻页键。这对大多数人来说会更直观。颜色语法高亮也可能是一个不错的点缀。基本上,info 现在这样工作就很好。

结论

如果您习惯了 HTML 和 Netscape 意义上的超文本,那么 info 相比之下可能显得简陋。事实上,现在很多文档都是 HTML 格式,info 可能会在 Netscape 的浪潮中悄然消失。但请记住,info 的 man 手册首次版权注册于 1989 年——远早于现在意义上的超文本出现。对于一个已经存在 10 年的纯 ASCII 系统来说,它做得相当不错。

Need More Info?
Gunnery Sergeant Bill Cunningham,美国海军陆战队,于 1991 年获得计算机科学学士学位。他是巴拿马运河区海军陆战队南部的 LAN 主管。在他的闲暇时间,他与他的 3 个可爱的孩子玩耍,并帮助他出色的(且即将临盆的)妻子捡起掉到院子里的椰子。可以通过电子邮件 bill@lancomm.mfs.usmc.mil 联系他。
加载 Disqus 评论