命令:
echo "a" | tee `tty`
输出:
a
命令:
echo "a" | tee /dev/pts/0
输出:
a
a
与当前终端连接的文件是/dev/pts/0
。
两个命令都不应该产生相同的输出吗?我在这里缺少什么?
答案 0 :(得分:2)
tee
将stdin复制到命令行和给出的所有文件描述符到stdout,所以如果其中一个文件是当前终端(你也可以使用-
)然后输入将在stdout上写两次。
在第一种情况下,stdin没有连接到tty(而是连接到echo
命令的输出),因此tty
给出了not a tty
。因此命令变为echo "a" | tee not a tty
,你将有三个文件(称为“not”“a”和“tty”),每个文件包含“a”,以及写入stdout的“a”。