Что означает >&?

Меня немного смутило это выражение:

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

Я знаю, что &>filenameбудет перенаправлять как stdout, так и stderr в файл filename. Но в этом случае амперсанд стоит после знака «больше». Он выглядит так: M>&N, где Mи N— файловые дескрипторы.

Соответствует ли во фрагменте выше M=1и N='compiler.txt'? Чем именно это отличается от:

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

Как я понимаю, каждый открытый файл связан с файловым дескриптором больше 2. Это правильно?

Если да, взаимозаменяемо ли имя файла с его файловым дескриптором в качестве цели перенаправления?

71
задан Garrett 13 May 2014 в 00:44
поделиться