2015-08-30 132 views
1

命令:命令替換Bash中的TTY

echo "a" | tee `tty` 

輸出:

a 

命令:

echo "a" | tee /dev/pts/0 

輸出:

a 
a 

與當前終端連接的文件是/dev/pts/0。 這兩個命令不應該產生相同的輸出嗎?我在這裏錯過了什麼?

回答

2

tee複製標準輸入到命令行到標準輸出上給出的所有文件描述符,所以如果其中一個文件是當前終端(你也可以使用-),然後輸入將在標準輸出兩次寫入。

在第一種情況下,stdin沒有連接到tty(但是連接到echo命令的輸出),因此tty給出not a tty。因此命令變爲echo "a" | tee not a tty,並且您將有三個文件(稱爲「不是」「a」和「tty」),每個文件包含「a」以及寫入標準輸出的「a」。