이것을 팔로우하고 있습니다(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: /'
^
줄의 시작 부분( )을 찾아 명령의 두 번째 부분에 표시된 대로 E:
또는 로 대체(추가)합니다.O: