2016-04-14 2 views
-3

引数でstdin to teeコマンドをリダイレクトすると、文字列が2回表示されます。このコマンドの仕組みを説明できますか?

$ echo who is this | tee - 
who is this 
who is this 
+1

エコーが何をしているのか知っていて、あなたがティーが何をしているのか分かっているなら、これは疑問ではありません。 – John3136

+0

Echoコマンドは文字列を出力するために使用され、teeコマンドはstdinをリダイレクトするために使用されます...ここで私の質問は、echoコマンドが文字列を2回表示する理由です。 –

+0

はコンピュータプログラミングに関する質問であり、コンピュータの使用に関する一般的な質問ではありません。 unix.stackexchange.comまたはsuperuser.comは、このような質問のためのより良い場所です。 – Barmar

答えて

1

まあ、teeのmanページには、入力の各ファイルに、また、標準出力に標準

コピーを言います。

これは標準入力(who is this\n)で、これを標準出力にコピーします。これにより、端末でwho is this\nが一度表示されます。さらに、入力を-というファイルにコピーします。 BSDでは、-というファイルが作成され、そこに入力がコピーされます。しかし、GNU teeは、標準出力として-を解釈していますが、やや一般的なことです。したがって、標準出力に再度コピーします。

BSD上で動作したバージョンのLinuxあなたはまた、それが4回文字列を表示させることができ

$ echo who is this | tee /dev/stdout 
who is this 
who is this 

です:

$ echo who is this | tee /dev/stdout /dev/stdout /dev/stdout # on Linux alternatively: tee - - - 
who is this 
who is this 
who is this 
who is this 
+0

標準入力または出力を意味するために ' - 'を使用することは、多くのプログラムの一般的な慣例です。 – Barmar

+0

確かに、私が書いたように。しかし、それは時々曖昧になる可能性があり、私はOPがそれを説明しているかどうかは分かりませんでした。 –

0

ティーは、それが&印刷、それをファイルに入力だリダイレクトするために使用されます同時にstdoutに。

関連する問題