file2 我的理解是 tee 复制输入并将 1 打印到屏幕。 上面的例子允许 echo 的输出-6ren">
gpt4 book ai didi

linux - 简单的 T 恤示例

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:55 24 4
gpt4 key购买 nike

有人可以解释为什么 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 打开文件 file1file2 进行写入,这有效地截断了它们,并且由于 stdout 只能直接重定向到另一个文件,因此只有最后一个重定向有效(因为它覆盖了之前的)。

关于linux - 简单的 T 恤示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30765730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com