Your assumption:
fortune | tee >(?stdout?) | pbcopy
won't work because the fortune
output will be written to standard out twice, so you will double the output to pbcopy
.
In OSX (and other systems support /dev/std{out,err,in}
), you can check it:
$ echo 1 | tee /dev/stdout | sed 's/1/2/'
2
2
output 2
twice instead of 1
and 2
. tee
outputs twice to stdout
, and tee
process's stdout
is redirected to sed
by the pipe, so all these outputs run through sed
and you see double 2
here.
You must use other file descriptors, example standard error through /dev/stderr
:
$ echo 1 | tee /dev/stderr | sed 's/1/2/'
1
2
or use tty
to get the connected pseudo terminal:
$ echo 1 | tee "$(tty)" | sed 's/1/2/'
1
2
With zsh
and multios
option set, you don't need tee
at all:
$ echo 1 >/dev/stderr | sed 's/1/2/'
1
2
fortune | tee $(tty) | pbcopy
?