阅读和搜索长手册页

hyd*_*yde 34 man search

我终于想了解当厌倦了庆典read,它的-s使用选项man bash。我最终找到了正确的位置(大约在第 4500 行),但这和往常一样令人沮丧,因为两者/read甚至/\s-s\s搜索都有太多匹配项。

所以,问题是:如何在本地有效地阅读长手册页,或以其他方式获取相同的信息?作为一个具体的例子,read -s pwd在shell脚本中看到后如何到达相关文档?一个好的答案可能是一个 shell 脚本片段,或者暗示一些工具及其使用方式,或者其他完全不同的东西,只要它有助于找到正确的阅读位置。

注意:我没有用标记,因为我希望问题是关于一般的手册页阅读,即使这很可能是最常见的巨大手册页。

Jos*_* R. 36

要快速获得有关 Bash 内置命令的帮助,请使用help

help read
Run Code Online (Sandbox Code Playgroud)

是你想要的。

对于类似手册页的格式,请使用

help -m read
Run Code Online (Sandbox Code Playgroud)

或者,甚至更好,

help -m read | less
Run Code Online (Sandbox Code Playgroud)

如果您仍然坚持在手册页中查找它,我会发现快速让我找到命令解释的是

/^\s*read [[]
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为当第一次解释一个命令时,它的名称从行的开头稍微缩进。在 的特殊情况下read,在您进入实际read文档之前需要稍微浏览一下,因为(出于显而易见的原因)“阅读”一词在整个手册页中重复了很多次。[[] 表示匹配通常位于可选参数之前的 [。(我通常省略 /^\s* 并简单地执行 /<built-in command> [[])

另一种选择

如果您不介意更改格式,可以将手册页转换为 DVI 或 PDF 文件:

man -T dvi bash >bash.dvi
Run Code Online (Sandbox Code Playgroud)

或者

man -T ps bash | ps2pdf - bash.pdf # Requires the Ghostscript suite for ps2pdf
Run Code Online (Sandbox Code Playgroud)

当然,对于 DVI 或 PDF 文档,您可以轻松地进行文本搜索。


Iva*_*hau 9

方法一

man bash然后/read \[然后/-s

方法二

您可以尝试使用一个开源工具来解释命令行参数,称为explainshell

它可以在本地使用。阅读https://github.com/idank/explainshell 上的文档

注意事项:通常有效,但仅适用于 Ubuntu 手册页存储库中的命令

在您的情况下,它无法识别-sswitch in read -s pwd

方法三

我发现了另一个看起来很有前途的工具,但它在我的系统上不起作用。

解释:Unix 命令的简短文档


Mik*_*kel 8

在这种情况下我通常做的只是 run man,搜索SHELL BUILTIN COMMANDS标题,然后搜索内置,即

man bash
/^SHELL BUILTIN
/  read 
Run Code Online (Sandbox Code Playgroud)

然而,在 bash 中你可以做到

help read
Run Code Online (Sandbox Code Playgroud)

或者,取决于系统,

man 1 read
man bash-builtins
Run Code Online (Sandbox Code Playgroud)

通常,我有一个名为he(“简短帮助”)的脚本来执行此操作。你会像这样运行它:

he bash read
Run Code Online (Sandbox Code Playgroud)