Резюме:
- Windows: все, кроме управляющих символов ASCII и
\/:*?"<>|
- Linux, OS-X: все, кроме нуля или
/
На всех платформах лучше избегать непечатных символов, таких как управляющие символы ASCII.
Windows
В Windows проводник Windows не допускает управляющие символы или \/:*?"<>|
вы можете использовать пробелы. Если вы используете пробелы, вам часто придется заключать в кавычки имя файла при использовании из командной строки (но насколько я знаю, приложения с графическим интерфейсом не затрагиваются). Файловая система Windows, такая как NTFS, очевидно, хранит кодировку с именем файла, но UTF-16 является стандартным.
Некоторые части Windows чувствительны к регистру, другие части не чувствительны к регистру. В файловой системе Windows NTFS легко создавать отдельные имена файлов, такие как «Ab» и «ab». Эти имена относятся к отдельным файлам, которые содержат отдельный отдельный контент. Тем не менее, хотя в командной строке Windows будут успешно перечислены оба файла с помощью dir
, вы не можете легко получить доступ или манипулировать одним из них с помощью таких команд, как type
. Смотри ниже.
Linux, OS-X
В Linux и OS-X /
запрещено только печатный набор ASCII. Некоторые символы (например, метасимволы оболочки *?!
) вызовут проблемы в командной строке и потребуют, чтобы имя файла было соответствующим образом заключено в кавычки или экранировано.
Файловые системы Linux, такие как ext2, ext3, не зависят от набора символов (я думаю, они просто более или менее воспринимают его как поток байтов - только нули и /
запрещены). Это означает, что вы можете хранить имена файлов в кодировке UTF-8. Я полагаю, что это зависит от оболочки или другого приложения, чтобы знать, какую кодировку использовать для правильного преобразования имени файла для отображения или обработки.
Заключение
Таким образом, вы могли бы безопасно использовать что-то вроде ✣
(если бы не было так сложно печатать)
Чувствительность к регистру (в) в Windows
C> dir /B
Ab
aB
аB
C> type Ab
b
b
C> type aB
b
b
C> type аB
unicode homograph
Обратите внимание, что мы не можем набрать содержимое второго файла, команда Windows type
просто возвращает содержимое Ab. Третий файл также будет отличаться от aB в Linux.
(Windows 10 NTFS).