たいのですがgzip標準ファイルにも印刷標準標準のですか。
質問
Iを実行したいコマンドの出力のコマンドで取得しgzipいの、エコー/ティーに出力するコマンドです。
するようなもの:
echo "hey hey, we're the monkees" | gzip --stdout > my_log.gz
場合を除き、ラインを実行したいことを標準出力:
hey hey, we're the monkees
解決
echo "hey hey, we're the monkees" | tee /dev/tty | gzip --stdout > my_log.gz
コメントで指摘したように、、/dev/stdout
は、いくつかの状況で/dev/tty
より良い仕事かもしれません。
他のヒント
別の言い方を想定シェルのように bash
または zsh
):
echo "hey hey, we're the monkees" | tee >(gzip --stdout > my_log.gz)
は確かに不思議な >()
書式は基本的には、次の操作を実行します:
- をFIFO(通常は何か
/tmp/
) - コマンドを実行中
()
と結合するのFIFOにstdinそのサブコマンド - 戻りFIFOファイル名をョンをインストールして下さい。
何 tee
終了見て、それはのようなもの:
tee /tmp/arjhaiX4
すべての gzip
見は、標準入力します。
Bashの場合は、 man bash
ます。このセクション リダイレクト.のためのZshを参照 man zshexpn
の工程に代入します。"
調査を実施しているのは、同じ考えてKornシェルバのクラシックBourneシェルを含む灰とダッシュ)をCシェルをサポートしないこの構文です。
ティーのの素敵なカップを持っています!
teeコマンドをコピーし、標準入力 標準出力に出力し、また、任意に 引数として与えられたファイル。これは あなたが送信するだけでなく、したいときに便利 いくつかのデータパイプダウンするだけでなく、へ コピーを保存
私は遅い午後を抱えているように、ここでいくつかの見事に説明アスキー・アートだ...
+-----+ +---+ +-----+
stdin -> |cmd 1| -> stdout -> |tee| -> stdout -> |cmd 2|
+-----+ +---+ +-----+
|
v
file
greyfadeは別の答え「ファイル」に示していたよう通常のファイルである必要はないが、FIFOはあなたに3番目のコマンドに出力をT字型に分岐パイプをさせることができます。
+-----+ +---+ +-----+
stdin -> |cmd 1| -> stdout -> |tee| -> stdout -> |cmd 2|
+-----+ +---+ +-----+
|
v
FIFO
|
v
+-----+
|cmd 3|
+-----+
ただ、感動ディスクを伴わない方法を掲載します。
echo "hey hey, we're the monkees" | (exec 1>&3 && tee /proc/self/fd/3 | gzip --stdout > my_log.gz)
所属していません StackOverflow