From: "Bart Schaefer" <schaefer@brasslantern.com>
To: Zsh hackers list <zsh-workers@sunsite.dk>
Subject: Re: Piping stderr (was Re: Two bug reports)
Date: Sun, 24 Mar 2002 19:02:07 +0000 [thread overview]
Message-ID: <1020324190207.ZM30608@candle.brasslantern.com> (raw)
In-Reply-To: <Pine.LNX.4.33L2.0203240032180.20227-100000@phong.blorf.net>
In-Reply-To: <1016988453.3443.1.camel@localhost.localdomain>
On Mar 24, 1:01am, Wayne Davison wrote:
} Subject: Re: Piping stderr (was Re: Two bug reports)
}
} On Sat, 23 Mar 2002, Bart Schaefer wrote:
} >
} > You mean, other than `2>>(...)'?
}
} (I had apparently neglected to find that syntax when I was searching
} the zsh man page.)
The man page could stand improvement in this area. Even though pipes are
not redirections, people tend to think of them that way, and it's very
confusing that >(...) and |& are not at least cross-referenced in the
same section as all the redirection operators. Even `|&' is buried in
the middle of a boring-looking paragraph in the Shell Grammar section,
and never metioned again.
} So, I suppose that Peter's reply to David Hughes could be ammended to
}
} /bin/sh -c 'echo out; echo err >&2' >/dev/null 2>>(cat)
}
} The bad thing about this idiom is that it doesn't wait for "cat" to
} finish before moving on.
That's a separate bug that I've been complaining about for a while. I
really think zsh should be tracking >(...) as a job and waiting for it
rather than treating it as if disowned. That would be a much cleaner
solution from the viewpoint of the shell language (though possibly a bit
messier internally) than would adding a new pipe syntax.
As I pointed out in a follow-up you can work around it by doing an extra
pipe:
/bin/sh -c 'echo out; echo err >&2' >/dev/null 2>>(cat) | cat
In fact (hand smacks forehead), just add braces:
{ /bin/sh -c 'echo out; echo err >&2' >/dev/null 2>>(cat) }
} > The problem being that in order to pipe "just stderr" you have
} > to dispose of stdout somehow.
}
} No, stdout doesn't need to be affected at all. If the user wants stdout
} to go somewhere other than the default, it can be redirected explicitly
} (as I did above).
Leaving stdout connected to the parent's stdout is still "disposing of"
stdout; it's equivalent to:
zsh% 3>&1 { { /bin/sh -c 'echo out; echo err >&2' >&3 } |& tr a-z A-Z }
out
ERR
(The placement of `3>&1' there is illustrative, it could just as easily
go after the last close brace.) You can always defeat multios by adding
braces.
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.brasslantern.com
Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net
next prev parent reply other threads:[~2002-03-24 19:02 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-03-22 12:24 Two bug reports: alias/function disagreements; incorrect redirection David Hughes
2002-03-22 12:41 ` Peter Stephenson
2002-03-23 21:18 ` Piping stderr (was Re: Two bug reports) Wayne Davison
2002-03-23 22:45 ` Bart Schaefer
2002-03-23 23:47 ` Multios again (Re: Piping stderr (was Re: Two bug reports)) Bart Schaefer
2002-03-24 9:01 ` Piping stderr (was Re: Two bug reports) Wayne Davison
2002-03-24 16:47 ` Borsenkow Andrej
2002-03-24 19:02 ` Bart Schaefer [this message]
2002-03-24 19:09 ` Bart Schaefer
2002-03-24 19:50 ` PATCH: (Doc) " Bart Schaefer
2002-03-25 0:17 ` Wayne Davison
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1020324190207.ZM30608@candle.brasslantern.com \
--to=schaefer@brasslantern.com \
--cc=zsh-workers@sunsite.dk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).