为什么简单的重定向在Windows cmd中不起作用?
我希望任何命令的输出不只是显示在控制台上,还要显示在文件上。 我用了简单的命令,
dir > out.txt 1>&2
现在我在命令中假设的是,dir的输出将转到out.txt,而1是stdout将被重定向到2,这是stderr。
我的问题是输出显示在控制台中,但没有写入out.txt
现在控制台将显示stdout和stderr,所以我使用stderr在控制台上显示我的输出。
请考虑,他们可能有其他方式来做同样的事情。 但我想知道我的逻辑有什么问题。
每个流只有一个目标。 在你的代码中
dir > out.txt 1>&2
您正在请求由dir
发送到stdout的数据的目标将是一个文件,并且在它之后,您再次更改stdout流的目标,并将其分配给stderr流中目标的副本。
没有办法只用重定向操作符。 你需要某种tee
工具。 在这里有一个很好的答案收集在给你的解决方案编码在几种语言。