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