Есть ли недопустимые имена Linux? - PullRequest
49 голосов
/ 21 августа 2009

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

\ / : * ? | < >

, например

this-is-a-filename.png

?this-is-not.png

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

Ответы [ 3 ]

41 голосов
/ 21 августа 2009

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

15 голосов
/ 21 августа 2009

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

0 голосов
/ 16 мая 2014

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

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

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

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

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

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

...