Для GNU/Linux (с учётом возможности маскировки) разрешены все символы, кроме «/» и нулевого байта.
Символы «», «/», , «|», «<», «>» и «:» имеют специальное значение в Windows, в частности, в командной строке, «*» и «?» используются для задания масок поэтому не могут быть использованы в имени отдельного файла. Символ пробела может встречаться в имени файла или каталога. Точка используется как разделитель имени файла от расширения. Двоеточие – это разделитель между буквой диска и остальной частью пути. Использование двоеточия не допускается нигде, кроме как после буквы диска. Исключением является файловая система NTFS, где двоеточие используется еще и в качестве разделителя между нормальным именем файла и прикрепленными к нему файловыми потоками. Точка и пробел могут стоять в любом месте имени файла, но не могут быть завершающими символами. hackzone.ru
это относится ко всем ОС, это служебные знаки и имеют определенные значения > - это знак перенаправления вывода например dir > text.txt выведет содержимое каталога в файл слеши используются для разделения каталогов и сетевых протоколов : - служебная комманда, используется в файлах bat для обозначения "подпрограммы" " - служит для означения окончания имени файла, если он с пробелом и не может использоватся, т. к. это вызовет ошибки
\ — разделитель подкаталогов / — разделитель ключей командного интерпретатора : — отделяет букву диска или имя альтернативного потока данных * — заменяющий символ (маска «любое количество любых символов») ? — заменяющий символ (маска «один любой символ») " — используется для указания путей, содержащих пробелы < — перенаправление ввода > — перенаправление вывода | — обозначает конвейер + — (в различных версиях) конкатенация Частично запрещённые символы Windows:
пробел — не допускается в конце имени файла; . — не допускается в конце имени файла кроме имён каталогов, состоящих из точек и доступа с префиксом «\\?\». Символы, вызывающие проблемы в широко распространённых компонентах:
% — в Windows используется для подстановки переменных окружения в интерпретаторе команд, вызывает проблемы при открытии файла через стандартный диалог открытия файла; ! — в Windows используется для подстановки переменных окружения в интерпретаторе команд, в bash используется для доступа к истории [1]; @ — в интерпретаторах команд вызывает срабатывание функций, предназначенных для почты.