我知道2>&1
使您可以将stderr
重定向到任何地方stdout
。
- 但是,在此外壳代码中,
&
是什么意思?不是附加操作员吗? - 是否可以将所有描述符传输到Stdout?
绝对精确 - 操作员>&
确实在操作员之前将描述符合并到操作员之后的描述符中。
因此,如上所述,操作员是>&
,询问&
的意思是没有意义的。
在您的第二个问题上 - 我认为一个操作员不可能/您需要重复每个操作。
控制台应用程序的标准/默认描述符是:
0 - stdin
1 - stdout
2 - stderr
任何其他可以通过应用程序定义的...
编写'控制台'程序时,您有2个不同的流将输出发送到,stdout和sterr。
Stout用于普通输出,Sterr将打印错误消息,默认情况下两者都在控制台上打印。什么是"输出"和什么是"错误",无论如何,如果要重定向到文件,则可以将输出和错误重定向到两个不同的文件 - 但是,如果您希望两者都在同一文件上(或管道)最好的选择是将stderr重定向到Stdout,然后将Stdout转换为文件
有关ampersand的含义,请参见http://en.wikipedia.org/wiki/ampersand#unix_shells