4

*nix パイプ コマンドをビルドすると、次のステージをビルドする前に、1 つのステージの出力を確認して正確性を確認したいことがわかりましたが、各ステージを再実行したくありません。それを助けるプログラムを知っている人はいますか?最後のステージの出力を自動的に保持して、新しいステージに使用します。私は通常、各コマンドの結果を一時ファイルに送信することによってこれを行います (つまり、一度に 1 つのコマンドを実行するか、各コマンドを 1 つずつ実行します) が、プログラムでこれを処理できると便利です。

各タブに各パイプ コマンドのラベルが付けられ、タブを選択すると、そのコマンドを前の結果に適用した出力 (少なくとも 100 行) が表示される、タブ付きインターフェイスのようなものを想定しています。

4

4 に答える 4

5

次のように、「tee」を使用して中間結果をファイルにコピーし、パイプの次の段階に渡します。

cat /var/log/syslog | tee /tmp/syslog.out | grep something | tee /tmp/grep.out | sed 's/foo/bar/g' | tee /tmp/sed.out | cat >>/var/log/syslog.cleaned
于 2008-09-15T15:11:35.797 に答える
2

双方向通信が必要な場合 (つまり、netcat を使用する場合) は、パイプを使用することもできます。

mknod backpipe p
nc -l -p 80 0<backpipe | tee -a inflow | nc localhost 81 | tee -a outflow 1>backpipe

(経由)

于 2008-09-15T15:16:31.777 に答える
1

「pv」コマンドもあります。これは、パイプのスループットを示す debian / ubuntu リポジトリで利用できます。

man ページの例: 別のプロセスからファイルを転送し、予想されるサイズを pv に渡す:

          cat file | pv -s 12345 | nc -w 1 somewhere.com 3000
于 2008-09-15T15:21:10.097 に答える
1

tee(1)はあなたの友達です。指定されたファイルと stdout の両方に入力を送信します。

パイプの間に挟みます。例えば:

ls | tee /tmp/out1 | sort | tee /tmp/out2 | sed 's/foo/bar/g'
于 2008-09-15T15:13:41.050 に答える