以下 powershell 命令按预期工作:
get-process | tee-object -filepath C:\Test1\testfile2.txt
但如果我将其改为:
git pull | tee-object -filepath C:\Test1\testfile2.txt
我看到 git pull 命令正常执行,但 C:\Test1\testfile2.txt 仍然有来自 get-process 的输出。
知道为什么吗?
答案1
- 在 cmd.exe 中有两个输出流,stdoutput 和 stderroroutput,编号分别为 1 和 2。
>
如果没有手动提供不同的流号,则批处理/控制台会在重定向前添加 1 。- 看起来 git 输出到 stderroroutput,所以 2>&1 将 stderroroutput(2) 与 stdoutput(1) 合并,以便它通过管道传输,并且 tee 能够回显并存储到文件中。
- 在 powershell 中还有其他流,请参阅powershell 流