需要更多信息?
您是否曾在阅读 man 手册时遇到过类似“另请参阅 info 中的 gdb 条目”的内容,并想知道它是什么意思? 仍然感到困惑,您是否拿起 运行 Linux 或 Unix 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 手册一样易于阅读。
此时,您可能希望查看参考卡,并在记住这些基本命令的情况下,尝试在您的 Linux 系统上导航 info。只需在提示符下输入 info 并开始阅读。我建议在目录节点输入 h,并首先完成在线教程。整个课程只需大约半小时。我发现唯一令人困惑的点是 info 文件只能从 Emacs 中打印(M-x print-node 选项)。教程和 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 会找到新的文档,无需进一步调整。
