標準出力を複数のコマンドに送信するには?

標準出力を複数のコマンドに送信するには?

入力をフィルタリングするか、それに応じて動作し、それを出力に渡すコマンドがあります。一般的にそのような場合だと思いますstdout。しかし、入力を受け入れ、stdin何も実行し、何も出力しないコマンドもあります。

私はOS Xに最も慣れているので、すぐに思い浮かぶ2つのことは次のpbcopyとおりですpbpaste。 - システムクリップボードにアクセスする方法は次のとおりです。

とにかく、stdoutを取得して出力を2つのファイルにエクスポートしたい場合は、stdoutこのコマンドを使用できることを知っていますtee。私はそれについて何かを知っていますが、xargsそれが私が探しているものではないと思います。

stdout2つ以上のコマンドを切り替えるために分割する方法を知りたいです。たとえば、

cat file.txt | stdout-split -c1 pbcopy -c2 grep -i errors

おそらくそれより良い例があるでしょう。しかし、「ミュート」を避けながら、中継しないコマンドにstdoutを送信する方法を知りたいです。ファイルとその一部stdoutを送信する方法を尋ねるものではありません。クリップボードにコピー - 特定のコマンドはそれほど重要ではありません。catgrep

また、ファイルに送信する方法を尋ねるものではありませんstdout。 「重複」の質問かもしれません(申し訳ありません)。しかし、検索をやってみると、stdoutとファイルを分割する方法を尋ねる同様の質問だけが見つかりました。 - 回答 この質問にはtee、私はそれが私には効果がないと思います。

最後に、「パイプラインチェーンの最後のエントリとしてpbcopyを作成するのはどうですか?」と尋ねることができます。私の答えは1)これを使いたいのですが、コンソールで出力を見続けるにはどうすればよいですか? 2)入力を処理した後に出力されない2つのコマンドを使用したい場合はstdoutどうすればよいですか?

teeああ、もう1つ - 名前付きパイプ()を使用できることを知っていますが、事前mkfifo設定を必要とせずにこれをインラインで簡潔に実行する方法があることを望みました。 :)

ベストアンサー1

代替項目を使用teeして処理できます。

cat file.txt | tee >(pbcopy) | grep errors

これにより、すべての出力がに送信され、cat file.txtコンソールからのみpbcopy結果を取得できます。grep

teeこのセクションには複数のプロセスを配置できます。

cat file.txt | tee >(pbcopy) >(do_stuff) >(do_more_stuff) | grep errors

おすすめ記事