gpt4 book ai didi

linux - 将错误重定向到一个文件,将标准输出重定向到另一个函数,然后再重定向到另一个文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:33:56 24 4
gpt4 key购买 nike

我看过 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: Not found in archive

tar: Exiting with failure status due to previous errors

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

第三次尝试:

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

有点效果,但我不确定...

我的问题是:我的第 3 次尝试是否合法?此外,是否有一个选项,即只有在文件中有数据时,重定向才会创建文件(即,如果 stderr 什么都没有,则不会创建错误文件?)

最佳答案

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

如果您想在将内容保存到文件之前对其进行进一步操作,请在发球区之前进行。如果你只想对文件做额外的操作,那么在 bash 中,你可以使用 >(command) 而不是文件名。

关于linux - 将错误重定向到一个文件,将标准输出重定向到另一个函数,然后再重定向到另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52813608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com