Linux info 命令:阅读 GNU 手册、导航节点与搜索索引

info 用于在终端中阅读 Info 格式的手册,常见于 GNU 软件。它把文档组织为节点、菜单、交叉引用和索引,适合沿章节深入阅读;需要快速查语法与选项时,也可以配合 man 手册查询命令使用。

GNU Coreutils 等项目的 Info 手册往往提供较完整的背景、选项关系和示例。本文介绍如何打开文档、移动节点、搜索正文与索引、定位文件以及处理文档缺失;按键和选项以独立运行的 GNU Info 为准,不适用于所有其他 Info 阅读器。

info 命令是什么?

Info 是 Texinfo 文档系统的一种输出格式,info 是读取这种格式的文本界面程序。手册通常安装在 /usr/share/info 等目录,一份手册可以包含多个节点,也可能拆成若干物理文件。节点是逻辑阅读单元,不等于一个终端屏幕或一个磁盘文件。

菜单连接下级主题,交叉引用连接相关节点或其他手册,索引则把术语引向对应解释。只有软件实际提供并安装了文档,阅读器才能显示它;安装可执行程序不代表相应手册也已安装。

基本语法与启动方法

以下是语法示意,方括号表示可选内容,省略号表示可重复指定;不要把这一整行当作实际命令复制执行。

info [options...] [manual] [menu-or-index-item...]

不带参数运行时,Info 会合并搜索路径中的 dir 文件,显示已注册手册的顶层目录菜单。

info

Info 的一般使用指南与独立阅读器的详细手册可分别这样打开,前提是这些文档已安装:

info info
info info-stnd

指定程序或手册名称时,Info 首先查找目录条目,进入条目指向的文件和节点;没有对应条目时,还会尝试在搜索路径中寻找同名手册文件。

info ls
info coreutils

info ls 通常进入 Coreutils 手册里的 ls 节点,而不要求存在独立的 ls.info。目录条目可以直接指向一本手册中间的节点,因此实际起始位置取决于本机文档和目录注册情况。

理解 Info 文档的结构

术语 含义
节点(Node) 手册的逻辑单元,常对应一章或一节;内容可能超过一屏。
菜单(Menu) 从当前节点进入下级主题或相关条目的列表。
交叉引用(Xref) 指向其他节点或其他 Info 手册的链接。
目录节点(Directory Node) 汇总、分类本机已注册手册的顶层菜单。

节点顶部可能显示文件名、节点名以及 Next、Prev、Up 等指针,底部模式行显示当前手册、节点和阅读位置。节点的先后关系、层级关系与访问历史是不同概念,移动时需要选择对应的命令。

翻屏与节点导航的常用按键

下表采用 GNU Info 默认键位。个人配置和 --vi-keys 会改变部分绑定,终端也可能影响 Backspace、Delete 或 Shift+Tab 的传递方式。

按键 作用
Space 向后翻一屏;到达节点末尾后可以继续到后续节点。
Backspace、Delete 向前翻屏;通常对应终端发送的 DEL,节点开头也可能继续向前浏览。
n 进入当前节点的 Next 指针所指向的节点。
p 进入 Prev 指针所指向的节点。
u 进入 Up 指针所指向的上级节点。
t 回到当前 Info 文件的 Top 节点。
d 显示汇总手册的目录节点。
l 按访问历史回到先前阅读的节点。
m 输入当前节点中的菜单条目名称并打开它。
Tab、Shift+Tab 把光标移到下一个或上一个菜单条目或交叉引用。
Enter 打开光标所在的菜单条目或交叉引用。
H 打开基本键位的简短帮助窗口。
h 进入介绍 Info 使用方法的帮助节点。
q 退出 Info。

初次使用可以先打开 info info-stnd,按大写 H 查看键位,再用 Space 和 Backspace 阅读。某个节点没有相应的 Next、Prev 或 Up 指针时,不能假定该方向一定可跳转。

沿菜单与交叉引用阅读

