참고:
$ diff <(echo a) <<<b
diff: missing operand after '/dev/fd/63'
diff: Try 'diff --help' for more information.
나는 <(...)
이것이 잘 작동한다는 것을 알고 있습니다.
$ diff <(echo a) <(echo b)
1c1
< a
---
> b
나는 또한 <<<
이것이 일반적으로 잘 작동한다는 것을 알고 있습니다.
$ cat <<<a
a
그렇다면 그것을 호출하는 올바른 방법은 무엇입니까 diff
?
답변1
이 diff
명령은파일 이름매개변수와 여기에 있는 문자열이 <<<
표준 입력에 기록됩니다. 하지만 그것은 man diff
우리에게 말한다.
FILE이 "-"이면 표준 입력을 읽습니다.
그래서
$ diff <(echo a) - <<<b
1c1
< a
---
> b
여기에도 동일하게 적용됩니다.문서:
$ diff <(echo a) - << \EOF
b
EOF
1c1
< a
---
> b
답변2
장치가 있는 시스템 에서는 /dev/fd/x
다음을 수행할 수 있습니다.
diff /dev/fd/3 3<< EOF3 /dev/fd/4 4<< EOF4
some text
EOF3
some other text
EOF4
Bourne 쉘의 <<
여기 문서 리디렉션 연산자를 사용하십시오.
diff /dev/fd/3 3<<< 'some text' /dev/fd/4 4<<< 'some other text'
zsh의 <<<
here 문자열 리디렉션 연산자를 사용하십시오.
zsh에서는 다음을 수행할 수도 있습니다.
diff <(<<<'some text') <(<<<'some other text')
답변3
<()
다음 을 결합 할 수 있습니다 cat <<<
.
diff <(echo a) <(cat <<<b)
Steeldriver의 답변은 하나의 매개변수 만 사용해야 하는 경우 작동 <<<
하지만 두 매개변수를 모두 사용해야 하는 경우에는 다음과 같이 작동합니다.
diff <(cat <<<a) <(cat <<<b)
그러나 here-string이 필요한 이유는 명확하지 않습니다. <(cat <<<a)
사이에는 큰 차이가 없습니다.<(echo a)