Резюме:
- 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
Обратите внимание, что мы не можем набрать содержимое второго файла, команда type
Windows просто возвращает содержимое Ab. Третий файл также будет отличаться от aB в Linux.
(Windows 10 NTFS).