入力をフィルタリングまたは処理し、それを出力として渡すコマンドがいくつかあります。通常、 stdout
と思います。 –ただし、一部のコマンドは stdin
を使用します そして、彼らがそれを使って何をしても、何も出力しません。
私はOSXに最も精通しているので、すぐに頭に浮かぶのは pbcopy
の2つです。 およびpbpaste
–これはシステムクリップボードにアクセスする手段です。
とにかく、stdoutを取得して出力を吐き出し、両方の stdout
に移動する場合は、 ファイルを使用すると、 tee
を使用できます 指図。そして、私は xargs
について少し知っています 、しかしそれは私が探しているものではないと思います。
stdout
を分割する方法を知りたい 2つ(またはそれ以上)のコマンド間を移動します。例:
cat file.txt | stdout-split -c1 pbcopy -c2 grep -i errors
おそらくそれよりも良い例がありますが、 stdout
を維持しながら、それを中継しないコマンドにstdoutを送信する方法を知りたいと思っています。 「ミュート」から– cat
の方法については質問していません ファイルとgrep
その一部をクリップボードにコピーします–特定のコマンドはそれほど重要ではありません。
また–これをファイルと stdout
に送信する方法を尋ねていません –これは「重複した」質問かもしれません(申し訳ありません)が、私はいくつか調べてみたところ、stdoutとファイルを分割する方法について質問している同様の質問しか見つかりませんでした–そしてそれらの質問に対する答えはtee<のようでした/ code> 、これは私にはうまくいかないと思います。
最後に、「なぜpbcopyをパイプチェーンの最後のものにしないのですか?」と尋ねることができます。私の応答は1)それを使用してコンソールに出力を表示したい場合はどうなりますか? 2) stdout
を出力しない2つのコマンドを使用したい場合はどうなりますか 入力を処理した後?
ああ、もう1つ、 tee
を使用できることに気づきました。 名前付きパイプ( mkfifo
)しかし、事前の設定なしで、これをインラインで簡潔に実行できる方法を望んでいました🙂
承認された回答:
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