2013-03-28 70 views
5

tee從標準輸入讀取並寫入標準輸出和文件。tee到壓縮文件

some_command |& tee log 

這是可能的三通來寫入壓縮文件?

some_command |& tee -some_option log.bz2 

如果三通無法做到這一點,有沒有其他的命令?

我可以輸出到一個壓縮文件重定向與

some_command |& bzip2 > log.bz2 

但與此命令後,輸出到標準輸出丟失。

回答

4

如果你有你的標準錯誤輸出OK,你可以把它重定向:

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

這T恤的輸出到標準輸出和標準錯誤(| tee /dev/stderr)。然後,它管的標準輸出到bzip2的(| bzip2 > log.bz2

+0

最後的'2>&1'表示由'bzip2'生成的任何錯誤消息都被寫入到它的輸出文件'log.bz2'中。簡單地放棄重定向,並提及它,你就會生意。 – 2013-03-28 04:19:57

+0

嗯,很好的電話。 – craig65535 2013-03-28 04:37:26

4

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

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

此重定向標準錯誤和標準輸出到tee(像|&呢,但我更喜歡經典的符號)。 tee的輸出副本被髮送到進程而不是文件;該過程是bzip2 -c > log.bz2,它將標準輸入以壓縮格式寫入其標準輸出。當然,輸出的另一個(未壓縮)副本直接轉換爲標準輸出。