tee从标准输入读取并写入标准输出和文件。
some_command |& tee log
T恤可以写入压缩文件吗?
some_command |& tee -some_option log.bz2
如果T恤不能那样做,还有其他命令吗?
我可以使用
将输出重定向到压缩文件some_command |& bzip2 > log.bz2
但是使用此命令,缺少输出到标准输出。
答案 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
)