Подтвердить что ты не робот

Есть ли недопустимые имена файлов linux?

Если бы я хотел создать строку, которая, как гарантируется, не будет представлять имя файла, я мог бы поместить в нее один из следующих символов в Windows:

\ / : * ? | < >

например.

this-is-a-filename.png

?this-is-not.png

Есть ли способ идентифицировать строку как "не файл" в Linux?

4b9b3361

Ответ 1

Ограничений почти нет - кроме '/' и '\0' вам разрешено использовать что-либо. Тем не менее, некоторые люди считают, что это не очень хорошая идея, чтобы обеспечить такую ​​гибкость.

Ответ 2

Пустая строка - это единственное действительно недопустимое имя пути в Linux, которое может работать для вас, если вам нужно только одно недопустимое имя. Вы также можете использовать строку типа "///foo", которая не будет каноническим именем пути, хотя она может относиться к файлу ( "/foo" ). Другая возможность была бы похожа на "/dev/null/foo", так как /dev/null имеет значение, отличное от POSIX, не относящееся к каталогу. Если вам нужны только строки, которые не могут ссылаться на обычный файл, вы можете использовать "/" или ".", так как они всегда являются каталогами.

Ответ 3

Я лично считаю, что проблема в том, что проблема не Linux, а приложения, которые используются в Linux.

Возьмем, например, Амарок. Недавно я заметил, что некоторые художники, которых я скопировал с моей машины Windows, не появляясь в библиотеке. Я проверяю и подтверждаю, что файлы были там, а затем я заметил, что некоторые символы в именах папок (Именованные для исполнителя) были представлены с нестандартным символом, а не с реальным символом.

В терминале оболочки имена файлов выглядят еще страннее:/Music/Albums/Einst $'\ 374'rzende\Neubauten - пример того, как странно.

Хотя эти файлы были определенно там, Amarok не мог их увидеть по какой-то причине. Я смог использовать некоторые обманы оболочки, чтобы переименовать их в разумные версии, которые я мог бы переименовать с помощью символов ASCII, используя Musicbrainz Picard. К сожалению, Picard также не смог открыть файлы, пока я их не переименовал, следовательно, потребуется оболочка script.

В целом это сложная область, и она кажется очень сложной, если вы пытаетесь синхронизировать музыкальную коллекцию между Windows и Linux, где определенные имена папок или файлов содержат фанковые символы.

Самый безопасный способ - придерживаться только имен файлов ASCII.