두 개의 파이프가 하나의 명령에 해당합니다.

두 개의 파이프가 하나의 명령에 해당합니다.

다음 구문이 약간 혼란 스럽습니다. 작동하는 동안 작동하는 이유를 이해하지 못합니다. diff 명령에 두 개의 파이프가 연결된 것 같습니다. 그런데 딱 한 명 있지 않나 STDIN?

예:

diff <(echo "foobar") <(echo "barbaz")
diff <(cat foo.txt) <(cat bar.txt)

답변1

파이프는 0(stdin)이 아닌 다른 파일 설명자에 바인딩되어 있습니다.

$ echo <(true)
/dev/fd/63
$ echo <(true) <(true)
/dev/fd/63 /dev/fd/62

물론 프로세스는 동시에 여러 개의 열린 파일 설명자를 가질 수 있으므로 문제가 없습니다.

관련 정보