質問: stdoutを複数のコマンドに送信するにはどうすればよいですか? 入力をフィルタリングまたは処理してから出力として渡すコマンドがいくつかあります。通常はstdoutと見なしますが、一部のコマンドはstdinを受け取り、それを使って何でもします、何も出力しません。私はos xに最も慣れているので、すぐに頭に浮かぶのは、システムクリップボードにアクセスする手段であるpbcopyとpbpaste-の2つです。とにかく、標準出力を取得して出力を吐き出してstdoutとファイルの両方に移動したい場合は、teeコマンドを使用できることを知っています。そして、私はxargsについて少し知っていますが、それが私が探しているものではないと思います。stdoutを2つ(またはそれ以上)のコマンドの間で分割する方法を知りたい。例えば:cat file.txt | stdout-split -c1 pbcopy -c2 grep -i errors おそらくこれよりも良い例がありますが、私は本当にそれをリレーしないコマンドにstdoutを送信する方法を知り、stdoutが「ミュート」されないようにすることに興味があります-私は尋ねていませんcatファイルとそのgrep部分をクリップボードにコピーする方法について-特定のコマンドはそれほど重要ではありません。また、私はこれをファイルに送信する方法を尋ねていません。stdout-これは「重複した」質問である可能性があります(申し訳ありません)いくつか調べてみましたが、方法について尋ねていた同様の質問しか見つけることができませんでしたstdoutとファイルの間で分割-そして、それらの質問に対する答えはteeのようでしたが、私にはうまくいきません。最後に、「pbcopyをパイプチェーンの最後に置くだけではどうしてよいのでしょうか?」私の応答は1)それを使用したいのにコンソールに出力を表示したい場合はどうなりますか? 2)入力の処理後にstdoutを出力しない2つのコマンドを使用したい場合はどうなりますか?ああ、もう1つ-teeと名前付きパイプ(mkfifo)を使用できることはわかっていますが、これを事前にセットアップせずにインラインで簡潔に実行できる方法を望んでいました。 )
回答: プロセスの置き換えを試してみてください。mycommand_exec |tee >(grep ook > ook.txt) >(grep eek > eek.txt) grepは、mycommand_execからの出力がプロセス固有の入力と同じである2つのバイナリです。