发球到压缩文件

Yor*_*war 6 unix compression shell tee

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

some_command |& tee log
Run Code Online (Sandbox Code Playgroud)

是否可以将tee写入压缩文件?

some_command |& tee -some_option log.bz2
Run Code Online (Sandbox Code Playgroud)

如果发球台不能那样做,还有其他命令吗?

我可以将输出重定向到压缩文件

some_command |& bzip2 > log.bz2
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*ler 8

如果你的shell是bash(版本4.x),你有'进程替换',你可以使用:

some_command 2>&1 | tee >(bzip2 -c > log.bz2)
Run Code Online (Sandbox Code Playgroud)

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


cra*_*535 6

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

some_command | tee /dev/stderr | bzip2 > log.bz2
Run Code Online (Sandbox Code Playgroud)

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