我不明白。我在一些教程中看到人们使用这样的描述符(用于输出和错误)
command 1> /dev/null
command 2> /dev/null
但他们为什么要这么做呢?我们无法在屏幕上或文件中看到输出。它就这样消失了。他们会测试命令或类似的东西吗?
答案1
有时您只是不想看到输出。许多工具会在 stdout 或 stderr 上打印很多“无用”的内容,有时我们只是想忽略它,如果该工具不支持-q/--quite
重定向输出之类的功能来/dev/null
完成这项工作。如果该工具的主要功能不是打印某些内容,您可能只对它的成功或失败感兴趣,为此您将使用返回代码(尤其是在脚本中)。
示例可能是试图确定是否安装了某个工具。您可能想要检查类似tool --version
或 的内容which tool
,但您对工具的版本或路径并不真正感兴趣,您只关心它是否可用,并且返回代码就足够了。例如,在您想要检查用户是否具有所有必要依赖项的脚本中
$ which xyz >/dev/null 2>&1 || echo "you need to install xyz to proceed"
you need to install xyz to proceed
看起来比
$ which xyz || echo "you need to install xyz to proceed"
/usr/bin/which: no xyz in (/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/vtrefny/.local/bin:/home/vtrefny/bin)
you need to install xyz to proceed