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