Багато причин історичні. Це не означає, що вони сьогодні не мають сенсу.
Проблеми з портативністю
При іменуванні файлу, можливо, доведеться також врахувати, як інші (файлові) системи будуть поводитися з цим ім'ям файлу. Символ в імені файлу може бути непоганим для вашої системи, але це може бути проблемою для іншої системи.
Отже, доки існує найменша можливість, що ви можете мати можливість легко отримати доступ до файлу зі старої системи, ви вибрали б лише безпечний символ. Це може включати завантаження старої системи відновлення, яку ви зберігали, або побоювання, що останні версії Windows все ще якимось чином базуються на MS-DOS.
Довжина
Файлова система може обмежувати довжину файлу. Це було ще серйознішим у дні, коли MS-DOS обмежувався 8,3 іменами . Таким чином, не залишаючи пробілів, ви зможете вставити в ім’я більш значущі символи.
Кілька інших файлових систем також визначили суворі обмеження по довжині імені файлу. У Вікіпедії є таблиця у статті про порівняння файлової системи для тих, хто хоче деталі.
Зарезервовані персонажі
MS-DOS також визначив пробільний символ як зарезервований символ. Це пов’язано з тим, що пробільний символ використовувався для прокладки в FAT . Крім того, MS-DOS не передбачає системи виходу в оболонку.
Інтерпретація командного рядка
Більшість командних рядків, які мені відомо, використовують пробільний символ як роздільник параметрів . Якщо нехтувати належним чином ім'ям файлу, це може мати серйозні наслідки, оскільки частини імені файлу можна інтерпретувати як параметри програми, яку ви хотіли викликати.
Розглянемо різницю між
rm foo bar
і
rm "foo bar"
Згадана вище стаття WikiPedia навіть вказує на неоднозначність, внесену пропуском для належного виходу з команди:
Неоднозначність можна запобігти або заборонити вбудовані пробіли в іменах файлів і каталогів в першу чергу (наприклад, замінивши їх підкресленнями "_"), або, якщо це підтримується інтерпретатором командного рядка та програмами, що приймають ці параметри як аргументи, додаючи ім'я до вбудованих пробілів між символами цитати або використовуючи символ пробігу перед пробілом, як правило, зворотний проріз ('\'). Наприклад
Long path/Long program name Parameter one Parameter two ...
неоднозначно (чи є "назва програми" частиною назви програми, або два параметри?); проте
Long_path/Long_program_name Parameter_one Parameter_two ...,
LongPath/LongProgramName ParameterOne ParameterTwo ...,
"Long path/Long program name" "Parameter one" "Parameter two" ...
і Long \ path / Long \ program \ name Параметр \ один Параметр \ два ...
не неоднозначні.
Уніфіковані локатори ресурсів (URL)
При спробі описати розташування файлу за допомогою URL-адреси потрібно пропустити пробіли.
Персонажі можуть бути небезпечними з кількох причин. Символ простору небезпечний, оскільки значні пробіли можуть зникати, а незначні пробіли можуть бути введені під час транскрибування або набору URL-адрес або піддаються обробці програм для обробки тексту.
Джерело: RFC1738
Таким чином, простір потрібно замінити %20
замість цього. Це робить частину назви файлу URL-адресою менш читаною і, таким чином, змушує людей уникати її в першу чергу.