Заставляю систему разрешить мне вставлять любой символ в имя файла

Заставляю систему разрешить мне вставлять любой символ в имя файла

На этой неделе у меня был экзамен, и одним из вопросов был (с одним правильным ответом):

Имя файла может содержать символ:

а)\

б)/

в)?

г)!

Я выбрал, c) ?потому что мне это показалось правильным. Когда я пришел домой, я проверил это на своей машине (Ubuntu 14.04), и файл был успешно создан. В калькуляторе готовности правильный ответ отмечен как d) !.

Я знал, что экзамен посвящен Windows, но в тестовом задании платформа не была указана.


Понятно, что символы \и /не поддерживаются в имени файла,НОесть ли способ заставить операционную систему разрешить их?

Было бы очень здорово доказать, что поддерживаются даже символы \и ./

решение1

При рассмотрении символов, разрешенных в имени файла, есть два ограничивающих фактора — ограничения, связанные с операционной системой, и ограничения, связанные с файловой системой. Для этого вопроса я предположу, что мы говорим о последних версиях Linux и ext4.

Linux запрещает только два символа в именах файлов: /, поскольку это разделитель пути, и \0(ASCII NUL), поскольку он завершает cstrings. В дополнение к этому, специальные имена .и ..также зарезервированы файловой системой для использования в качестве навигационных жестких ссылок.

Вы можете легко доказать, что другие символы, упомянутые в вашем вопросе, разрешены:

$ touch '\' '?' '!'
$ ls
!  ?  \

Связанный контент