Ваше предположение:
fortune | tee >(?stdout?) | pbcopy
не будет работать, потому что fortune
вывод будет записан в стандартный формат дважды, поэтому вы удвоите вывод до pbcopy
.
В OSX (и других системах поддержки /dev/std{out,err,in}
) вы можете проверить это:
$ echo 1 | tee /dev/stdout | sed 's/1/2/'
2
2
выведите 2
дважды вместо 1
и 2
.
Вы должны использовать другие файловые дескрипторы, например стандартную ошибку через /dev/stderr
:
$ echo 1 | tee /dev/stderr | sed 's/1/2/'
1
2
или используйте tty
для получения подключенного псевдотерминала:
$ echo 1 | tee "$(tty)" | sed 's/1/2/'
1
2
С zsh
и multios
опцией, вам не нужно tee
вообще:
$ echo 1 >/dev/stderr | sed 's/1/2/'
1
2
fortune | tee $(tty) | pbcopy
?