bash 2>>(コマンド)>>(コマンド)はそれを得ません

bash 2>>(コマンド)>>(コマンド)はそれを得ません

これをフォローしています(https://stackoverflow.com/a/16283739/15603477)素晴らしい答えです。次の部分がわかりません。

$ ls -ld /tmp /tnt 2> >(sed 's/^/E: /') > >(sed 's/^/O: /')
O: drwxrwxrwt 17 root root 28672 Nov  5 23:00 /tmp
E: ls: cannot access /tnt: No such file or directory

これも本当です。

$ ((ls -ld /tmp /tnt |sed 's/^/O: /' >&9 ) 2>&1 |sed 's/^/E: /') 9>&1| cat -n
     1  O: drwxrwxrwt 118 root root 196608 Jan  7 12:29 /tmp
     2  E: ls: cannot access /tnt: No such file or directory

https://www.gnu.org/software/sed/manual/sed.html#紹介 E: そしてO: 一部はまだそれを得ていません。


次は私の解釈です

$ ls -ld /tmp /tnt 2> >(sed 's/^/E: /') > >(sed 's/^/O: /')

ls -ld /tmp /tnt2は、コマンドのエラーが評価されるstderrを表し、次に置き換えられる行の先頭を示します(sed 's/^/E: /')^第二:
>(sed 's/^/O: /')== 1はstdoutを参照し、通常の出力は最初1>(sed 's/^/O: /')
に評価され、次に置き換えられます。(sed 's/^/O: /')ああ:

ベストアンサー1

>(...)~と呼ばれるプロセスの交換。これにより、「外部」プログラムがファイルのように「内部」プログラムに書き込むことができます。

ページも参照してくださいBashのリダイレクター

E:コマンドがパイプされるError()およびStandard Output()O:の出力を表すためにコメント作成者が使用するコマンド。stderrstdoutsed

sed 's/^/E: /'^行の先頭()を見つけて、コマンドの2番目の部分に示すように、またはでE:置き換え(追加)します。O:

おすすめ記事