Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Путь , общая форма имени в виде файла или каталога , определяет уникальное расположение в файловой системе . Путь указывает на местоположение файловой системы, следуя иерархии дерева каталогов , выраженное в строку из символов , в которых компоненты пути, разделенные ограничительного характера, представляют каждый каталог. В качестве разделительного символа чаще всего используется косая черта («/»), обратная косая черта («\») или двоеточие («:»), хотя некоторые операционные системы могут использовать другой разделитель . Пути широко используются в информатикедля представления общих в современных операционных системах отношений между каталогами и файлами, которые необходимы при построении унифицированных указателей ресурсов (URL). Ресурсы могут быть представлены как абсолютными, так и относительными путями .

История [ править ]

Multics впервые представила иерархическую файловую систему с каталогами (разделенными знаком ">") в середине 1960-х годов. [1]

Примерно в 1970 году в Unix в качестве разделителя каталогов использовалась косая черта («/»).

В 1981 году была выпущена первая версия Microsoft DOS . MS-DOS 1.0 не поддерживает файловые каталоги. Кроме того, основная часть служебных команд, входящих в состав MS-DOS 1.0, была получена от IBM, и в их синтаксисе командной строки в качестве префикса «переключателя» использовался символ косой черты. Например, dir /wзапускает dirкоманду с опцией формата широкого списка.

Это использование косой черты все еще можно найти в командном интерфейсе в Microsoft Windows . В отличие от этого, Unix использует символ тире («-») в качестве префикса переключателя командной строки.

