1つのコマンドの出力を他の2つのコマンドの入力に同時にパイプする方法を教えてください。
tee
コマンドがあなたの望むことをするようです。
キーは使用することです
>( )
プロセス置換 の場合。 tee
では、次のパターンを使用します。
tee >(proc1) >(proc2) >(proc3) | proc4
したがって、ls
の出力を2つの異なるgrep
プログラムへの入力として使用する場合は、各grep
の出力を別のファイルに保存し、すべての結果をパイプしてless
、試してみてください:
ls -A | tee >(grep ^[.] > hidden-files) >(grep -v ^[.] > normal-files) | less
ls -A
の結果は、両方のgrep
sに「パイプ」されます。ファイルhidden-files
には最初のgrep
の出力の内容が含まれ、normal-files
には2番目のgrep
の結果が含まれます。 すべてのファイルがポケットベル[〜#〜] edit [〜#〜]:less
に表示されます。less
に表示されるのはgrep
sの結果ではなく、ls -A
のまったく同じ出力。出力をls -A
からless
に変更する場合(たとえば、通常のファイルが非表示のファイルの前に表示されるように順序を入れ替える)、次のことを試してください。
ls -A | tee >(grep ^[.]) >(grep -v ^[.]) >/dev/null | less
>/dev/null
がない場合、grep
sの出力は、置換する代わりにls -A
の出力に追加されます。