GNU/Linux >> Linux の 問題 >  >> Linux

Stdoutを複数のコマンドに送信する方法は?

入力をフィルタリングまたは処理し、それを出力として渡すコマンドがいくつかあります。通常、 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の結果のみが表示されます コンソールで。

関連:Ubuntu – XFCE –キーストロークで他のモニターにウィンドウを送信しますか?

teeに複数のプロセスを配置できます パート:

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

Linux
  1. ターミネーターを使用して複数のSSHセッションにコマンドを送信する

  2. phpMyAdminで複数のホストを追加する方法

  3. Sshpassの複数のコマンド?

  1. Bash履歴コマンドの使用方法

  2. Unix Sed チュートリアル:複数の Sed コマンドを実行する方法

  3. Bash でコマンドのグループをタイムアウトする方法

  1. bash で複数のバックグラウンド コマンドを 1 行で実行するにはどうすればよいですか?

  2. 複数の標準入力?どのように?

  3. 検索を使用するときに複数のコマンドを実行するにはどうすればよいですか?