Ваше припущення:
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
?