最近发现command:command
没有手动输入但是help显示如下:
$ 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.
是command -v
替代品which
吗?
此命令接受哪些参数以及如何/何时使用command
?
command
是一个 bash内置函数,我们可以看到:所以我们知道
command
是由我们的 shell bash 提供的。深入研究man bash
我们可以看到它的用途:(来自
man bash
):本质上你会
command
用来绕过“正常函数查找”。例如,假设您的 : 中有一个函数.bashrc
:通常,当您
say_hello
在终端中运行时,bash 会在找到之前say_hello
找到在您的终端中命名的函数,例如,一个名为. 使用:.bashrc
say_hello
使 bash 绕过它的正常函数查找并直接转到内置函数或你的
$PATH
. 请注意,此函数查找还包括别名。使用command
将绕过函数和别名。如果
-p
提供了该选项,bash 将绕过您的自定义$PATH
并使用它自己的默认值。-v
or flags bash 打印命令的-V
描述(简称-v
,长-V
)。注意:正如 souravc 在评论中指出的,可以在此处找到一种更简单的查找有关 shell 内置命令信息的方法:How to make `man` work for shell builtin commands and keywords?
这是 Bash shell 的内置命令。
我看到的这个内置的唯一优点总结在帮助文本的以下句子中:
所以如果你想执行一个程序(一个保存在你磁盘某处的二进制文件),并且存在一个同名的内部 shell 函数,那么你可以使用这个内置函数调用你的程序。
是的,
command -v
将给出与 相同类型的结果type
。我也在 Dash shell 下找到了它。
它有两种不同的用途:
一种用途是忽略别名和函数,并运行在 PATH 中找到的可执行文件,即使存在别名或同名函数也是如此。
例如,我将使用别名
ls
将 a 附加/
到目录名称:在交互式 shell 中,在命令名称前使用反斜杠作为替代、更短的语法可能更方便:
另一种用途是通过使用选项查找未使用命令名称时将运行的命令
-v
。它似乎是 . 的最便携/POSIX 变体which
。command
很有用,例如,如果您要检查特定命令是否存在。which
在查找中包含别名,因此它不适合此目的,因为您不希望将随机别名视为相关命令。换句话说,您可以像这样在 shell 脚本中使用一个小函数:
然后测试可用命令(此处,
dialog
),如下所示:它允许您运行忽略任何 shell 函数的 shell 命令。
http://ss64.com/bash/command.html
我已经看到用作将命令行参数传递给需要作为后台进程运行的可执行文件的技术。这是网上找的例子