Що таке недійсні символи для імені файлу в OS X?


22

У мене виникають проблеми з пошуком цієї інформації, і проба та помилка підказують мені, що їх може не бути. Що таке недійсні символи для імені файлу в OS X Lion (10.7)?


1
Одинарна косою косою вперед? Один кут нахилу? Одинарний чи подвійний період?

Всі комбінезони та сингли, схоже, спрацьовують, але одинарний та подвійний період не вдається, оскільки вони вже використовуються. Я сподіваюся, що тут є більше .... :)
Родні Фолі

Ви не можете використовувати ASCII NUL. Подумайте трохи, і ви можете помітити, чому ви самі…
Доналі,

@Donal ASCII NUL - це не те, що ви можете просто "набрати" або зробити проблематично помилково.
Родні Фолі

1
Чи можете ви дати нам якийсь контекст, Родні? Було б дуже допомогти у відповіді на це, якби ми трохи зрозуміли, що ти намагаєшся зробити ... AFAIK, є кілька потенційних питань: чесні богу заборонені символи, символи, які неможливо ввести як шлях у термінальній оболонці та символи, які не відображаються належним чином у Finder.
Shog9

Відповіді:


7

HFS Plus дозволяє " Unicode , будь-який символ, включаючи API NUL. ОС може обмежувати деякі символи з застарілих причин".


3
Фактично файлова система HFS + дозволяє всі символи Unicode (оскільки вона представляє імена внутрішньо як рядки Pascal з 2-байтовою довжиною), але AFAIK жоден з API, наданий OS X, не дозволяє створювати / відкривати файли з косою '/'або NUL '\0'в них .
Адам Розенфілд

API, як у вуглеці чи какао? Я припускаю, що термінал знаходиться під такими обмеженнями, але як щодо сценаріїв, які виконуються іншими програмами, такими як запуск?
tobylane

8

Що таке недійсні символи для імені файлу в OS X?

Вікі HFS + :

Дозволені символи у іменах Unicode, будь-який символ, включаючи NUL. API API можуть обмежувати деякі символи з застарілих причин


Наразі Finder не дозволяє вводити кольори у назви файлів, але він дозволяє вводити зворотні риси. Однак символи, показані як косі риски в Finder, відображаються у вигляді оболонок у оболонках, і навпаки. Finder також не дозволяє жодним контрольним символам ASCII.


Bash, здавалося, дозволяє всі контрольні символи, крім \000(NUL). Я перевірив це, запустивши вихід з:

for i in {1..31} 127 0; do echo touch \\$(bc <<< "obase=8;$i"); done

2

ЗДОРОВО

Згідно з Вікіпедією , єдиним недійсним символом є нахил вперед /, але на шарі UNIX.


2
Можливо, :це заборонено на Mac OS Classic, але, звичайно, не на Mac OS X - touch foo:barпрацює чудово.
Адам Розенфілд

1
Відповідь оновлено. Ви можете видалити свій протокол.

5
@Adam: :дійсний у "Unix-шарі", але він перекладається на / з /"шарів Mac" (тобто Finder, більшість діалогових діалогів, пов'язаних з файлами тощо): двокрапка використовується як роздільник у "HFS шляху ", А коса риса використовується як роздільник у" шляхах POSIX ", тому існує двосторонній переклад залежно від того, з яким шаром ви працюєте.
Кріс Джонсен

2
Отже, жодна косою рисою ( /) або колонами ( :) не є безпечною?
Nicolas Miari

2
@NicolasMiari Так. Finder.app не дозволить вам ввести двокрапку і не працюватиме належним чином з назви файлів, які містять її. Шар UNIX не дозволить вам працювати з файлами, що містять косу рису (а точніше; вона переводить її у двокрапку). А потім є інші програми (наприклад, Microsoft Word), які задихаються від будь-якого. Наприклад, якщо ви збережете документ у TextEdit.app під назвою файлу foo/bar.docx(який працює), Microsoft Word не зможе його відкрити.
Конрад Рудольф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.