如何使“man”实用程序像 ss64.com 一样全面?

如何使“man”实用程序像 ss64.com 一样全面?

Debian 发行版附带的“man”实用程序并不像 ss64.com 那样全面,在 cygwin 这样的环境中更是如此。有没有软件或脚本可以让我的“man”更像 ss64 页面? ss64.com 包含许多不同环境的命令行参考,包括 Windows CMD 和 Mac OS X 以及 bash。我有一个例子是手册页

编辑:生活黑客网,我发现了以下函数:

man () { /usr/bin/man $@ || (help $@ 2> /dev/null && help $@ | less) }   

帮助实用程序为我提供了我正在寻找的页面 - 但它并没有绕过read.

答案1

有一个手册页read(在手册的第 1 节中),其中包含除“没有read命令,但您的 shell 可能有read内置命令,有关详细信息,请参阅您的 shell 手册”具有误导性,因为它read是 shell 内置的,并且行为和支持的选项因 shell 而异。

然而,某些系统(通常不是 Linux 系统)确实有POSIX 要求的read命令(在/bin/usr/bin其他地方)(但 Linux Standard Base (LSB) 规范取消了该要求),并且在这些系统上,手册页将描述 read命令,并且会产生误导,因为它通常不是 readread当您在 shell 提示符下或在 shell 脚本中或在system(), ... 中调用时调用它,popen()但 shell 内置的。

http://ss64.comsite 描述了bash内置read命令(尽管它没有说明是哪个版本bash,例如,它与本机上read的版本中的内置命令不同,它本身也与我可以访问的另一台(旧)计算机的内置命令bash不同到)在一个部分。在这方面,它并没有误导性,但它非常具有误导性的地方在于它把各种readbashbash其他与 bash 无关的命令同一段并且有点暗示bash(Linux 和其他 Unices 上可用的许多 shell 之一,shell 是运行命令的多种方式之一)是运行这些命令所必需的,或者这些命令与之有任何关系。

现在,当您这样做时,如果手册的第 1 部分(用户命令)中man read没有命令,它将在其他部分中搜索。read例如,如果您已经安装了该manpages-dev软件包(在 Debian 上),您将获得系统调用的手册页read(在第 2 节中)。如果没有,但您已经安装了 TCL 文档包,您将read在 部分中获得 TCL 功能的手册页3tcl

您可以使用(在某些系统上)明确请求read用户命令。如果您的手册有一个章节,它会将其显示在 节 中的章节之前,因此您需要编写它才能获取变体。您可以使用 获取所有手册页,您可以使用以下命令了解它们来自 Debian 上的哪些软件包:。例如,在这个系统上,我有:man 1 readman -s 1 read1bash1zshman 1zsh readzshman -a readdpkg -S $(man -wa read)

$ dpkg -S $(man -wa read)
9base: /usr/share/man/man1/plan9-read.1.gz
tcl8.5-doc: /usr/share/man/man3/read.3tcl.gz
manpages-dev: /usr/share/man/man2/read.2.gz

使用 时zshAlt-H在提示符下按会显示man您当前正在键入的命令的手册(通过命令)。 Debian 上的默认zsh安装对其进行了改进,以利用该run-help功能(请参阅 参考资料info -f zsh --index-search=run-help),因此您也可以获得内置程序的帮助。

对于fishshell,有一个help内置函数尝试为给定的命令或fish概念(来自man文档fish)提供最明智的文档。

如果由于某种原因,您被迫使用bash(咧嘴笑)或者懒得更改默认值,bash还有一个help内置命令可以为内置命令带来帮助bash(但请注意,help read就像help '*read*',它带来了手册例如,如果您只需要手册read,则使用名称包含的所有内置函数)。help '[r]ead'read

bash的帮助仅适用于bash内置函数。如果您想将其扩展为在手册第 1 节(用户命令)、第 6 节(游戏)和第 8 节(管理命令)中包含搜索,您可以将其重新定义为:

help() {
  builtin help "$@" 2> /dev/null ||
    MANSECT=1:8:6 man "$@"
}

答案2

“你好,SS64 的作者,5 年后我偶然发现了这个问题。上面的其他答案中有一些很好的观点,我重新措辞了索引页和许多单独的页面,以便更清楚哪些是内置 bash 命令,哪些是通用实用程序。

另外,我同意其他人的观点,即没有任何在线参考可以替代内置手册页。能够在线搜索并找到您需要使用的命令很有用,但检查它们是否与您自己的机器的语法匹配总是明智的。

要回答这个问题,改进本地手册页的最佳且最持久的方法可能是为Linux 文档项目

我长期以来一直认为 Linux 可以使用“开箱即用”的 HTML 手册页,而 ubuntu 正在这样做一些工作关于这一点。

答案3

正如 Stephane 所暗示的,偏爱在线手册页的一个潜在陷阱是,它们记录的软件版本比您所拥有的旧版本或新版本。仅出于这个原因,我认为开始是一个非常糟糕的做法替换与你喜欢的,因为在未来的某个时刻,可能会有一些关于版本的微妙之处,这很重要——如果你无意中用信息丰富的文档替换了官方文档,情况可能会变得非常复杂不正确文档。

我没有使用过 ss64.com,但它看起来确实是某些事情的不错的参考;我认为它实际上是为了瞄准西格温用户作为“bash”类别实际上是 bash 内置命令和常见 UNIX 命令的混搭。由于后来技术上已经与bash无关,这使得该网站的内容可能具有误导性,但从 cygwin 的角度来看,这是有意义的。

我确实同意 linux 上的 GNU 手册页(我认为这些手册也与 cygwin 一起提供)有时不如其他手册页——例如,POSIX页面通常比第 3 节中的内容更深入,并且由于 linux 符合 posix,所以我认为它们是有效的。但我仍然不会用它们替换我的系统页面——这有什么意义呢?

所有这些都是有效互补的;您的系统页面就是这样。如今,大多数人都拥有持续的高速互联网连接,并且实际需要花费的时间一份文档使通过网络访问所需的时间相形见绌。然而,有时我会做镜像网站,我发现这些网站非常有用,所以手头有它们就太好了:

wget -r -np -k -p http://www.site.com/dir/page.html

该地址是文档的顶级索引,因此例如。 “ss64.com/bash/”可能会起作用。这些开关在 中进行了描述man wget。因此,您将该网站下载到本地目录,在浏览器中将其添加为书签或创建此类索引,然后就完成了。

相关内容