1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-05 23:11:11 +02:00

33740: FAQ: another way of avoiding MULTIOs effects on pipes

This commit is contained in:
Stephane Chazelas 2014-11-23 18:27:41 +00:00 committed by Peter Stephenson
parent 02bca2ea0f
commit ff292af95f
3 changed files with 16 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2014-11-23 Peter Stephenson <p.w.stephenson@ntlworld.com>
* 33740: Stephane: Etc/FAQ.yo: Another way of avoiding MULTIO
effects on pipes.
2014-11-22 Barton E. Schaefer <schaefer@zsh.org>
* 33763 (cf. Baptiste Daroussin 33747): Doc/Zsh/mod_system.yo:

View file

@ -1061,6 +1061,9 @@ for arrays which keep only the first occurrence of duplicated values
item(tt(hide))(
for parameters with the `hide' flag
)
item(tt(hideval))(
for parameters with the `hideval' flag
)
item(tt(special))(
for special parameters defined by the shell
)

View file

@ -1784,7 +1784,14 @@ sect(Why is my output duplicated with `tt(foo 2>&1 >foo.out | bar)'?)
to both files when the redirector appears twice. What's going on in the
first example is exactly the same, however the second redirector is
disguised as a pipe. So if you want to turn this effect off, you need
to unset the option mytt(MULTIOS).
to unset the option mytt(MULTIOS), or alternatively write the following:
verb(
% { print output; print error >&2 } 2>&1 >&- >foo.out | sed 's/error/erratic/'
erratic
)
By closing stdout with tt(>&-), we're cancelling the previous redirections
(to the pipe) and start anew with tt(>foo.out) instead of adding it as a
redirection target to stdout.
sect(What are these `^' and `~' pattern characters, anyway?)