2

命令:

echo "a" | tee `tty`

输出:

a

命令:

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

输出:

a
a

与当前终端连接的文件是/dev/pts/0. 两个命令不应该产生相同的输出吗?我在这里想念什么?

4

1 回答 1

2

tee将标准输入复制到命令行上给出的所有文件描述符标准输出,因此如果其中一个文件是当前终端(您也可以使用-),那么输入将在标准输出上写入两次。

在第一种情况下,stdin 没有连接到 tty(而是连接到echo命令的输出),所以tty给出not a tty. 因此命令变为echo "a" | tee not a tty,您将拥有三个文件(称为“not”、“a”和“tty”),每个文件都包含“a”,以及写入标准输出的“a”。

于 2015-08-30T08:38:56.683 回答