Кто-то из моих знакомых выразил сегодня раздражение в отношении тех из нас, кто не использует пробелы в наших именах файлов, например, NamingThingsLikeThis.txt
несмотря на то, что большинство современных операционных систем поддерживают пробелы в именах файлов.
Существуют ли технические причины , по которым все еще можно увидеть имена файлов без (соответствующих) пробелов? Если да, то каковы эти технические причины того, что пробелы в именах файлов избегаются или не поощряются, и при каких обстоятельствах они актуальны?
Самая очевидная причина, по которой я мог придумать, и почему я обычно избегаю этого, - это дополнительные кавычки, необходимые в командной строке при работе с такими файлами. Есть ли другие важные технические причины?
operating-systems
file-management
filenames
Крис В. Ри
источник
источник
Ответы:
Пробельные символы в именах файлов могут вызывать настоящую боль в общеизвестных словах во многих контекстах командной строки и в сценариях, где вы должны быть осторожны, чтобы убедиться, что они правильно экранированы, поэтому не выглядите как разделители для команд, которыми вы являетесь Бег.
Просто безопаснее не иметь их там, даже если вы уверены, что файл / dir / what-ever никогда не будет использоваться в таком контексте.
Это, и старые привычки тяжело умирают.
источник
'\n'
) в их именах. (Unix-подобные системы на самом деле позволяют это; Windows вообще или, по крайней мере, затрудняет это.)В дополнение к другим ответам о командной строке и старых привычках, есть также много сетевых протоколов, которые требуют особого внимания при работе с именами файлов, содержащими пробелы.
(Если вы когда-либо пытались скачать «Product List.pdf» с веб-сайта, и в результате вы получили файл с именем «Product»), вас это укусило, потому что программист на другом конце не знал или не мог определить правила цитирования для заголовка http Content-Disposition.)
источник
Многие причины исторические. Это не значит, что они не имеют смысла сегодня.
Проблемы в мобильности
При именовании файла вам также может понадобиться учитывать, как другие (файловые) системы будут обращаться с этим именем файла. Символ в имени файла может подойти для вашей системы, но это может быть проблемой для другой системы.
Таким образом, до тех пор, пока существует малейшая вероятность того, что вы захотите легко получить доступ к файлу из старой системы, вы выбираете только безопасный символ. Это может включать загрузку старой системы восстановления, которую вы держали, или страх, что последние версии Windows по-прежнему основаны на MS-DOS.
длина
Файловая система может ограничивать длину файла. Это было еще более серьезно в те дни, когда MS-DOS ограничивался 8,3 именами файлов . Таким образом, оставляя пробелы, вы можете поместить в имя более значимые символы.
Несколько других файловых систем также определили строгие ограничения на длину имени файла. В статье в Википедии есть таблица сравнения файловых систем для тех, кому нужны подробности.
Зарезервированные персонажи
MS-DOS также определил символ пробела как зарезервированный символ. Это связано с тем, что символ пробела использовался для заполнения в FAT . Кроме того, MS-DOS не обеспечивала экранирующую систему в оболочке.
Интерпретация командной строки
Большинство командных строк, которые мне известны, используют символ пробела в качестве разделителя параметров . Если пренебрегать правильным экранированием имени файла, это может привести к печальным последствиям, поскольку части имени файла могут быть интерпретированы как параметры приложения, которое вы хотите вызвать.
Рассмотрим разницу между
а также
В статье WikiPedia, указанной выше, даже указывается на двусмысленность, возникшую из-за отсутствия правильного экранирования команды:
Унифицированные указатели ресурсов (URL)
При попытке описать местоположение файла, используя URL, пробелы необходимо экранировать.
Источник: RFC1738
Таким образом, пробел должен быть заменен
%20
вместо. Это делает имя файла частью URL менее читабельным и, таким образом, заставляет людей избегать его в первую очередь.источник
Пробелы кодируются или преобразуются
%20
в имена файлов в Интернете, что может затруднить управление активами сайта.Имея
Image 1.png
иImage%201.png
сбивает с толку. Это проще в использованииImage001.png
.Это действительно относится к той же категории, что и escape-последовательности для командной строки.
источник
Иногда пробелы могут представлять проблему при работе в командной строке, или при использовании старых ОС, или при написании программ, которые будут скомпилированы на разных ОС, или когда ... Есть много причин, которые могут представлять проблему, и я не На самом деле, мне кажется, что писать файл так: file-without-blanks.txt или file_without_blanks.txt - это такая проблема . Я предпочитаю Dask, потому что подчеркивание может иногда становиться невидимым при работе, например, с подчеркнутым шрифтом.
Но в основном это привычка старости. Что я не чувствую , что есть достаточно про причины отказаться.
Дополнительная заметка, возможно, не связанная, но тем не менее я выложу ее здесь. Люди, которые называют свои файлы пробелами, обычно не думают об этом; те, кто не часто знает, почему их следует избегать в именах файлов.
И, все мы можем согласиться, нет ничего хуже, чем файл с именами «Дорогой сэр или мадам, я пишу вам это письмо, чтобы сообщить вам о yo.doc».
Не только пробелы - длина файла тоже что-то значит, и ИМХО, она не должна быть длиннее, скажем, 30 символов. Длинные имена файлов с пробелами внутри также являются благословением при записи компакт-дисков, DVD-дисков и т. Д., Которые необходимо читать в старых ОС, а также между платформами Win и * nix.
источник