dd if=/dev/sdb | pig ZC | tee /sdb.img.gzがコンソールに印刷されるのはなぜですか?

dd if=/dev/sdb | pig ZC | tee /sdb.img.gzがコンソールに印刷されるのはなぜですか?

このコマンドsudo dd if=/dev/sdb | pigz -c | sudo tee /sdb.img.gzsudoタイトルでは省略)はバイナリデータをコンソールまたはdd出力に出力しますpigz。なぜすべての出力がパイプに取り込まれ、|チェーンの最後の出力がファイルにリダイレクトされるのか疑問に思います。したがって、標準出力は「リーク」されません。私がここで得ないものは何ですか?

私はbash提供されたコマンドバージョンに付属しているUbuntu 20.04を使用しています。

答え1

tee 重複(あなたの場合)標準出力に送信される入力/sdb.img.gz。コンソールに出力が表示されないように出力をリダイレクトできます。

sudo dd if=/dev/sdb | pigz -c | sudo tee /sdb.img.gz > /dev/null

私はpigzrootとして直接実行し、以下を使用しませddtee

sudo sh -c 'pigz -c < /dev/sdb > /sdb.img.gz'

答え2

tee ファイルとstdoutとして印刷します。cat必要でない場合は、stdoutを使用するか、単にリダイレクトしてください。

関連情報