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