8

tee は、標準入力から読み取り、標準出力とファイルに書き込みます。

some_command |& tee log

ティーが圧縮ファイルに書き込むことは可能ですか?

some_command |& tee -some_option log.bz2

ティーがそれを行うことができない場合、他のコマンドはありますか?

出力を圧縮ファイルにリダイレクトできます

some_command |& bzip2 > log.bz2

しかし、このコマンドでは、標準出力への出力が欠落しています。

4

2 に答える 2

14

シェルがbash(バージョン 4.x) の場合、「プロセス置換」があり、次を使用できます。

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

これにより、標準エラーと標準出力がリダイレクトされますtee(同様です|&が、私は古典的な表記法を好みます)。の出力のコピーはtee、ファイルではなくプロセスに送信されます。このプロセスはbzip2 -c > log.bz2、標準入力を圧縮形式で標準出力に書き込むものです。もちろん、出力のもう 1 つの (圧縮されていない) コピーは、標準出力に直接送られます。

于 2013-03-28T05:34:04.230 に答える
6

出力を stderr に出力しても問題ない場合は、リダイレクトできます。

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

これにより、出力が stdout と stderr の両方に出力されます ( | tee /dev/stderr)。次に、stdout を bzip2 にパイプします ( | bzip2 > log.bz2) 。

于 2013-03-28T02:50:53.937 に答える