Краткий ответ
- Windows не допускает следующие символы:
<>:"/\|?*
( источник )
- Больше символов, которые не приветствуются: пробел
и точка .
( источник )
- Инструменты командной строки сложнее использовать, когда у вас есть пробелы в именах (сложнее, не невозможно)
- Точки используются в RegEx (например, когда вы хотите использовать
grep
). Первая точка делает файл скрытым в Linux. В Windows точки используются в расширении файла, которое используется для определения типа файла.
- Windows , также не позволит имена файлов
CON
, PRN
, AUX
, CLOCK$
, NUL
COM1
, COM2
, COM3
, COM4
, COM5
, COM6
, COM7
, COM8
, COM9
LPT1
, LPT2
, LPT3
, LPT4
, LPT5
, LPT6
, LPT7
, LPT8
, и LPT9
. ( источник )
- Единственные символы, которые не разрешены в файловых системах Unix, которые я знаю, это
/
null (нулевой байт, \0
).
- Смотрите также: Ограничения файловой системы (я не знаю, с какой Windows вы хотите быть совместимым).
Длинный ответ
Техническая информация: файловая система
Ubuntu использует ext4
файловую систему. Файловая система отслеживает, где файлы хранятся в базовом хранилище (диск или SSD или что-то еще), права доступа в форме владельца / группы / других могут считывать / записывать / выполнять, отметки времени, имя.
Файловая система структурирует доступное хранилище. Первый блок называется «суперблок». Этот блок используется для монтирования файловой системы. Насколько я знаю, каждая современная файловая система делит свое пространство на блоки. Я думаю (и я не слишком уверен в этом), что большинство файловых систем также имеют фиксированный размер блока, хотя размер блока можно настроить при создании файловой системы. ext4 (а также ext2 и ext3) используют так называемые "inode" для файлов и каталогов. Эти иноды содержат указатели на другие блоки (которые также могут быть инодами или «блоками данных»). И «первый» индекс файла содержит всю информацию, о которой я упоминал выше.
Еще одна информация - это «тип» файла. «Тип» может быть:
- обычный файл
- каталог
- файл устройства (блочное или символьное устройство)
- ...
Фактически, вы также можете открывать каталоги с помощью редактора:
vim /home
Поскольку каталог не содержит полный путь, а только имена содержимого, я не вижу причины, по которой файлы не могут содержать /
. Я думаю, это может быть удобством. (Кто-нибудь знает, почему /
это не разрешено?)
Однако для других файловых систем все иначе. FAT16 и FAT32 использовали так называемую «таблицу размещения файлов». Это означает, что есть таблица, которая содержит все файлы, хранящиеся в вашем файле, в каком «кластере» они начинаются и в каком кластере они заканчиваются как односвязный список.
Важно отметить, что запрещенные символы также могут зависеть от файловой системы.
Техническая информация: типы файлов
- Windows использует расширения файлов для определения типов файлов
- Linux использует «Волшебные байты» для определения типов файлов. Магические байты являются частью содержимого файла и, следовательно, полностью независимы от имени. Эти байты являются частью спецификации типа файла (см., Например, спецификацию png ). Он также использует расширения имени файла для файлов с такими же магическими байтами, как
.txt
или .html
(оба являются текстовыми файлами).
Связанный