2

我知道这2>&1使您可以重定向stderr到任何地方stdout

  • 但是&这个shell代码是什么意思?不是附加运算符吗?
  • 是否可以将所有描述符流式传输到标准输出?
4

2 回答 2

5

绝对准确 - 运算符>&确实将在运算符之前记录的描述符合并到在运算符之后写入的描述符。

因此,如上所述,操作员是>&并且询问&其中的含义是没有任何意义的。

对于您的第二个问题-我认为一个操作员不可能/您需要为您需要的每个操作重复它。

控制台应用程序的标准/默认描述符是:

0 - stdin
1 - stdout
2 - stderr

任何其他都可以由应用程序定义...

于 2012-11-11T19:49:52.913 回答
1

当您编写“控制台”程序时,您有 2 个不同的流可以将输出发送到 stdout 和 sterr。

stout 用于正常输出,sterr 用于打印错误消息,默认情况下两者都打印在控制台上。什么是“输出”和什么是“错误”并没有明确的划分,无论如何,如果您想重定向到一个文件,您可以将输出和错误重定向到两个不同的文件 - 但如果您希望两者都在同一个文件上(或管道)您最好的选择是将标准错误重定向到标准输出,然后将标准输出转储到文件中

&符号的含义请参见http://en.wikipedia.org/wiki/Ampersand#Unix_shells

于 2012-11-11T19:51:05.393 回答