Назад | Перейти на главную страницу

Linux / Windows / Unix /… имена файлов: какие символы разрешены? Какие из них не экранированы?

Какие символы разрешены и какие из них необходимо экранировать в командной строке в разных операционных системах?

В имени файла * nix запрещены только символы: NUL и /. В Windows только NUL, :, и \ действительно не разрешены, но многие приложения еще больше ограничивают это, также предотвращая ?, *, +, и %.

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

В статье Википедии о Имена файлов.

Вы можете найти это эссе информативным: Исправление имен файлов Unix / Linux / POSIX.

В этой статье сравниваются OS X и Windows XP: X против XP: запрещенные символы в именах файлов (PDF, см. Стр. 64-66).

Вещи, которых не должно быть в именах файлов за 1000 долларов, Алекс

Я не знаю, какие персонажи должны быть ООН-escaped, но в Linux, вероятно, не рекомендуется экранировать символы, которые могут иметь особое значение, такие как «n» (новая строка), «t» (табуляция) и другие, но обычно это не проблема при файловых операциях. Возможно, вы имеете в виду «сбежавший», а не «не сбежавший». Наиболее распространены те, которые интерпретируются оболочкой, например, пробел, «>», «<» и т. Д. См. Некоторые из статей, на которые я ссылался, для их обсуждения.

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

\ / : * ? " < > |

Хорошая ссылка здесь:

Именование файлов, путей и пространств имен
http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx

Microsoft далее заявляет:

"... на настольных платформах на базе Windows недопустимые символы пути могут включать символы ASCII / Unicode от 1 до 31, а также кавычки ("), меньше (<), больше (>), вертикальную черту (|), обратный пробел (\ b), null (\ 0) и табуляция (\ t) ".

http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars.aspx

В Linux и других системах, совместимых с POSIX, символ «/» зарезервирован как разделитель каталогов, а «\ 0» (символ NULL) обозначает конец строки. Все остальное разрешено.