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
它應該能夠尋求?
這似乎是由於您的 shell 在擴展程序替換時添加了前導空格(或以其他方式執行參數拆分)引起的。我們可以證明這一點:
$ echo if=<(:) if= /dev/fd/4
假設這種行為在您可以獲得的最新版本上是可重現的,我認為除了送出錯誤報告外,您無能為力,包括證明
dd
該錯誤導致實際問題的合理案例。您可能會考慮切換 shell,但我可以理解這是否對您不利!