Is there something about process substitution (which I think is implemented with unnamed pipes) that is incompatible with dd?
For example, this fails:
$ dd if=<(unzip -p raspbian.zip) of=/dev/sdb status=progress
dd: unrecognized operand ‘/dev/fd/4’
Try 'dd --help' for more information.
But this works fine:
$ unzip -p raspbian.zip | dd of=/dev/sdb status=progress
108458496 bytes (108 MB) copied, 19.446285 s, 5.6 MB/s
Is the use of if somehow implicitly telling dd that it should be able to seek?
dd, which doesn't show up under bash. What shell do you use?catreplacingunzip(I don't have Zip archives) inbashnorzshon OpenBSD using either of GNUddor OpenBSDdd. Did you originally have a space before the process substitution? That would make GNUddcomplain as you show.$ echo if=<(:)producesif= /dev/fd/4(with a rogue leading space). ARGH!