Почему Windows использует обратную косую черту для путей и прямую косую черту Unix?

Ответы:

97

Unix представил / как разделитель каталогов где-то в 1970 году. Я не знаю, почему именно этот символ был выбран; Предок системы Multics используется >, но дизайнеры Unix уже использовали > вместе с < для перенаправления в оболочке (см. Почему корневой каталог обозначен / знак? ).

MS-DOS 2.0 введен \ в качестве разделителя каталогов в начале 1980-х годов. Причина / MS-DOS 1.0 (который вообще не поддерживал каталоги) уже использовался / ввести параметры командной строки. Потребовалось это использование / от CP / M который взял это у VMS , Вы можете прочитать более подробное объяснение того, почему был сделан этот выбор. в блоге Ларри Остермана (MS-DOS даже кратко имел возможность изменить опцию символа на - и разделитель каталогов для /, но это не прилипало).

/ это признается большинством API уровня программиста (во всех версиях DOS и Windows). Таким образом, вы можете часто, но не всегда сойти с рук с помощью / в качестве разделителя каталогов под Windows. Заметным исключением является то, что ты не можешь использовать / в качестве разделителя после \\? префикс который (даже в Windows 7) является единственным способом указать путь, используя Юникод или содержащий более 260 символов.

Поддержка некоторых элементов пользовательского интерфейса / в качестве разделителя каталогов под Windows, но не все. Некоторые программы просто передают имена файлов в базовый API, поэтому они поддерживают / а также \ индифферентно. В интерпретаторе команд (в command.com или же cmd ), ты можешь использовать / во многих случаях, но не всегда; это частично зависит от версии Windows (например, cd /windows работает в XP и 7, но не в Windows 9x). Поле ввода пути Explorer принимает / (по крайней мере, начиная с XP; возможно, потому что он также принимает URL-адреса). С другой стороны, стандартный диалог открытия файла отклоняет косые черты ,

Gilles
источник
2
/ распознается как разделитель каталогов командной строкой MS-DOS или Windows.
Tom Wijsman
1
"C: \ Windows \ System32 & gt; cd / windows / system" работает.
Andrew J. Brehm
@ TomWij: у вас есть ссылка на то, где именно / принимается в командной строке? Например, что делает dir /p делать? а также dir c:/p? а также c:/windows/notepad.exe? а также start /windows/notepad.exe? и т. д. (у меня нет машины Windows для тестирования.)
Gilles
2
/ вероятно, использовался в качестве разделителя каталогов в UNIX, потому что это был простой (не смещенный) ключ для удара по телетайпу. Не смещенные специальные символы были : - ; , . /,
Daniel R Hicks
2
Интересно, что я недавно перерыл источники и руководства DOS 1 и 2 и обнаружил, что Microsoft использовала / (а также - для коммутаторов), как Xenix, и вдохновлен Xenix, но IBM выпустила до того, как Microsoft отправила OEM-производителям, и IBM использовала ` (and / `для переключателей) и изменил приглашение A: в A> поэтому они изменили значение по умолчанию и отправили глючные / / - ) документация плюс примечание, что она была изменена и почему.
mirabilos
9

лежащий в основе Windows API может принимать обратную косую черту или косую черту для разделения каталогов и файловых компонентов пути, но соглашение Microsoft состоит в том, чтобы использовать обратную косую черту, а API, которые возвращают пути, помещают обратную косую черту.

MS-DOS 2.0 скопировал иерархическую файловую систему из Unix и, таким образом, использовал косую черту, но (возможно, по настоянию IBM ) добавили обратную косую черту, чтобы можно было вводить пути в командной оболочке, сохраняя совместимость MS-DOS 1.0 а также CP / M где косая черта была индикатором опции командной строки.

сравнить

dir/w

который показывает текущий каталог в широком формате против

dir\w

который управляет w файл в директоре dir,

Рекомендации:

Tom Wijsman
источник