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