Date: Sun, 12 Jun 2005 18:47:14 -0500 From: Mike Meyer <mwm@mired.org> To: Christopher Black <cblack@securecrossing.com> Cc: questions@freebsd.org Subject: Re: Problems with command line scratch files in zsh Message-ID: <17068.51586.885638.130044@guru.mired.org> In-Reply-To: <1118608948.705.6.camel@localhost> References: <17067.62149.92183.56827@guru.mired.org> <1118608948.705.6.camel@localhost>
next in thread | previous in thread | raw e-mail | index | archive | help
[Format recovered from top posting.] In <1118608948.705.6.camel@localhost>, Christopher Black <cblack@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@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@mired.org> http://www.mired.org/consulting.html Independent Network/Unix/Perforce consultant, email for more information.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?17068.51586.885638.130044>