如果我在终端上输入command
,我不会得到“找不到命令”,并且退出代码为 0。我认为这意味着command
实际上在 bash 上做了一些事情。
另外,command -h
返回:
bash: command: -h: invalid option
command: usage: command [-pVv] command [arg ...]
它是干什么用的?
答案1
从help command
:
$ help command
command: command [-pVv] command [arg ...]
Execute a simple command or display information about commands.
Runs COMMAND with ARGS suppressing shell function lookup, or display
information about the specified COMMANDs. Can be used to invoke commands
on disk when a function with the same name exists.
Options:
-p use a default value for PATH that is guaranteed to find all of
the standard utilities
-v print a description of COMMAND similar to the `type' builtin
-V print a more verbose description of each COMMAND
Exit Status:
Returns exit status of COMMAND, or failure if COMMAND is not found.
作为更一般的说明,-h
您应该尝试:
type -a command
在这种情况下,这会告诉你它是一个 shell 内置函数。
help command
对于 shell 内置程序很有用。对于其他命令(和还实际上,对于 shell 内置函数),尝试
man somecommand
还有,-h
不是一定“帮助”选项。如果您不知道命令的作用,那么这可能不是一个安全的假设。更安全的是--help
。
somecommand --help
(常见命令其中-h
是有效选项,但确实不是“帮助”的意思是ls
, free
, df
, du
。所有这些仅供参考,但-h
仅意味着“帮助”的假设是一个危险的假设。)
答案2
command
就像几乎所有其他 Unix/Linux 都记录在手册页中一样。 Typingman command
提供了手册,bash
其中有一小节专门介绍内置命令command
:
命令 [-pVv] 命令 [arg ...]
使用参数运行命令会抑制正常的 shell 函数查找。仅执行内置命令或在 PATH 中找到的命令。如果给出 -p 选项,则使用 PATH 的默认值执行命令搜索,保证找到所有标准实用程序。如果提供了 -V 或 -v 选项,则打印命令的描述。 -v 选项导致显示一个单词,指示用于调用命令的命令或文件名; -V 选项产生更详细的描述。如果提供了 -V 或 -v 选项,则如果找到命令,则退出状态为 0;如果未找到,则退出状态为 1。如果两个选项均未提供,并且发生错误或找不到命令,则退出状态为 127。否则,内置命令的退出状态为命令的退出状态。