有人可以解释为什么 tee 在这里工作吗:
echo "testtext" | tee file1 > file2
我的理解是 tee 复制输入并将 1 打印到屏幕。
上面的例子允许 echo 的输出被发送到 2 个文件,第一个重定向到第二个。
我希望“testtext”被打印到屏幕上并通过 file1 并登陆 file2。类似于以下示例中的文本如何仅在 file2 中结束。
echo "testtext" > file1 > file2
谁能解释一下我的理解中缺少什么?
编辑
是不是因为它写入文件然后写入被重定向的标准输出?
最佳答案
您的描述是正确的:tee 从 stdin 接收数据并将其写入文件和 stdout。但是,当您将 tee 的标准输出重定向到另一个文件时,显然没有任何内容写入终端,因为数据最终位于第二个文件中。
Is it because its writing to file and then to stdout which gets redirected?
没错。
您尝试做的事情可以这样完成(演示 tee 的工作原理):
$ echo "testtext" | tee file1 | tee file2
testtext
但是由于来自 gnu coreutils 的 tee 接受要指定的多个输出文件,所以可以这样做:
$ echo "testtext" | tee file1 file2
testtext
但是您认为通过 file1 并登陆 file2 的想法是不正确的。您的 shell 示例:
echo "testtext" > file1 > file2
使 shell 打开文件 file1
和 file2
进行写入,这有效地截断了它们,并且由于 stdout 只能直接重定向到另一个文件,因此只有最后一个重定向有效(因为它覆盖了之前的)。
关于linux - 简单的 T 恤示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30765730/