如何让`man` 为shell 内置命令和关键字工作?

Rad*_*anu 58 command-line manpage

man当我想获取有关特定命令的信息时,我一直使用该命令。但是当该特定命令是内置的 shell 时,这对我没有太大帮助。例如:

man cd
Run Code Online (Sandbox Code Playgroud)

返回:

No manual entry for cd
Run Code Online (Sandbox Code Playgroud)

我的问题是:有可能使man也是所有shell内建命令(如工作cdaliashistory等),和关键字(如ifwhile[[{,等)?

Rad*_*anu 70

help-moption 一起使用的命令可以以伪 manpage 格式显示有关内置命令的信息。例如:

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

将以cd几乎与手册页中完全相同的格式显示有关命令的信息。

从此命令开始,您可以将man命令包装在.bashrc文件中的一个函数中,如下所示:

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

此后man也适用于所有 shell 内置命令和关键字。例如:

man :
Run Code Online (Sandbox Code Playgroud)

将显示:

NAME
    : - Null command.

SYNOPSIS
    :

DESCRIPTION
    Null command.

    No effect; the command does nothing.

    Exit Status:
    Always succeeds.

SEE ALSO
    bash(1)

IMPLEMENTATION
    GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)
    Copyright (C) 2011 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
Run Code Online (Sandbox Code Playgroud)

  • 如果存在被内置函数屏蔽的可执行文件,您可以指定该部分。`man time` vs. `man 1 time` (5认同)

Oli*_*Oli 30

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

这包含内置命令的帮助片段,尽管格式比help同等格式稍微简洁。


sou*_* c. 13

您可以安装有关使用POSIX 系统进行开发的手册页,

sudo apt-get install manpages-posix-dev
Run Code Online (Sandbox Code Playgroud)

它将为 shell 内置程序提供手册页。

$ type cd
cd is a shell builtin
Run Code Online (Sandbox Code Playgroud)

现在试试,

$ man cd
CD(P)                      POSIX Programmer's Manual                      CD(P)

NAME
   cd - change the working directory

SYNOPSIS
   cd [-L | -P] [directory]


...
Run Code Online (Sandbox Code Playgroud)

  • 我在等待有人来回答这个问题。但问题是这仅适用于某些内置函数 - [POSIX 指定的那些](http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_09_01_01)。 (3认同)
  • 除非在 POSIX 模式下运行,否则 Bash 不会严格遵守 POSIX,因此这些手册页可能不全面,并且在某些情况下可能是错误的,尤其是在描述某些功能的行为时。 (3认同)