Problems with command line scratch files in zsh

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


[Format recovered from top posting.]

In <1118608948.705.6.camel at localhost>, Christopher Black <cblack at securecrossing.com> 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 freebsd.org?
> 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
-- 
Mike Meyer <mwm at mired.org>		http://www.mired.org/consulting.html
Independent Network/Unix/Perforce consultant, email for more information.


More information about the freebsd-questions mailing list