我想输出任何命令,不仅要在控制台上显示,还要在文件中显示。我用过简单的命令,
dir > out.txt 1>&2
现在我在这里假设的是,dir的输出将转到out.txt, 1 stdout 将被重定向到 2 是 stderr 。
我的问题是输出显示在控制台中,但没有写入out.txt
现在控制台将显示stdout和stderr,所以我使用stderr在控制台上显示我的输出。
请考虑,他们可能以任何其他方式做同样的事情。但我想知道我的逻辑有什么问题。
答案 0 :(得分:0)
每个流只有一个目标。在你的代码中
dir > out.txt 1>&2
您要求dir
发送到stdout的数据的目标将是一个文件,然后在它之后再次更改stdout流的目标,并将其分配给stderr流中的目标副本
仅使用重定向运算符无法实现。您需要某种tee
实用程序。 SO提供了很多答案,为您提供多种语言的解决方案。