[解決済み] Unix (または Windows) でパイプを使って、1つのプロセスの標準出力を複数のプロセスに送るにはどうしたらいいですか?
2023-06-18 20:32:07
質問
プロセス proc1 の標準出力を 2 つのプロセス proc2 と proc3 にリダイレクトしたいです。
proc2 -> stdout
/
proc1
\
proc3 -> stdout
私は
proc1 | (proc2 & proc3)
というのがありますが、うまくいかないようです、つまり
echo 123 | (tr 1 a & tr 1 b)
は書き込みます。
b23
の代わりに標準出力に
a23
b23
どのように解決するのですか?
<上
編集者コメント
:
-
>(…)
は
プロセスの置換
というのは
非標準のシェル機能
の
いくつかの
POSIX 互換のシェル。
bash
,
ksh
,
zsh
.
- この答えは、誤って出力プロセスの代入の出力をパイプラインで送ってしまいます。
も
:
echo 123 | tee >(tr 1 a) | tr 1 b
.
- プロセス置換の出力は、予測不可能なインターリーブになります。
zsh
の中のコマンドの前にパイプラインが終了する可能性があります。
>(…)
を実行します。
unixでは(macでも)、以下のように
tee
コマンドを使用します。
:
$ echo 123 | tee >(tr 1 a) >(tr 1 b) >/dev/null
b23
a23
通常であれば
tee
を使って複数のファイルにリダイレクトしていましたが、>(...)を使うことで
を使うと、別のプロセスにリダイレクトすることができます。つまり、一般的には
$ proc1 | tee >(proc2) ... >(procN-1) >(procN) >/dev/null
は思い通りになります。
Windowsでは、内蔵のシェルに同等のものはないと思います。マイクロソフトの
Windows PowerShell
には
tee
コマンドがありますが。
関連
-
[解決済み] Windowsでlocalhostのポートを使用中のプロセスを強制終了するにはどうすればよいですか?
-
[解決済み] Linux, Bashで、現在の時刻をEpochからの秒数で取得する。
-
[解決済み】WindowsでTCPまたはUDPポートをリッスンしているプロセスを見つけるにはどうすればよいですか?
-
[解決済み】Bashでファイル名と拡張子を抽出する。
-
[解決済み】メタキャラクタの周りに空白が必要な場合があるのはなぜですか?
-
[解決済み】bashスクリプト自身からstdoutのCOPYをログファイルにリダイレクトする。
-
[解決済み] bashで、標準エラーを別のプロセスにパイプする方法は?
-
[解決済み] IE10はIE7モードでレンダリングされます。強制的に標準モードにする方法は?
-
[解決済み] WindowsでJenkinsのサービスを開始/停止/再起動する
-
[解決済み] ActivePerlとStrawberry Perl for Windowsのどちらを選べばいいのでしょうか?重複
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Windows XP以降のWindowsです。ウィンドウを表示せず、バックグラウンドでバッチファイルを実行するには?
-
[解決済み] 行末を保持する
-
[解決済み] Windowsで動作するEmacsの.emacsファイルはどこにあるのですか?
-
[解決済み] Phonegap Cordovaのインストール Windows
-
[解決済み] コマンドラインでXLSからCSVに変換する
-
[解決済み] ActivePerlとStrawberry Perl for Windowsのどちらを選べばいいのでしょうか?重複
-
[解決済み] プログラムファイルx86の環境変数を取得するには?
-
[解決済み] Windowsのパスの代わりにDOSのパスを取得する
-
[解決済み] .BATスクリプトをデバッグするにはどうしたらいいですか?
-
[解決済み] RS232シリアルポートのフェイク