什么是在Linux中使命令静音的通用,可移植的方法?

时间:2015-11-22 18:41:19

标签: bash shell command portability silent

让我们说我想让命令type idonotexist沉默。通常,它会输出如下消息:

bash: type: idonotexist: not found

如何使这样的命令以可移植的方式保持沉默(即以适合像Bash和zsh这样的常见shell的方式)。

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

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

2 个答案:

答案 0 :(得分:2)

来自help type我们知道

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

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

所有在一起:

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

答案 1 :(得分:0)

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

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

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