Самая безопасная ставка - обратиться к записи в Википедии о разрешенном наборе символов для любой операционной системы. Это можно найти здесь .
Например, для большинства систем, основанных на Unix, допустимым набором символов является 8-битный набор, а зарезервированным символом является нулевой символ (NUL, '\0'
). Однако не рекомендуется использовать специальные символы в именах файлов, так как они создают проблемы при их удалении.
Например, я могу иметь имя файла как -ramesh.txt
и я пытаюсь удалить его, как показано ниже.
rm -ramesh.txt
rm: invalid option -- 'a'
Try `rm ./-ramesh.txt' to remove the file `-ramesh.txt'.
Try `rm --help' for more information.
rm "-ramesh.txt"
rm: invalid option -- 'a'
Try `rm ./-ramesh.txt' to remove the file `-ramesh.txt'.
Try `rm --help' for more information.
Мне нужно удалить файл как,
rm -- "-ramesh.txt"
rm: remove regular empty file `-ramesh.txt'? y
Более подробную информацию можно найти в этом ответе .
В Linux и OS-X /
запрещено только печатный набор ASCII. Некоторые символы (например, метасимволы оболочки *?!
) вызовут проблемы в командной строке и потребуют, чтобы имя файла было соответствующим образом заключено в кавычки или экранировано.
Файловые системы Linux, такие как ext2, ext3, не зависят от набора символов (я думаю, они просто более или менее воспринимают его как поток байтов - только нули и /
запрещены). Это означает, что вы можете хранить имена файлов в кодировке UTF-8. Я полагаю, что это зависит от оболочки или другого приложения, чтобы знать, какую кодировку использовать для правильного преобразования имени файла для отображения или обработки.
Итак, в заключение, проблема заключается не в использовании специальных символов для имен файлов, а в том, как их обрабатывать.