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


9

使用Linux已有多年,我突然发现我不知道如何man正确使用该命令。众所周知,可以键入q以退出手册页,/进行搜索等。但是,我不知道这些文件记录在哪里。我尝试了man man man -a man info man谷歌搜索,没有运气。

请指向我正确的位置以查找此信息,即使该信息输入正确man man并且我恰好忽略了它,也很好,请告诉我。

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


手册页不是只在浏览less吗?(至少在我的发行物中,并h显示了less命令摘要)
Rastapopoulos

@Rastapopoulos 不只是在查看手册页less吗?因为less不是一个标准工具。
安德鲁·亨利

我想您可以使用readlink -f /usr/bin/pagerreadlink -f $(which pager)来查找您所拥有的寻呼机(默认情况下/bin/less)而不是man所使用的寻呼机。它可能(应该)直接运行man pager
Hastur

2
如果使用more或阅读手册页less,则可以输入h帮助。(或者您可以只使用emacs...)
Alex Vong

1
如果在寻呼机提示下键入?h,它应该给您命令列表。
Barmar

Answers:


11

确实在手册页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
jdebp%

所以,一个咨询谁他们各自的手册页如何从键盘驱动它们,根据该替代已被选定。有用的是,Debian替代系统使手册页与所选命令保持同步,因此阅读此手册页非常简单:

传呼机


5

男人用寻呼机显示内容。

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

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

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

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

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

man man详细阅读


谢谢您的回答。虽然答案确实说明了man工作原理,但我想问您是否可以帮我指出出现这种情况的正确位置。谢谢。

在我的man man输出(再次,man版本:2.6.3)中,它指出“默认情况下,使用的-s较少。”,所以我希望这取决于版本和系统吗?

1
这只是标准Unix哲学的一个例子:小的和简单的命令可对文本流进行操作,并且可以完成一件事并很好地完成。格式化手册和进行分页是件事,这就是为什么它们由两种不同的工具执行的原因。这样,可以将分页工具重新用于其他任务,而不仅用于显示手册页。
约尔格W¯¯米塔格

2

感谢@Rastapopoulos,我在“ 环境”部分的一个旧Linux盒(版本:1.6f)上找到了与lessin 相关的行,man manman

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

但是,在较新的版本(man版本:2.6.3)上,此行已替换为

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

基于这些信息,我认为它less默认情况下是格式化的(至少对于第一种情况)。但是,即使是这种情况,它的记录方式对我来说似乎也不是很清楚(或者我man以错误的方式学习了该命令)。


2

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

POSIX标准的非Linux特定答案可以在POSIX man文档中找到:

名称

man - display system documentation

概要

man [-k] name...

...

环境变量

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

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

LC_ALL

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

LC_CTYPE

确定将文本数据的字节序列解释为字符的语言环境(例如,参数和摘要数据库中的单字节而不是多字节字符)。LC_CTYPE的值不必影响有关名称操作数的信息的格式。

LC_MESSAGES

确定应该用于影响写入标准错误的诊断消息和写入标准输出的信息消息的格式和内容的语言环境。

NLSPATH

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

帕格

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

请注意RATIONALE节,其中描述了为什么man未完全指定:

理据

公认的是,man实用工具仅具有指定的最小用途。标准开发人员对于需要提供多少信息的意见分歧很大。但是,他们认为,提供一些可移植的文档访问方式将有助于用户的可移植性。反对更完整的规范的论点是:

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

  • 当前的手动系统不能以极大地帮助用户携带的方式来显示信息。

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

考虑了-f选项,但是由于实现上的差异,因此未将其包含在POSIX.1-2008的此卷中。

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

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

有关默认分页器的基本原理,请参见mailx

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

以前的MANPATH变量未包含在POSIX中,因为没有尝试为参考页文件指定命名约定,甚至也没有要求它们是文件。在某些实现中,它们可以是真实的数据库,超文本文件,甚至可以是man可执行文件中的固定字符串。标准开发人员认为参考页的可移植性超出了他们的工作范围。但是,用户应注意,MANPATH是在许多历史系统上实现的,并且当系统管理员使用时,MANPATH可用于为各种类别(实用程序,功能,文件格式等)的参考页面量身定制搜索模式。显示系统上参考页的位置和约定。

...

mailx页面上的分页器原理讨论:

未部分指定PAGER为null或未设置时选择的分页器,以允许System V沿用pg作为默认值的历史惯例。绕过分页功能(例如通过声明cat是分页器)不会符合本描述的预期含义。但是,任何“便携式用户”都必须明确设置PAGER才能在所有系统上获得其首选的分页器。与VISUAL编辑器选择(强制为vi)不同,对分页器的选择在某种程度上未指定,因为大多数历史寻呼机都遵循用户输入的通用主题,而编辑器则有很大不同。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.