在 Linux 中静音命令的通用、便携方法是什么?

What is a general, portable way to silence commands in Linux?

假设我想关闭命令 type idonotexist。通常,它会输出如下消息:

bash: type: idonotexist: not found

如何使这样的命令以可移植的方式静音(即以适合 Bash 和 zsh 等常见 shell 的方式)。

有关如何使用它的示例,请考虑在脚本中使用的命令应该只显示回显:

if type "idonotexist"; then
    echo "hello world"
else
    echo "install idonotexist"
fi

help type我们知道

Exit Status:
Returns success if all of the NAMEs are found; fails if any are not found.

因此您可以将所有输出重定向到 /dev/null --> type <whatever> &>/dev/null 并依赖于退出状态。

总计:

if type "idonotexist" &>/dev/null; then
    echo "hello world"
else
    echo "install idonotexist"
fi

Bash(显然还有 Zsh?)有一个未找到命令的处理程序,但我认为这不能移植到其他 shell;在 POSIX 意义上肯定不可移植。

它用于例如Ubuntu 在您键入当前不可用但由您可以安装的软件包提供的命令时建议安装缺少的软件包。

https://launchpad.net/command-not-found