用 Tab 和 Enter 选择链接

当屏幕上有菜单或交叉引用时,先按 Tab 把光标移动到目标,再按 Enter 打开。Shift+Tab 返回前一个可选条目。这种方式不要求记住节点名称,适合先探索文档结构。

用 m 输入菜单名称

按 m 后,在底部输入区输入菜单条目的名称;可以输入部分名称,再用 Tab 补全或查看候选,确认后按 Enter。该命令选择的是当前节点菜单中的条目,不能把任意正文词语都当作菜单名。

跟随链接之后要回到先前节点,用 l;要进入文档结构上的上级节点,用 u。前者依赖访问历史,后者依赖节点的 Up 指针,两者并不总会到达同一位置。

搜索正文、当前索引与全部索引

搜索正文内容

按 s 或 /,输入模式并按 Enter,在当前 Info 文件中向后搜索,可以跨越节点。GNU Info 默认按扩展正则表达式解释搜索内容;想把点号、星号等作为普通字符查找时,可按大写 R 切换正则表达式与字面量搜索,具体状态以当前界面为准。

默认情况下,搜索模式含大写字母时区分大小写,否则忽略大小写。? 向前搜索;Ctrl+s 和 Ctrl+r 分别执行向后与向前的增量搜索,边输入边定位。若终端截获控制键,可改用 s、/ 或 ?。

