Найбезпечніша ставка - це посилання на запис у вікіпедії щодо дозволеного набору символів для будь-якої операційної системи. Його можна знайти звідси .
Наприклад, для більшості систем на базі 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. Я вважаю, що оболонка чи інша програма повинні знати, яке кодування використовувати для правильного перетворення імені файлу для відображення чи обробки.
Отже, підсумовуючи, проблема полягає не у використанні спеціальних символів для імен файлів, а в тому, як з ними поводитися.