Существуют ли в POSIX допустимые пути, которые нельзя связать с файлом, обычный или неправильный? То есть, для какого test -e "$LEGITIMATEPOSIXPATHNAME"
не может пройти успешно?
Разъяснение № 1: пути
Под "легальными путями в POSIX" я подразумеваю те, которые, как говорит POSIX, разрешены, а не те, которые POSIX явно не запрещает. Я посмотрел это, и спецификация POSIX называет их символьными строками, которые:
- Используйте только символы из переносимого набора символов имени файла
[a-zA-Z0-9._-]
(см. Http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap03.html#tag_03_276); - Не начинайте с
-
; а также - Длина от 1 до NAME_MAX, число, не указанное для POSIX, не менее 14.
POSIX также допускает, что файловые системы, вероятно, будут более расслабленными, чем эта, но запрещает символы NUL и /
появляться в именах файлов. Обратите внимание, что такое парадигматически имя файла UNIX, как lost+found
, не является FPF, согласно этому определению. Есть еще одна константа PATH_MAX, использование которой не нуждается в дополнительном объяснении.
Идеальный ответ будет использовать FPF, но меня интересует любой пример с именами файлов, которые POSIX явно не запрещает.
Разъяснение № 2: невозможность
Очевидно, что имена путей обычно могут быть связаны с файлом. Но семантика UNIX скажет вам, что есть специальные места, в которых обычно не могут быть созданы произвольные файлы, как в каталоге /dev
. Есть ли в POSIX такие специальные места? Вот к чему идет вопрос.