“man coproc”报告错误,但“help coproc”有效(在哪里可以找到某些命令的文档?)

“man coproc”报告错误,但“help coproc”有效(在哪里可以找到某些命令的文档?)

我从一个指令中了解到:

协同处理同时做两件事。它在后台模式下生成一个子 shell,并在该子 shell 中执行命令。

[root@iz2ze9wve43n2nyuvmsfx5z ~]# coproc ( sleep 10; sleep 2 )
[1] 32508
[root@iz2ze9wve43n2nyuvmsfx5z ~]# jobs
[1]+  Running                 coproc COPROC ( sleep 10; sleep 2 ) &

当我参考它的手册时,得到一个错误作为反馈

root@iz2ze9wve43n2nyuvmsfx5z ~]# man coproc
No manual entry for coproc
[root@iz2ze9wve43n2nyuvmsfx5z ~]# coproc --info
[1] 32579
[root@iz2ze9wve43n2nyuvmsfx5z ~]# bash: line 25: --info: command not found

[1]+  Exit 127                coproc COPROC --info

help作品

[root@iz2ze9wve43n2nyuvmsfx5z ~]# help coproc
coproc: coproc [NAME] command [redirections]
    Create a coprocess named NAME.

    Execute COMMAND asynchronously, with the standard output and standard
    input of the command connected via a pipe to file descriptors assigned
    to indices 0 and 1 of an array variable NAME in the executing shell.
    The default NAME is "COPROC".

    Exit Status:
    Returns the exit status of COMMAND.

这非常令人困惑,
我如何才能大致了解我可以访问哪些手册的命令?如何区分它们?

答案1

coproc是 shell 中的 shell 关键字bash。关键字通常没有自己的man手册,但记录在 shell 的手册中(在本例中是bash,的手册man bash)。 shellbash还提供了一个help命令(本身help是一个内置命令),它为内置命令和特殊关键字(如coproc.

bash,中还有另一个内置命令type,可以帮助您区分命令是外部命令还是内置命令:

$ type coproc
coproc is a shell keyword
$ type help
help is a shell builtin
$ type type
type is a shell builtin
$ type ls
ls is /bin/ls

对于不是外部命令的东西bash(仅ls在上面的示例中是外部命令),请使用help或阅读bash手册(通常比help显示的内容更详细)。对于其他任何事情,请使用man.

请注意,shell 还可以提供多个命令作为内置命令,即使它们也可以作为外部命令使用。这些的常见示例有、echoprintf,但 shell 实际上可能提供以下内部版本test[任何命令。这样做通常是出于性能原因或提供命令的增强版本。

内部和外部命令都将记录在 shell 手册和外部手册中,并且它们的工作方式很可能不同。typein 中的命令将bash告诉您将使用哪一个命令,您可以使用该命令强制使用内置命令builtin,或使用其完整路径(例如/bin/echo)强制使用外部命令。

一些命令,例如setreadcd通常是仅有的作为内置命令提供,因为它们修改当前 shell 的环境。这些将helpbashshell 手册中详细记录。

相关内容