我从一个指令中了解到:
协同处理同时做两件事。它在后台模式下生成一个子 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 还可以提供多个命令作为内置命令,即使它们也可以作为外部命令使用。这些的常见示例有、echo
等printf
,但 shell 实际上可能提供以下内部版本test
[
任何命令。这样做通常是出于性能原因或提供命令的增强版本。
内部和外部命令都将记录在 shell 手册和外部手册中,并且它们的工作方式很可能不同。type
in 中的命令将bash
告诉您将使用哪一个命令,您可以使用该命令强制使用内置命令builtin
,或使用其完整路径(例如/bin/echo
)强制使用外部命令。
一些命令,例如set
、read
和cd
通常是仅有的作为内置命令提供,因为它们修改当前 shell 的环境。这些将help
在bash
shell 手册中详细记录。