2015-08-30 88 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”。