发球到压缩文件

时间:2013-03-28 02:44:23

标签: shell unix tee compression

tee从标准输入读取并写入标准输出和文件。

some_command |& tee log

T恤可以写入压缩文件吗?

some_command |& tee -some_option log.bz2

如果T恤不能那样做,还有其他命令吗?

我可以使用

将输出重定向到压缩文件
some_command |& bzip2 > log.bz2

但是使用此命令,缺少输出到标准输出。

2 个答案:

答案 0 :(得分:6)

如果你的shell是bash(版本4.x),那么你有'process substitution',你可以使用:

some_command 2>&1 | tee >(bzip2 -c > log.bz2)

这会将标准错误和标准输出重定向到tee(就像|&一样,但我更喜欢经典表示法)。 tee输出的副本被发送到进程而不是文件;该过程为bzip2 -c > log.bz2,它将其压缩格式的标准输入写入其标准输出。当然,输出的另一个(未压缩的)副本直接转换为标准输出。

答案 1 :(得分:5)

如果您在stderr上输出正常,则可以重定向它:

some_command | tee /dev/stderr | bzip2 > log.bz2

将输出转换为stdout和stderr(| tee /dev/stderr)。然后它将stdout传递给bzip2(| bzip2 > log.bz2