手册页窗口中可用的命令记录在哪里,这些命令是否依赖于系统?

手册页窗口中可用的命令记录在哪里,这些命令是否依赖于系统?

使用 Linux 多年后,我突然发现我不知道如何man正确使用命令。众所周知,可以键入q退出手册页、/搜索等。但我不知道这些记录在哪里。我试过man man man -a man info man用谷歌搜索,但没成功。

请指出我要查找此信息的正确位置,即使它是正确的man man而我碰巧忽略了它,也完全没问题,只需告诉我即可。

这些命令对于不同的操作系统或不同的 Linux 发行版是否有所不同?

答案1

它确实位于 的手册页中man,在“控制格式化输出”小标题下,并在稍后的“环境”部分中重复以达到良好的效果:

默认情况下,man 使用pager -s.
手册页解释了环境变量和命令行选项(PAGERMANPAGER--pager)的层次结构如何用于覆盖默认值。

这就是它在 Debian Linux 等系统上的读取方式。相比之下,在 Oracle Linux 等系统上,该man-db软件包是使用不同的默认值构建的,但是仍然反映在手册页的相同位置:

默认情况下,man 使用less -s.

man-db软件包会在编译时尝试自动检测要内置到命令中的默认分页器,并在其手册页中记录lessmorepager

在 Debian Linux 等系统上,该pager命令是“替代”系统的一部分,可以映射到几个实际命令之一:

jdebp % update-alternatives --list 寻呼机
/bin/更少
/bin/更多
/usr/bin/pg
/usr/bin/w3m
净水量 %

于是有人咨询他们的有关如何从键盘驱动它们的相应手册页,根据选择的替代方案。有用的是,Debian 替代系统使手册页与所选命令保持同步,因此阅读本手册页非常简单:

寻呼机

答案2

男子使用寻呼机来显示内容。

确切的详细信息取决于man您使用的版本。

对于许多系统上使用的版本:

  • 如果给出了该选项-p pager,则使用该寻呼机。
  • 否则,如果设置了环境变量,MANPAGER则会使用它。
  • 否则,如果PAGER设置了,则使用它。
  • 否则默认使用/usr/bin/less

如果手册页是 HTML 格式,则BROWSER使用 代替MANPAGER/PAGER

Debian 使用man-db具有不同的默认值。

阅读man man详情

答案3

感谢@Rastapopoulos,我在旧的 Linux 盒子(版本:1.6f)上找到了与lessin相关的行man manman环境一节指出,

浏览器用于显示 HTML 手册页的浏览器的名称。如果未设置,/usr/bin/less则使用。

然而,在较新的盒子(man版本:2.6.3)上,该行已被替换为

浏览器 如果设置了 $BROWSER,则其值是一个以冒号分隔的命令列表,每个命令依次用于尝试为 man --html 启动 Web 浏览器。在每个命令中,%s 被替换为文件?包含 groff 的 HTML 输出的名称,%% 替换为单个百分号 (%),%c 替换为冒号 (:)。

根据这些信息,我相信它是less默认格式化的(至少对于第一种情况)。然而,即使是这种情况,它的记录方式对我来说似乎并不清楚(或者我以man错误的方式学习了命令)。

答案4

对于各种操作系统,没有真正的方法可以完全回答您的问题,因为实现man并没有真正完全指定。

POSIX 标准、非 Linux 特定的答案可以在POSIXman文档:

姓名

man - display system documentation

概要

man [-k] name...

...

环境变量

以下环境变量将影响 man 的执行:

兰格

为未设置或为 null 的国际化变量提供默认值。 (有关用于确定区域设置类别值的国际化变量的优先级,请参阅 XBD 国际化变量。)

LC_ALL

如果设置为非空字符串值,则覆盖所有其他国际化变量的值。

LC_CTYPE

确定将文本数据字节序列解释为字符的区域设置(例如,参数和摘要数据库中的单字节字符而不是多字节字符)。 LC_CTYPE 的值不需要影响关于名称操作数写入的信息的格式。

LC_MESSAGES

确定应用于影响写入标准错误的诊断消息和写入标准输出的信息消息的格式和内容的区域设置。

NLS路径

确定用于处理 LC_MESSAGES 的消息目录的位置。

寻呼机

确定用于将输出写入终端的输出过滤命令。任何可接受作为 command_string 操作数的字符串 sh-c命令应有效。当标准输出是终端设备时,参考页输出应通过命令进行管道传输。如果 PAGER 变量为空或未设置,则命令应为more或系统文档中记录的其他分页器实用程序。

请注意 RATIONALE 部分,描述了为什么man没有如此完整地指定:

基本原理

人们认识到 man 实用程序仅具有指定的最低限度的用处。对于人们应该提供多少信息或应该提供多少信息,标准开发者的意见存在很大分歧。然而,他们认为提供某种可移植的文档访问方式将有助于用户的可移植性。反对更完整规范的论点是:

  • 在没有多余磁盘空间的系统上不需要大量文档。

  • 当前的手册系统没有以极大地帮助用户便携性的方式呈现信息。

  • 目前,“更好的帮助系统”是供应商认为可以为其 POSIX 实现增加价值的一个领域。

考虑了 -f 选项,但由于实现差异,它没有包含在 POSIX.1-2008 的本卷中。

描述已更改为更具体地说明实用程序必须显示的内容。标准开发人员认为,仅显示概要而不给出每个选项和操作数的作用的简短描述是不够的。

要包含在数据库中的“目的”条目可以类似于 POSIX.1-2008 本卷中每个实用程序的章节标题(减去数字前缀)。这些标题与历史系统中用于此目的的标题类似。

邮箱有关默认分页器的基本原理。

添加了 LC_CTYPE 描述中的警告,因为不要求实现为每个系统上所有受支持的语言环境提供参考页;更改 LC_CTYPE 不一定将参考页翻译成另一种语言。这相当于 POSIX.1-2008 中 LC_MESSAGES 的当前状态,特定于语言环境的消息还不是必需的。

历史 MANPATH 变量不包含在 POSIX 中,因为没有尝试指定参考页面文件的命名约定,甚至也没有强制要求它们是文件。在某些实现中,它们可以是真正的数据库、超文本文件,甚至是 man 可执行文件中的固定字符串。标准开发人员认为参考页的可移植性超出了他们的工作范围。然而,用户应该意识到,MANPATH 是在许多历史系统上实现的,并且当系统管理员显示系统上参考页面的位置和约定。

...

分页器基本原理讨论来自邮件页面:

当 PAGER 为空或未设置时选择的分页器部分未指定,以允许使用 pg 作为默认值的 System V 历史实践。绕过分页功能,例如通过声明 cat 是分页器,将不符合本描述的预期含义。然而,任何“便携式用户”都必须显式设置 PAGER 才能在所有系统上获取他或她首选的分页器。与 VISUAL 编辑器选择(强制为 vi)不同,分页器选择部分未指定,因为大多数历史分页器都遵循用户输入的共同主题,而编辑器则截然不同。

相关内容