【问题标题】:redirecting error to one file and stdout to another function and then another file将错误重定向到一个文件,将标准输出重定向到另一个函数,然后再重定向到另一个文件
【发布时间】:2018-10-15 09:28:40
【问题描述】:

我看到this answer 使用command 2>x 1>ystdout / stderr 重定向到不同的地方。 但是,我有兴趣操纵 stdout 部分:

我想tar -xvzf一个文件,计算输出文件,并将其存储在一个文件中,并将错误存储在另一个文件中。

第一次尝试:

tar -xvzf pkg.tgz 2>err 1>output

文件名本身保存在output中(我没有使用wc -l,但至少它给出了有意义的输出)

第二次尝试:

tar -xvzf pkg.tgz 2>err 1 | wc -l >output

tar: 1: 在存档中找不到

tar:由于先前的错误而以失败状态退出

如果出现问题(tar -xvzf 通常会解压文件并输出错误),我如何获取提取的文件数或失败指示?

第三次尝试:

tar -xvzf pkg,tgz 2>err | wc -l > output

有点作品,但我不确定...

我的问题是:我的第三次尝试合法吗?此外,是否有一个选项是重定向仅在其中包含数据时才创建文件(即,如果 stderr 没有任何内容,则不会创建任何 err 文件?)

【问题讨论】:

    标签: linux bash


    【解决方案1】:

    tee 命令在这种情况下可以提供很大帮助。它就像道路或管道上的 T 形路口。 Tee 接受 std 输入,将其发送到 1 个或多个文件,然后还输出到 std 输出,其中可能有进一步的过滤器,例如 wc

    如果您想在将内容保存到文件之前对其进行进一步操作,请在 tee 之前进行。如果您只想对文件进行额外操作,那么在 bash 中,您可以使用 >(command) 代替文件名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 2011-06-02
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 2018-12-13
      相关资源
      最近更新 更多