我可以获得 bash 内置命令的单独手册页吗?

Tyi*_*ilo 68 bash man shell-builtin

有什么地方可以下载每个内置命令的联机帮助页吗?

我知道你可以使用helporman bash和 search 来查找有关它的信息,但我希望它们分开,所以我可以这样做man read并获取阅读手册页。

Gil*_*il' 65

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

在 zsh 中:

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

或键入read something并按M-h(即Alt+hESC h)。

如果您想拥有单个man命令而不需要知道该命令是否是内置命令,请在您的~/.bashrc.

man () {
  case "$(type -t "$1"):$1" in
    builtin:*) help "$1" | "${PAGER:-less}";;     # built-in
    *[[?*]*) help "$1" | "${PAGER:-less}";;       # pattern
    *) command -p man "$@";;  # something else, presumed to be an external command
                              # or options for the man command or a section number
  esac
}
Run Code Online (Sandbox Code Playgroud)


gle*_*man 37

尝试这个:

bashman () { man bash | less -p "^       $1 "; }
Run Code Online (Sandbox Code Playgroud)

您可能需要n多次点击才能找到实际的命令,而不是恰好将命令名称作为第一个单词的段落。

解释:这将man bashbash 的整个手册页(这是一个巨大的文档,并有解释每个 bash 内置命令的小节)的整个输出通过管道传输到阅读程序less。less'-p标志代表“模式”;它的作用是自动滚动到输入文本中与模式匹配的第一个点。这里的模式是一个正则表达式,它匹配“行首 ( ^),后跟特定数量的空格,后跟 ...”——这里,bash 插入提供给bashman函数的第一个参数,因为 bash 看到了特殊的$1用双引号分隔的字符串中的标记(意思是“第一个参数”)(单引号会告诉 bash 你的字面意思是字符$1)。所以,如果你跑bashman cd,您将有效地搜索 bash 手册页中以一堆空格开头的任何行,然后是字符串“cd”。因为在 bash 的整个手册页中,除了解释部分的实际标题(例如,“cd”)之外,可能还有其他点也与此模式匹配,因此该函数实际上可能不会将您带到 bash 手册页的正确部分。

  • 工作完美!在 `$1` 后面加一个空格会更好 (2认同)
  • 你也可以使用`LESS=-p"^ $1 " man bash`。这样,您就不会剥离任何转义序列。 (2认同)