什么是&&意思?

我对这个expression有些困惑:

gcc -c -g program.c >& compiler.txt 

我知道&>filename名将redirectstdout和stderr文件的文件filename 。 但在这种情况下,&符号大于符号。 它看起来像M>&N的forms,其中MN是文件描述符。

在上面的代码片断中, M=1N='compiler.txt' ? 这与以下不同:

 gcc -c -g program.c > compiler.txt (ampersand removed) 

我的理解是,每个打开的文件都与一个大于2的文件描述符关联。这是正确的吗?

如果是这样,是一个文件名与其文件描述符可以互换作为redirect的目标?

这与&>相同。 从bash的manpage:

redirect标准输出和标准错误此构造允许将标准输出(文件描述符1)和标准错误输出(文件描述符2)redirect到名称为单词扩展的文件。

 There are two formats for redirecting standard output and standard error: &>word and >&word Of the two forms, the first is preferred. This is semantically equiva- lent to >word 2>&1