dd가 프로세스 대체에서 입력을 받는 것을 좋아하지 않는 이유는 무엇입니까?

dd가 프로세스 대체에서 입력을 받는 것을 좋아하지 않는 이유는 무엇입니까?

프로세스 교체에 대한 내용이 있습니까(제 생각에는명명되지 않은 파이프를 사용하여 구현됨dd)는 ? 와 호환되지 않습니다 .

예를 들어 다음은 실패합니다.

$ dd if=<(unzip -p raspbian.zip) of=/dev/sdb status=progress        
dd: unrecognized operand ‘/dev/fd/4’
Try 'dd --help' for more information.

하지만 이것은 잘 작동합니다.

$ unzip -p raspbian.zip | dd of=/dev/sdb status=progress       
108458496 bytes (108 MB) copied, 19.446285 s, 5.6 MB/s

암묵적으로 말할 if수 있는 방법이 있나요?dd추구할 수 있어야 한다?

답변1

이는 프로세스 대체를 확장할 때 쉘이 선행 공백을 추가하거나 인수 분할을 수행함으로써 발생하는 것으로 보입니다. 우리는 이것을 증명할 수 있습니다:

$ echo if=<(:)
if= /dev/fd/4

dd이 동작이 최신 버전에서 재현될 수 있다고 가정하면 여기서 버그 보고서를 제출하는 것 외에는 할 수 있는 일이 많지 않을 것입니다(버그로 인해 실제 문제가 발생하는 합법적인 사례 포함).

쉘 변경을 고려할 수도 있지만 마음에 들지 않는다면 이해합니다!

관련 정보