2016-04-14 77 views
-3

當我使用參數將stdin重定向到tee命令時,它顯示兩次字符串。可以解釋這個命令是如何工作的嗎?

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

如果你知道回聲是幹什麼的,而且你知道發球是什麼,那麼這甚至不應該成爲一個問題。 – John3136

+0

Echo命令用於打印字符串,tee命令用於重定向標準輸入...這裏我的問題是爲什麼echo命令在顯示字符串兩次時顯示字符串「 - 」。 –

+0

SO是用於計算機編程的問題,而不是關於使用計算機的一般問題。 unix.stackexchange.com或superuser.com是這類問題的更好地方。 – Barmar

回答

1

好,tee的手冊頁說

複製標準輸入到每個文件,也到標準輸出。

對,所以它需要標準輸入,即who is this\n並將其複製到標準輸出。這會使who is this\n在您的終端上顯示一次。此外,它還會將輸入複製到名爲-的文件中。在BSD上,這將創建一個名爲-的文件並將輸入複製到那裏。然而,GNU tee將-解釋爲標準輸出,這是有點常見的事情。因此,它會再次將其複製到標準輸出。

,關於BSD工作的Linux是

$ 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

發球使用重定向它的輸入到文件&打印它在標準輸出的同時。

相關問題