>>124540> В линухах или маках можно создавать файлы с такими знаками в названии?
Во всех Unix-системах название файла может быть любой последовательностью битов, в том числе "/" и "NUL". Просто ПО обычно не поддерживает "/" нормально, так как это разделитель путей файловой системы, и "NUL" (
\0
), так как это символ конца строки в Си, а программы и низлежащие библиотеки обычно написаны на Си.
Распространённая, но малоизвестная уязвимость, кстати. example.com/../../etc/passwd%00 — всё ещё
/../../etc/passwd`` с точки зрения кода на Си. Ты можешь хоть пробелы в начале и конце названия оставлять, или название файла чисто из пробелов создать или невидимых символов Юникода, или там использовать в названии один-единственный символ изменения ориентации письма из UTF-8.
Так как файловым системам Unix-систем без разницы, что в названии, то они чувствительны к регистру. В OS X есть ограничение — файловая система всё ещё case-sensitive, с резервированием регистра. Например, если есть
/test/test
, то файла
/test/Test
существовать не может, но при этом
/etc/Test
это всё ещё
file not found
. Это не ограничение ФС, а программное ограничение.
Ещё у Unix-систем есть интересная особенность — они не смотрят на расширение файла. В винде было и есть
ruwiki://8.3, то есть все файлы должны быть ровно 8 символов в длину и 3 символа расширения, до сих пор куча ПО этого ожидает. На Unix же традиционно файловых расширений нет и они были добавлены только для удобства пользователей. Информация о типе файла берётся из самого файла (magic-биты форматов или там анализ). Позор тащемта, что они сейчас так стали распространены.
Другой вопрос, хочешь ли ты сделать это. Если с файлами работаешь из GUI, то можешь что угодно туда пихать. Если же приходится из консоли, то
cp "x x" "x x x"
или
cp x\ x x\ x\ x
выглядит не очень читаемо. А с консолью работать приходится, так как можно, например, короткой командой переименовать все
название_серии.[ник_школьника].ass
в
название_серии.ass
, в то время как на винде пришлось бы иногда под сотню файлов вручную переименовывать за то время, за которое иногда можно было бы посмотреть пару серий.
> скачал архивчик с сабами и там в названии файлов есть знак вопроса
Архиватор должен распаковать файл и заменить невозможные символы на какие-нибудь другие символы. Например, на Unix это обычно "?", лол (такое происходит обычно в cgi-скриптах, которые с Юникодом не умеют работать и ожидают ASCII, а файл всё равно переименовывать нужно).