在 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 在您键入当前不可用但由您可以安装的软件包提供的命令时建议安装缺少的软件包。
假设我想关闭命令 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 在您键入当前不可用但由您可以安装的软件包提供的命令时建议安装缺少的软件包。