我对这个表达式有点困惑:
gcc -c -g program.c >& compiler.txt
我知道 &>filename
可以将标准输出和标准错误都重定向到文件 filename
。但在这种情况下,和号是大于号之后的。它看起来像是这个形式:M>&N
,其中 M
和 N
是文件描述符。
在上面的片段中,M=1
,N='compiler.txt'
吗?这与以下内容有什么不同:
gcc -c -g program.c > compiler.txt (ampersand removed)
我的理解是每个打开的文件都与大于2的文件描述符相关联。这正确吗?
如果是这样,那么文件名是否可以与其文件描述符交换作为重定向的目标?
>&
是csh和tcsh用于重定向标准输出和标准错误输出的语法。这可能就是为什么bash也能接受它的原因。 - Keith Thompson&>word
和>word 2>&1
在语义上是等价的?“这”所指的先行词对我来说不太清楚。 - geneorama&>word
,>word 2>&1
和>&word
完全相同。" - jordanm>
只会重定向标准输出,而不会重定向错误输出。(也许我应该将未来的评论重定向到/dev/null
) - geneorama