回答:
あなたの仮定:
fortune | tee >(?stdout?) | pbcopy
fortune
出力は標準出力に2回書き込まれるため機能しません。そのため、への出力を2倍にしますpbcopy
。
OSX(および他のシステムサポート/dev/std{out,err,in}
)では、次のように確認できます。
$ echo 1 | tee /dev/stdout | sed 's/1/2/'
2
2
andの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
tee $(tty)
または、知っていますかtee /dev/tty
tee
常に標準出力に書き込みます。標準出力がすでに行われている端末に加えてコマンドにデータを送信する場合は、そのコマンドでプロセス置換を使用します。(で始まるにもかかわらず>
、プロセス置換は標準出力をリダイレクトせず、tee
コマンドはそれをパラメーターと見なします。)
fortune | tee >(pbcopy)
fortune | tee $(tty) | pbcopy
ですか?