Ответ 1
Ограничений почти нет - кроме '/'
и '\0'
вам разрешено использовать что-либо. Тем не менее, некоторые люди считают, что это не очень хорошая идея, чтобы обеспечить такую гибкость.
Если бы я хотел создать строку, которая, как гарантируется, не будет представлять имя файла, я мог бы поместить в нее один из следующих символов в Windows:
\ / : * ? | < >
например.
this-is-a-filename.png
?this-is-not.png
Есть ли способ идентифицировать строку как "не файл" в Linux?
Ограничений почти нет - кроме '/'
и '\0'
вам разрешено использовать что-либо. Тем не менее, некоторые люди считают, что это не очень хорошая идея, чтобы обеспечить такую гибкость.
Пустая строка - это единственное действительно недопустимое имя пути в Linux, которое может работать для вас, если вам нужно только одно недопустимое имя. Вы также можете использовать строку типа "///foo
", которая не будет каноническим именем пути, хотя она может относиться к файлу ( "/foo
" ). Другая возможность была бы похожа на "/dev/null/foo
", так как /dev/null
имеет значение, отличное от POSIX, не относящееся к каталогу. Если вам нужны только строки, которые не могут ссылаться на обычный файл, вы можете использовать "/
" или ".
", так как они всегда являются каталогами.
Я лично считаю, что проблема в том, что проблема не Linux, а приложения, которые используются в Linux.
Возьмем, например, Амарок. Недавно я заметил, что некоторые художники, которых я скопировал с моей машины Windows, не появляясь в библиотеке. Я проверяю и подтверждаю, что файлы были там, а затем я заметил, что некоторые символы в именах папок (Именованные для исполнителя) были представлены с нестандартным символом, а не с реальным символом.
В терминале оболочки имена файлов выглядят еще страннее:/Music/Albums/Einst $'\ 374'rzende\Neubauten - пример того, как странно.
Хотя эти файлы были определенно там, Amarok не мог их увидеть по какой-то причине. Я смог использовать некоторые обманы оболочки, чтобы переименовать их в разумные версии, которые я мог бы переименовать с помощью символов ASCII, используя Musicbrainz Picard. К сожалению, Picard также не смог открыть файлы, пока я их не переименовал, следовательно, потребуется оболочка script.
В целом это сложная область, и она кажется очень сложной, если вы пытаетесь синхронизировать музыкальную коллекцию между Windows и Linux, где определенные имена папок или файлов содержат фанковые символы.
Самый безопасный способ - придерживаться только имен файлов ASCII.