これをフォローしています(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 /tnt
2は、コマンドのエラーが評価されるstderrを表し、次に置き換えられる行の先頭を示します(sed 's/^/E: /')
。^
第二:
>(sed 's/^/O: /')
== 1はstdoutを参照し、通常の出力は最初1>(sed 's/^/O: /')
に評価され、次に置き換えられます。(sed 's/^/O: /')
ああ:
答え1
>(...)
~と呼ばれるプロセスの交換。これにより、「外部」プログラムがファイルのように「内部」プログラムに書き込むことができます。
ページも参照してくださいBashのリダイレクター。
E:
コマンドがパイプされるError()およびStandard Output()O:
の出力を表すためにコメント作成者が使用するコマンド。stderr
stdout
sed
sed 's/^/E: /'
^
行の先頭()を見つけて、コマンドの2番目の部分に示すように、またはでE:
置き換え(追加)します。O: