【问题标题】:How do I suppress output from this Shell command如何禁止此 Shell 命令的输出
【发布时间】:2013-05-23 17:23:37
【问题描述】:

为什么这个命令行中的重定向操作显然被 bash 忽略了?我的目标是将标准错误重定向到标准输出,然后将全部输入到 void 中。

( cd ../src/ && python -m SimpleHTTPServer 8000 2>&1 > /dev/null ) &

我在一些静态 Web 内容上运行 SimpleHTTPServer,以便 wget 可以检查它是否存在死链接。但是,我不想看到来自服务器的错误(对失败页面的请求),因为 wget 日志文件提供了我需要的所有信息。

不过,当我运行这个时...

( cd ../log/ && wget --quiet --spider --recursive -o spider.log http://localhost:8000/ 2>&1 > /dev/null )

...在后台运行的原始 SimpleHTTPServer 命令继续喷出有关失败资源请求的标准错误报告,例如...

127.0.0.1 - - [28/May/2013 17:22:31] "GET /technology/actuator.html HTTP/1.1" 200 -
127.0.0.1 - - [28/May/2013 17:22:31] code 404, message File not found

【问题讨论】:

    标签: python bash simplehttpserver


    【解决方案1】:

    首先,stdout(1) 和 stderr(2) 都指向你的终端。

    然后您将 stderr 重定向到您的 stdout 指向的任何内容。 (哪个是终端。)

    然后您将标准输出重定向到/dev/null。但是 stderr 仍然指向终端。

    你可以在 >/dev/null 2>&1 周围做相反的事情:这样你首先将 stdout 重定向到 /dev/null,然后将 stderr 重定向到相同的位置。

    Bash 为此提供了简写 &>/dev/null

    【讨论】:

    • 对于不想阅读完整问题和/或答案且不了解完整上下文的人来说,也许举一个如何将其应用于任何命令的示例。
    【解决方案2】:

    使用&>/dev/null 压制一切。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      相关资源
      最近更新 更多