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