Підсумок:
- Windows: будь-що, крім контрольних символів ASCII та
\/:*?"<>|
- Linux, OS-X: усе, крім нульового або
/
На всіх платформах найкраще уникати недрукувальних символів, таких як контрольні символи ASCII.
Windows
У Windows Windows Explorer не дозволяє контролювати символи або \/:*?"<>|
Ви можете використовувати пробіли. Якщо ви використовуєте пробіли, вам часто доведеться цитувати ім'я файлу, коли воно використовується в командному рядку (але програми GUI, наскільки я знаю, не впливають). Файлова система 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).