Написать
ls -l
И вы увидите что-то вроде:
drwxrwxr-x 3 username username 4096 lip 28 01:20 filename.txt
Значения, конечно, могут отличаться, и, вероятно, будет много таких строк для разных файлов. То, что вы ищете, это информация drwxr...., которая говорит вам о разрешениях.
Здесь у вас есть их значения.
Использование отдельного файлового дескриптора для команды read
— хорошее решение.
Вам гарантировано, что файловые дескрипторы от 3 до 9 будут доступны для этого. Оболочка не будет использовать их ни для чего другого. Только файловые дескрипторы 0, 1 и 2 имеют предопределенное использование, и вы можете обнаружить, что использование дескрипторов со значениями больше 9 работает, но такой гарантии нет.
Стандарт POSIX гласит:
Open files are represented by decimal numbers starting with zero. The largest possible value is implementation-defined; however, all implementations shall support at least 0 to 9, inclusive, for use by the application. These numbers are called "file descriptors". The values 0, 1, and 2 have special meaning and conventional uses and are implied by certain redirection operations; they are referred to as standard input, standard output, and standard error, respectively.
Использование файловых дескрипторов выше 9 может быть опасным, в зависимости от того, какой номер и оболочку вы используете:
bash
внутри использует fd 255. zsh
, dash
и pdksh
используют внутри себя fd 10. ksh93
использует fd 3 (, но это похоже на ошибку, она связана с каталогом, который служит точкой монтирования текущей файловой системы ).