如何使docker命令的输出静音

jdodle

我已经编写了一个脚本来为我运行一些docker命令,我想使这些命令的输出保持静音。例如docker loaddocker rundocker stop

docker load确实有一个标志--quiet,它似乎应该执行我想要的操作,但是当我尝试使用它时,它仍然会打印出来Loaded image: myimage即使此标志对我有用,但并非所有docker命令都具有此标志。我曾经尝试使用重定向,docker run ... 2>&1 /dev/null但是重定向参数被解释为docker容器的命令参数,对于其他docker命令也是如此,例如,tar -Oxf myimage.img.tgz | docker load 2>&1 /dev/null假设重定向是参数并决定打印出命令用法。

医学博士

这主要是关于标准描述符(stdout,stderr)和重定向的shell问题。

要实现您想要的目标,您cmd 2>&1 /dev/null既不应该编写也不应该cmd 2>&1 >/dev/null只是编写:cmd >/dev/null 2>&1

助记符:

容易想到此>语法的直觉是:

  • >/dev/null 可以阅读: STDOUT := /dev/null
  • 2>&1 可以阅读: STDERR := STDOUT

这样,2>&1必须放置在后面的事实变得很清楚。

(顺便说一句,这两个标准错误到stdout重定向到一个管是有点不同的,并且将在下面的顺序进行写入:cmd1 2>&1 | cmd2

最小的完整示例对此进行测试:

$ cmd() { echo "stdout"; echo >&2 "stderr"; }

$ cmd 2>&1 >/dev/null  # does no work as intended
stderr

$ cmd >/dev/null 2>&1  # ok

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章