重复同一正文搜索可按 s 后直接按 Enter,沿默认模式继续;也可使用 } 查下一个、{ 查上一个匹配项。默认键位中的 n 是节点导航,不能套用 less 的搜索习惯。

用索引寻找主题

按 i 输入术语,Info 会查当前手册的索引,并跳到第一个匹配条目所指向的节点;随后按逗号 , 查看下一个匹配条目。索引适合查找概念名或选项名,但是否能找到,取决于作者是否建立了相应索引。

大写 I 会把匹配的索引条目汇总到临时生成的虚拟节点中,方便比较后选择。它与小写 i 的呈现方式不同,也不是扫描所有已安装手册。

搜索本机可找到的全部 Info 索引

不知道主题属于哪本手册时,在 Shell 中使用 -k 或 --apropos。结果写到标准输出后程序退出,搜索范围是 Info 能找到的本机手册索引,不是互联网,也不是所有文档的全文;手册较多时可能需要等待。

info -k permissions
info --apropos='regular expression'

直接打开指定手册与节点

按手册名或程序名打开

下面的命令打开 Coreutils 手册的入口;它没有要求把整本手册一次显示在同一屏幕。

info coreutils

如果本机安装了 Coreutils 的 Info 文档并正确注册相应目录条目,也可以按程序名进入对应说明。仅安装 Coreutils 的可执行文件并不足以保证这些命令能找到文档。

info ls
info cp
info date

明确指定节点名称

-n 或 --node 指定初始节点。节点名带空格时需要引号,确保 Shell 把它作为同一个参数传入。

info coreutils -n 'ls invocation'

也可以把 (手册名)节点名 整体作为参数传入。括号和空格都应放在引号内,避免被 Shell 当作语法解释。

info '(coreutils)ls invocation'

这两个例子都以文档中存在 ls invocation 节点为前提。名称可能随版本或文档翻译变化;找不到时,先用 info ls、菜单或索引确认实际名称,再指定 -n。

查找命令行调用说明

-O、--show-options 与 --usage 用于查找介绍程序调用方法的节点,程序名来自其他非选项参数。

info ls -O
info --show-options coreutils

能否定位取决于手册结构;info --show-options coreutils 不是列出所有 Coreutils 命令的选项集合。若找不到合适节点,直接打开手册,再通过菜单或 i 查相应程序。

常用命令行选项

下表概括 GNU Info 的常用选项,完整支持范围应以本机 info --help 和 info info-stnd 为准。

选项 含义
-k 字符串、--apropos=字符串 查找本机可发现的全部 Info 手册索引。
-n 节点、--node=节点 指定初始节点。
-f 手册、--file=手册 直接选择手册文件,跳过 dir 目录条目名称查询;非路径名称仍可利用搜索路径。
-w、--where 输出将读取的文档文件位置后退出。
-d 路径、--directory=路径 增加文档搜索目录,可重复使用。
-o 文件、--output=文件 把所访问节点的内容输出到文件,替代交互阅读。
--subnodes 配合 --output 递归输出菜单里的下级节点。
-O、--show-options 尝试定位介绍程序调用方法的节点。
--vi-keys 改用接近 vi 和 less 的部分键位。
--version 显示 Info 版本并退出。

查看文档位置与导出文本

确认实际读取的文件

-w 输出 Info 将选择的文件名,适合确认同名手册来自哪个搜索目录;文件路径、压缩后缀和拆分形式随安装方式而异,不应照搬其他机器的绝对路径。

info -w coreutils

GNU Info 也支持与 --all 组合,列出所有匹配的文件。它不能与 --node 一起使用。如果输出中出现 *manpages*,说明涉及 man 页面回退,不能把它当作已找到原生 Info 文件。

info --all --where coreutils

把节点导出为文本

下面的命令把 Coreutils 起始节点及菜单连接的下级节点递归输出到当前目录的 coreutils.txt。先确认当前目录可写,已有同名文件需要保留时应更换输出文件名;导出完成后可用文本阅读器检查章节与内容是否覆盖所需范围。

info --subnodes -o coreutils.txt coreutils

--subnodes 不会导出指向其他 Info 文件的菜单项,也不把索引菜单所指向的每个条目都当作递归目标,每个节点仅输出一次。因此导出的文本不是整个文档链接网络的完整备份。

输出文件写成 - 表示标准输出,可以连接到 less:

info -o - coreutils | less

这个显式 -o - 示例没有 --subnodes,主要输出选中的节点,不应期待它一定包含整本手册。若要递归导出,应明确加上 --subnodes;只需要某一节时可配合 -n,减少输出量。在 GNU Info 中,完全不指定输出选项而直接把输出接到管道时,还会触发非交互输出及其递归行为,不能把两种形式混为一谈。

打开本地文件与调整搜索路径

直接打开本地 Info 文件

以下是路径用法示例,需要先有相应的 project.info 文件。路径中含有斜杠时,Info 只在指定位置寻找目标文件,并把该目录加入文档搜索路径。

info ./project.info
info -f ./project.info

GNU Info 还能读取支持的压缩格式,但对应的解压程序也必须可用。-f 表示跳过顶层目录条目查询,并不意味着任意输入都不再使用搜索路径;只有明确给出目录的路径才限定文件位置。

增加额外的搜索目录

软件文档装在系统默认目录之外时,可以用 -d 临时增加搜索位置。下面的 /opt/example/share/info 与 example 是需要替换的示例值。

info -d /opt/example/share/info example

长期使用的搜索目录还受 INFOPATH 影响,可先查看当前变量与实际查找结果。变量为空不等于完全没有默认路径。

printf '%s\n' "$INFOPATH"
info -w info-stnd

在 Linux 上,INFOPATH 一般以冒号分隔目录,末尾的冒号可追加构建时默认路径列表。GNU Info 还会加入构建时定义的默认文档目录,除非另行启用 infopath-no-defaults。因此修改后应重新核对 info -w 的结果,而不是仅凭变量字面值判断文档来源。

info 与 man 有什么区别?

比较项 info man
文档结构 以节点、菜单、交叉引用和索引连接的手册。 通常按一个手册页线性阅读,也可包含相关引用。
适合的任务 深入理解背景、章节、长示例与概念关系。 快速查询语法、选项、文件和退出状态。
常见对象 GNU 软件及其他提供 Texinfo/Info 文档的项目。 命令、配置文件、系统调用、库函数等。
导航方式 节点与菜单导航、正文搜索、索引查询。 分页器翻屏与字符串搜索等,依实现而异。
安装条件 软件可能没有提供或安装 Info 文档。 相应手册页也可能需要单独安装。

二者可以互补使用。Info 不天然比 man 更准确或更新,man 也不必然比 Info 简短;应查看项目把哪种文档作为主要依据,并核对它与当前安装程序的版本是否一致。

info 不存在或找不到文档时怎么办?

安装阅读器

最小安装环境可能没有 info。Debian、Ubuntu 常用下面的 APT 命令,第一行更新软件包索引,第二行安装阅读器;需要管理员权限,并以仓库提供该包为前提。

sudo apt update
sudo apt install info

Fedora、Rocky Linux 等 DNF 系统通常使用下面的命令。它与上面的 APT 示例是不同发行版的选择,不要在同一系统上依次照做。

sudo dnf install info

Debian 与 Fedora 的官方包信息均列出 info 阅读器;具体发行版、版本、仓库和包拆分仍应以本机包管理器查询为准。不要仅因为阅读器安装成功,就认定其他程序的 Info 文档已经齐全。

确认目标软件的文档包

先看目录菜单、索引搜索和文件位置。以下以 Coreutils 及权限主题为具体例子;实际诊断其他程序时,把手册名和搜索词换成对应值。

info
info -k permissions
info -w coreutils

若文件不存在,应在发行版仓库查找目标程序的文档包;程序本体和文档可能分包发行。-k 没有结果也可能只是该术语没有索引条目,不能单凭这一点断定文档未安装。

文件存在但目录菜单没有条目

可以先增加文档目录或直接指定文件。下面的目录、手册名和文件名均为占位示例,必须替换为本机实际存在的值。

info -d /additional/document/path manual
info -f /full/path/manual.info

如果从源码安装软件,还应查看安装过程是否更新了 Info 的 dir 目录文件。先核对文件能否直接打开、安装记录和项目说明,再考虑目录注册问题;不要为了让条目出现就随意改写系统共享目录文件。

一套实用的阅读顺序

  1. 用 info 程序名 确认相关手册能够打开,先核对实际文档名称。
  2. 按 H 查看当前键位,再用 Space、n、p、u 理解节点关系。
  3. 用 Tab 与 Enter,或 m 输入菜单名,进入需要的主题。
  4. 已知术语时用 i 查询索引,查正文模式时用 s 或 /,需要字面量时确认 R 的搜索模式。
  5. 不知道手册归属时,回到 Shell 用 info -k 搜索词 查询可发现的索引。
  6. 经常阅读的位置可用 -n 直接打开;导出时先确认目标文件与是否需要 --subnodes。

常见问题

如何退出 info?

默认按 q 退出。不确定键位时,可按大写 H 查看当前帮助。

为什么按 n 后没有进入下一个搜索结果?

GNU Info 默认的 n 跟随 Next 节点指针。正文重复搜索可用 } 或 s 后按 Enter;i 索引搜索后的下一个匹配项则用逗号。启用 --vi-keys 后应重新查看键位。

info ls 与 info coreutils 的起点相同吗?

通常前者经 ls 目录条目进入具体命令说明,后者进入 Coreutils 手册入口。实际起点由本机目录条目和文档版本决定,不能保证每台系统完全相同。

所有 Linux 命令都有 Info 文档吗?

没有。Info 在 GNU 项目中很常见,但其他项目可能只提供 man 页面、--help 或网页说明,应按项目实际提供的文档查询。

Info 一定比 man 更准确吗?

不一定。文档的权威性和更新频率由项目决定,优先核对项目的官方文档指引以及与已安装程序的版本匹配情况。

如何选择合适的查询方式

只需查看简短用法时,可先用程序的 --help 或 man;需要理解背景、完整章节和选项关系时,再进入 Info 手册。先掌握 H、Space、n、p、u、i 与 q,就能逐步熟悉它的阅读方式。其他常用命令的用途可在Linux 常用命令分类与参考中按任务查找。

参考资料