tee 从标准输入读取并写入标准输出和文件。
some_command |& tee log
tee 可以写入压缩文件吗?
some_command |& tee -some_option log.bz2
如果 tee 不能这样做,还有其他命令吗?
我可以将输出重定向到压缩文件
some_command |& bzip2 > log.bz2
但是使用此命令,标准输出的输出将丢失。
tee 从标准输入读取并写入标准输出和文件。
some_command |& tee log
tee 可以写入压缩文件吗?
some_command |& tee -some_option log.bz2
如果 tee 不能这样做,还有其他命令吗?
我可以将输出重定向到压缩文件
some_command |& bzip2 > log.bz2
但是使用此命令,标准输出的输出将丢失。
如果你的 shell 是bash
(4.x 版),你有'process substitution',你可以使用:
some_command 2>&1 | tee >(bzip2 -c > log.bz2)
这会将标准错误和标准输出重定向到tee
(就像|&
那样,但我更喜欢经典表示法)。的输出副本tee
被发送到进程而不是文件;该过程bzip2 -c > log.bz2
将其标准输入以压缩格式写入其标准输出。当然,输出的另一个(未压缩)副本直接进入标准输出。
如果您可以在 stderr 上输出输出,则可以重定向它:
some_command | tee /dev/stderr | bzip2 > log.bz2
这会将输出发送到 stdout 和 stderr ( | tee /dev/stderr
)。然后它将标准输出通过管道传输到 bzip2 ( | bzip2 > log.bz2
)