Меня немного смутило это выражение:
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. Это правильно?
Если да, то является ли имя файла взаимозаменяемым с его файловым дескриптором в качестве цели перенаправления?