Когда поддержка каталогов была добавлена ​​в MS-DOS в версии 2.0, "/" оставался в качестве символа префикса переключателя для обратной совместимости. Microsoft выбрала символ обратной косой черты ("\") в качестве разделителя каталогов, который похож на символ косой черты, хотя более современные версии Windows не зависят от косой черты, что позволяет смешивать оба типа косой черты в пути. [2] [3]

Абсолютные и относительные пути [ править ]

An абсолютный или полный путь указует на то же место в файловой системе, независимо от текущего рабочего каталога . Для этого он должен включать корневой каталог .

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

Представления путей операционной системой и оболочкой [ править ]

Японская и корейская версии Windows часто могут отображать символ « ¥ » или « ₩ » вместо разделителя каталогов. В таких случаях код обратной косой черты рисуется как эти символы. В очень ранних версиях MS-DOS обратная косая черта заменялась этими глифами на дисплее, чтобы их можно было отображать программами, которые понимали только 7-битный ASCII (другие символы, такие как квадратные скобки, также были заменены, см. ISO 646 , Windows Кодовая страница 932 (японский Shift JIS) и кодовая страница 949 (корейский) ). Хотя даже первая версия Windows поддерживала 8-битный ISO-8859-1.набор символов, который имеет знак Йены в U + 00A5, а современные версии Windows поддерживают Unicode, который имеет знак Вон в U + 20A9, большая часть программного обеспечения будет продолжать отображать обратную косую черту, найденную в файлах ASCII таким образом, чтобы сохранить обратную совместимость. [5]

Mac OS X , как производная от UNIX, внутренне использует пути UNIX. Однако, чтобы сохранить совместимость для программного обеспечения и удобство для пользователей, многие части графического интерфейса пользователя переключают "/", введенные пользователем, на ":" внутри, и переключают их обратно при отображении имен файлов (":", введенное пользователем, также изменяется в "/", но обратного перевода не происходит).

Пути в языках программирования [ править ]

В языках программирования также используются пути. Например: при открытии файла. Большинство языков программирования используют представление пути к базовой операционной системе:

 uxFile = fopen("project/readme.txt", "r")
 winFile = fopen("C:\\Program Files\\bin\\config.bat", "r")

Такой прямой доступ к путям операционной системы может затруднить переносимость программ. Для поддержки переносимых программ Java использует File.separator, чтобы различать пути, разделенные / и \. В Seed7 есть другой подход к представлению пути. В Seed7 все пути используют соглашение о путях Unix, независимо от операционной системы. Под окнами выполняется сопоставление (например: путь / c / users сопоставлен с c: \ users ).

Универсальное соглашение об именах [ править ]

Microsoft Windows UNC , сокращение от Universal Naming Convention или Uniform Naming Convention , определяет общий синтаксис для описания местоположения сетевого ресурса, такого как общий файл, каталог или принтер. Синтаксис UNC для систем Windows имеет общую форму:

\\ Имя_компьютера \ SharedFolder \ Resource

Microsoft часто называет это « сетевым путем ».

Некоторые интерфейсы Microsoft Windows также разрешают или требуют синтаксиса UNC для доступа к общему ресурсу WebDAV , а не URL-адреса. Синтаксис UNC расширен [6] дополнительными компонентами для обозначения использования SSL и номера порта TCP / IP, URL-адрес WebDAV http[s]://HostName[:Port]/SharedFolder/Resourceстановится

\\ HostName [@SSL] [@ Port] \ SharedFolder \ Resource

При удаленном просмотре «SharedFolder» может иметь имя, отличное от того, что программа на сервере видит при открытии «\ SharedFolder». Вместо этого имя SharedFolder состоит из произвольного имени, присвоенного папке при определении ее «совместного использования».

Некоторые интерфейсы Microsoft Windows также принимают "Long UNC":

\\? \ UNC \ имя_компьютера \ SharedFolder \ Resource

Microsoft Windows использует следующие типы путей:

  • локальная файловая система (LFS), например C:\File
  • универсальное соглашение об именах (UNC), например \\Server\Volume\Fileили / <internet resource name>[\Directory name](по крайней мере, в Windows 7 и новее)
  • "длинный" путь к устройству, например \\?\C:\Fileили \\?\UNC\Server\Volume\File. [7] Этот путь указывает на пространство имен локального файла и \\.\аналогичен пути, указывающему на пространство имен локального устройства DOS. Этот формат также «сырой» или «необработанном» путь, так как он посылает пути прямо к файловой системе без преобразования / в \ и интерпретации имен , как .. . [8]
  • Диспетчер объектов Windows NT \\??\ - пути с префиксом (глобальное пространство имен DOS). [9] [10]

В версиях Windows до Windows XP только API-интерфейсы, принимающие «длинные» пути к устройствам, могли принимать более 260 символов.

Оболочки в Windows XP и Windows Vista , explorer.exe , позволяет использовать имена пути до 248 символов. [ необходима цитата ]

Поскольку UNC начинаются с двух обратных косых черт, а обратная косая черта также используется для экранирования строки и в регулярных выражениях , это может привести к крайним случаям синдрома наклонной зубочистки : экранированная строка для регулярного выражения, соответствующего UNC, начинается с 8 обратных косых черт \\\\\\\\- потому что строка и регулярное выражение требуют экранирования. Это можно упростить, используя необработанные строки , как в C # @"\\\\"или Python r'\\\\', или литералы регулярных выражений, как в Perl qr{\\\\}.

Определение пути POSIX [ править ]

Большинство Unix-подобных систем используют аналогичный синтаксис. [11] POSIX позволяет обрабатывать путь, начинающийся с двух косых черт, способом, определяемым реализацией, [12] хотя в других случаях системы должны рассматривать несколько косых черт как одиночные косые черты. [13] Многие приложения в Unix-подобных системах (например, scp , rcp и rsync ) используют определения ресурсов, такие как:

имя хоста: / путь к каталогу / ресурс

или схемы URI с именем службы (здесь smb):

smb: // имя хоста / путь к каталогу / ресурс

Пример [ править ]

Стиль Unix [ править ]

В следующем рабочем примере обсуждается поведение файловой системы в стиле Unix в том виде, в каком оно будет выглядеть из терминала или приложения терминала (окно командной строки):

Прикреплен к текущему рабочему каталогу (cwd) из:

/ пользователи / отметка /

Кто-то хочет изменить текущий рабочий каталог на:

/ пользователи / отметка / bobapples

В этот момент относительный путь к желаемому каталогу можно представить как:

./bobapples

или для краткости:

бобапли

и абсолютный путь к каталогу как:

/ пользователи / отметка / bobapples

Учитывая bobapples в качестве относительного пути к желаемому каталогу, в командной строке можно ввести следующее, чтобы изменить текущий рабочий каталог на bobapples:

cd bobapples

Две точки (« .. ») указывают вверх по иерархии , чтобы указать родительский каталог ; одна точка (" . ") представляет сам текущий каталог. Оба могут быть компонентами сложного относительного пути (например, « ../mark/./bobapples »), где « . » Сам по себе или как первый компонент такого относительного пути представляет рабочий каталог . (Использование " ./foo " для ссылки на файл " foo " в текущем рабочем каталоге может иногда полезно отличить его от ресурса " foo ", который можно найти в каталоге по умолчанию или другими способами; например,для просмотра конкретной версии справочной страницы вместо установленного в системе.)

Стиль MS-DOS / Microsoft Windows [ править ]

Снимок экрана командной оболочки Windows, показывающий имена файлов в каталоге

Вопреки распространенному мнению, системный API Windows принимает косую черту, и поэтому все приведенные выше примеры Unix должны работать. Но многие приложения в Windows интерпретируют косую черту для других целей или рассматривают ее как недопустимый символ и поэтому требуют, чтобы вы вводили обратную косую черту - особенно оболочка cmd.exe (часто называемая «терминалом», поскольку она обычно запускается в окне терминала). Обратите внимание, что многие другие оболочки, доступные для Windows, такие как tcsh и Windows PowerShell , допускают косую черту.

Кроме того, "\" указывает не на один корень, а на корень «текущего диска». Для указания файла на диске, отличном от текущего, необходимо указать в начале букву диска и двоеточие. Никакой двусмысленности не возникает, поскольку двоеточие не является допустимым символом в имени файла MS-DOS, и поэтому в текущем каталоге не может быть файла с именем «A:».

Имена UNC (любой путь, начинающийся с \\? \ ) Не поддерживают косую черту. [14]

В следующих примерах показаны пути в стиле MS-DOS / Windows с использованием обратной косой черты для соответствия наиболее распространенному синтаксису:

А: \ Temp \ File.txt

Этот путь указывает на файл с именем File.txt , расположенный в каталоге Temp , который, в свою очередь, находится в корневом каталоге диска A : .

C: .. \ File.txt

Этот путь относится к файлу с именем File.txt, расположенному в родительском каталоге текущего каталога на диске C : .

Папка \ SubFolder \ File.txt

Этот путь обозначает файл с именем File.txt, расположенный в каталоге SubFolder, который, в свою очередь, находится в каталоге Folder, который находится в текущем каталоге текущего диска (поскольку в этом примере нет спецификации диска).

File.txt

Этот довольно простой путь указывает на файл с именем, File.txtрасположенный в текущем каталоге (поскольку в пути нет спецификации каталога) на текущем диске (поскольку спецификация диска отсутствует).

\\. \ COM1

Этот путь относится к первому последовательному порту ( COM1 ).

C: \> подробнее < C: /Windows/system.ini
; для поддержки 16-битных приложений [386Enh] woafont = dosapp.fon EGA80WOA.FON = EGA80WOA.FON EGA40WOA.FON = EGA40WOA.FON CGA80WOA.FON = CGA80WOA.FON CGA40WOA.FON = CGA40WOA.FON ...

В этом примере в качестве разделителя каталогов используется путь, содержащий косую черту. Команда перенаправляет содержимое файла moreкоманде.

E: \> dir  "/ Folder / SubFolder /" / Q Том на диске E имеет серийный номер тома данных 07BE-0B10. Каталог E: \ Folder \ SubFolder18 октября 2008 г., 08:15 <DIR> DOMAIN \ user.18 октября 2008 г. 08:15 <DIR> DOMAIN \ user .. 18 октября 2008 г. 08:15 <DIR> DOMAIN \ user File.txt  1 Файл (ы) 8 байт  2 Каталог (и) 19 063 000 байт свободно

Путь, содержащий косую черту, часто необходимо заключать в двойные кавычки, чтобы исключить неоднозначность в параметрах командной строки .

  • примечание: CD не работает таким образом:

Компакт-диск «[буква диска]: / Program Files» будет работать только из корневого ([буква диска]: \) каталога. Похоже, что все косые черты обрабатываются так же, как. \. [ необходима цитата ]

  • исключение: используйте переключатель / D для изменения текущего диска в дополнение к изменению текущего каталога для диска.

Например:

Компакт-диск "C:. \ Program Files"

работает так же, как

Компакт-диск "C: / Program Files"

Также из корневой папки:

Компакт-диск "C:. \ Program Files. \ Internet Explorer"

будет рассматриваться так же, как

Компакт-диск "C: / Program Files / Internet Explorer"

Если нет относительного пути к имени каталога, указанному с помощью косой черты, вы получите следующую ошибку:

Система не может найти указанный путь.

Для установки переменных среды иногда необходимо указать путь, не содержащий в нем пробелов, например, %JAVA_HOME%определенный как «C: \ Program Files \ Java ...» может привести к остановке сценариев, когда они обнаруживают пробел в пути. название. Чтобы получить восьмизначное имя, которое Windows назначает любому каталогу для подстановки в переменных среды, используйте команду списка каталогов с параметром / x на один уровень выше целевого каталога. Например, следующее даст вам восьмизначное имя для всех каталогов непосредственно в корневом каталоге:

C: \> dir / x

См. Также [ править ]

  • Базовое имя
  • Файл устройства
  • Dirname
  • Распределенная файловая система (DFS)
  • Имя файла
  • Стандарт иерархии файловой системы (FHS)
  • Полное имя файла
  • ПУТЬ (переменная)
  • Унифицированный указатель ресурсов (URL)

Ссылки [ править ]

Эта статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL версии 1.3 или новее.

  1. ^ Дейли, RC; Нейман, П.Г. (1965). «Файловая система общего назначения для вторичного хранилища». AFIPS Материалы совместной компьютерной конференции . Часть I: 213–229. DOI : 10.1145 / 1463891.1463915 .
  2. ^ https://www.howtogeek.com/181774/why-windows-uses-backslashes-and-everything-else-uses-forward-slashes/
  3. ^ https://docs.microsoft.com/en-us/archive/blogs/larryosterman/why-is-the-dos-path-character
  4. ^ "cd" . Команды Windows: Windows Server. Документы Microsoft . Проверено 14 июля 2019 .
  5. ^ Сортировка всего : когда обратная косая черта не является обратной?
  6. ^ "Функция DavGetHTTPFromUNCPath" . WebDAV: Windows. Документы Microsoft . серия . Проверено 14 июля 2019 .
  7. ^ «Форматы путей к файлам в системах Windows» . Файловый и потоковый ввод-вывод: .NET. Документы Microsoft . Проверено 14 июля 2019 .
  8. ^ «Именование файлов, путей и пространств имен - приложения Win32» . docs.microsoft.com .
  9. ^ "winapi - Есть ли разница между путями \ ?? \ и \\? \?" . Переполнение стека .
  10. ^ "Префиксы пути \ ?? \ и \\? \" . Переполнение стека .
  11. ^ Определение UNC от ComputerLanguage.com
  12. ^ Спецификация разрешения пути POSIX
  13. ^ Определение пути POSIX
  14. ^ «Именование файлов, путей и пространств имен» . Локальные файловые системы: Windows. Документы Microsoft . Проверено 14 июля 2019 .

Внешние ссылки [ править ]

  • Определение пути - Информационный проект Linux (LINFO)
  • Именование файлов, путей и пространств имен - Локальные файловые системы: Windows: Microsoft Docs