如果 2>&1 将标准错误重定向到标准输出,那不就是 '>' 的作用吗?那么 '2>&1' 和 '>' 是否具有相同的含义或者它们在某些方面有所不同?关于重定向的解释似乎围绕着它们各自含义之间的差异展开,但并没有说明 '2>&1' 和 '>' 是否相同。有人可以告诉我哪里错了吗?
如果 2>&1 将标准错误重定向到标准输出,那不就是 '>' 的作用吗?那么 '2>&1' 和 '>' 是否具有相同的含义或者它们在某些方面有所不同?关于重定向的解释似乎围绕着它们各自含义之间的差异展开,但并没有说明 '2>&1' 和 '>' 是否相同。有人可以告诉我哪里错了吗?
>
有其自身的意义。它是一个重定向运算符。2>
可能正在重定向stderr
,但stderr
不是任务的唯一输出。还有stdout
which is 1 并且还有其他可以重定向到的地方。例如
>myOutput.txt
,会将输出(我相信仅stdout
默认情况下)从该任务重定向到您的文件。然后是仅
1>stdOut.txt
显式重定向到输出文件。stdout
通过扩展你也可以做
2>stdErr.txt
这样做的原因
2>&1
是重定向stderr
到相同的流,stdout
以便您只有一个流作为命令的输出。然后可以将该组合输出作为一个命令重定向。所以而不是
你可以做
......这不是真的正确......如果你想在同一个地方发送stderr和stdout,
2>&1
必须在命令末尾使用。在这里,stderr 发送到您的 stdout 而不重定向(控制台),stderr 发送到文件而不影响 stderr。