Notice the difference between /dev/fd/63
and /dev/fd/63
. The extra space matters. /dev/fd/63
is an absolute path which would work. Whereas
/dev/fd/63
is a relative path. Probably your current directory does not contain a subdirectory named
.
The space is in the name because that is what you asked for. The part of the command to pay attention to is this: \ <(
.
The sequence \
is an escaped space and <(
is used to run a subshell with output to a pipe.
So what happens is this.
- The subshell is started with stdout pointing to a pipe.
- The name of the reading end of that pipe happens to be
/dev/fd/63
- The shell prepends a space to that name as you asked for.
- The shell calls
cat
with the file name /dev/fd/63
, which does not exist.
cat
reports an error.
Removing \
from the command will surely make that error message go away.