Problems with command line scratch files in zsh

Mike Meyer mwm at
Sun Jun 12 23:47:17 GMT 2005

[Format recovered from top posting.]

In <1118608948.705.6.camel at localhost>, Christopher Black <cblack at> typed:

> On Sun, 2005-06-12 at 03:31 -0500, Mike Meyer wrote:
> > Since going to 5.x with devfd, I've noticed that some of the shell
> > constructs used by zsh (and other shells - I know zsh didn't invent
> > this) quit working. To wit:
> > 
> > guru% wc <(cat /etc/motd)
> > wc: /dev/fd/11: open: No such file or directory
> > 
> > The <(...) construct runs the pipe in (), and replaces the <(...) with
> > the name of the /dev/fd/ entry for the output of that pipe. The file
> > exists for the shell process doing all this. But when the comm process
> > tries to open the file to read the data, the file doesn't exist. This
> > is pretty nasty.
> > 
> > Anyone got any suggestions on how to fix this? A bug report with a
> > patch, maybe (I couldn't find any such bug report)? Workarounds? Maybe
> > this should go to hackers at
> Why not just 'cat /etc/motd | wc' ?

Because I used a trivial example designed to illustrate the problem. A
less trivial example would be:

	comm -12 <(sort file_one) <(sort file_two)

Of course, this can also be rewritten using temp files instead of
pipes. But that will be longer, slower, and uglier.

This worked on 4.X. It ought to work on 5.X.

Mike Meyer <mwm at>
Independent Network/Unix/Perforce consultant, email for more information.

More information about the freebsd-questions mailing list