【发布时间】:2012-11-11 19:37:55
【问题描述】:
我知道2>&1 可以让您将stderr 重定向到stdout 的任何位置。
- 但是
&在这个shell 代码中是什么意思?不是追加操作符吗? - 是否可以将所有描述符流式传输到标准输出?
【问题讨论】:
我知道2>&1 可以让您将stderr 重定向到stdout 的任何位置。
& 在这个shell 代码中是什么意思?不是追加操作符吗?【问题讨论】:
绝对准确 - 运算符 >& 将在运算符之前记录的描述符合并到在运算符之后写入的描述符。
所以如上所述,运营商是>&,问& 是什么意思没有任何意义。
关于您的第二个问题 - 我认为只有一个操作员是不可能的/您需要为您需要的每个操作重复它。
控制台应用程序的标准/默认描述符是:
0 - stdin
1 - stdout
2 - stderr
任何其他都可以由应用程序定义...
【讨论】:
当您编写“控制台”程序时,您有 2 个不同的流可以将输出发送到 stdout 和 sterr。
stout 用于正常输出,sterr 用于打印错误消息,默认情况下两者都打印在控制台上。什么是“输出”和什么是“错误”并没有明确的划分,无论如何,如果您想重定向到一个文件,您可以将输出和错误重定向到两个不同的文件 - 但如果您希望两者都在同一个文件上(或管道)您最好的选择是将标准错误重定向到标准输出,然后将标准输出转储到文件中
【讨论】: