Какие недопустимые символы для имени файла в OS X?

22

У меня проблемы с поиском этой информации, а метод проб и ошибок говорит мне, что ее может и не быть. Какие недопустимые символы для имени файла в OS X Lion (10.7)?

Родни Фоли
источник
1
Единственная косая черта? Единственная обратная косая черта? Единственный или двойной период?
Кажется, что все комбинированные и одиночные слэши работают, но одиночные и двойные периоды терпят неудачу, потому что они уже используются. Я надеюсь, что это еще не все .... :)
Родни Фоли
Вы не можете использовать ASCII NUL. Подумайте немного, и вы можете определить, почему сами…
Донал Феллоуз
@Donal ASCII NUL - это не то, что вы можете просто «напечатать» или сделать по ошибке проблемно.
Родни Фоли
1
Можете ли вы дать нам немного контекста, Родни? Было бы очень полезно ответить на этот вопрос, если бы мы немного поняли, что вы пытаетесь сделать ... AFAIK, есть несколько потенциальных проблем: честные запрещенные персонажи, персонажи, которых невозможно ввести как путь в терминальной оболочке и символы, которые не отображаются должным образом в Finder.
Shog9

Ответы:

7

HFS Plus позволяет « Unicode , любой символ, включая NUL. API OS могут ограничить некоторые символы по старым причинам»

tobylane
источник
3
Технически, файловая система HFS + разрешает все символы Юникода (поскольку она представляет имена внутренне как строки Pascal длиной 2 байта), но AFAIK ни один из API, предоставляемых OS X, не позволяет создавать / открывать файлы с косой чертой '/'или NUL '\0'в них. ,
Адам Розенфилд
API как в Carbon или Какао? Я предполагаю, что Терминал находится под такими ограничениями, но как насчет скриптов, запускаемых другими программами, такими как launchd?
tobylane
8

Какие недопустимые символы для имени файла в OS X?

вики HFS + :

Допустимые символы в именах файлов Unicode, любые символы, включая NUL. API-интерфейсы ОС могут ограничивать некоторые символы по устаревшим причинам


В настоящее время Finder не позволяет вводить двоеточия в именах файлов, но он позволяет вводить обратную косую черту. Однако символы, показанные как косые черты в Finder, отображаются как двоеточия в оболочках, и наоборот. Finder также не допускает никаких управляющих символов ASCII.


Казалось, что в Bash разрешены все управляющие символы, кроме \000(NUL). Я проверил это, запустив вывод из:

for i in {1..31} 127 0; do echo touch \\$(bc <<< "obase=8;$i"); done
LRI
источник
2

отредактированный

Согласно Википедии , единственным недопустимым символом является косая черта /, но на уровне UNIX.


источник
2
Возможно, :это запрещено в Mac OS Classic, но, конечно, не в Mac OS X - touch foo:barработает отлично.
Адам Розенфилд
1
Ответ был обновлен. Вы можете убрать свое отрицательное мнение.
5
@Adam: :допустимо в «слое unix», но оно переводится в / из /«слоев» Mac (т. Е. Finder, большинство диалогов, связанных с файлами и т. Д.): Двоеточие используется в качестве разделителя в «путях HFS». », А косая черта используется в качестве разделителя в« путях POSIX », поэтому существует двусторонняя трансляция в зависимости от того, с каким« слоем »вы работаете.
Крис Джонсен
2
Таким образом, нет безопасной косой черты ( /) или двоеточия ( :), чтобы быть в безопасности?
Николас Миари
2
@NicolasMiari Да. Finder.app не позволит вам ввести двоеточие и не будет правильно работать с именами файлов, которые его содержат. Слой UNIX не позволит вам работать с файлами, содержащими косую черту (точнее, он переводит его в двоеточие). И затем есть другие приложения (например, Microsoft Word), которые подавляются либо. Например, если вы сохраните документ в TextEdit.app под именем файла foo/bar.docx(который работает), Microsoft Word не сможет его открыть.
Конрад Рудольф