stringtranslate.com

Путь (вычисления)

Путь (или путь к файлу , путь к файлу , имя пути и т. д.) — это строка символов , используемая для уникальной идентификации местоположения в структуре каталогов . Он составлен в соответствии с иерархией дерева каталогов , в которой компоненты, разделенные символом-разделителем, представляют каждый каталог. Символом-разделителем чаще всего является косая черта («/»), обратная косая черта («\") или двоеточие («:»), хотя в некоторых операционных системах может использоваться другой разделитель . Пути широко используются в информатике для представления отношений каталог/файл, распространенных в современных операционных системах, и необходимы для создания унифицированных указателей ресурсов (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]

Абсолютные и относительные пути

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

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

Базовый URL

Базовый URL-адрес — это согласованная часть пути API, к которому добавляются пути к конечным точкам.

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

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

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, независимо от операционной системы. В Windows происходит сопоставление (например: путь /c/users сопоставляется с c:\users ).

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

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

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

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

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

\\Имя хоста[@SSL][@Порт]\SharedFolder\Resource

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

Некоторые интерфейсы Microsoft Windows также принимают «длинный UNC»:

\\?\UNC\ИмяКомпьютера\SharedFolder\Resource

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

В версиях 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:

компакт- диск

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

Стиль MS-DOS/Microsoft Windows

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

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

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

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

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

A:\Temp\File.txt

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

C:..\Файл.txt

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

Папка\Подпапка\Файл.txt

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

Файл.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> ДОМЕН\пользователь . 18 октября 2008 г. 08:15 <DIR> DOMAIN\user .. 18 октября 2008 г. 08:15 <DIR> DOMAIN\user File.txt  1 Файл(ы) 8 байт  2 Каталог(ы) 19 063 000 байт бесплатно

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

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

Например:

Компакт-диск "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:\> каталог /x

Смотрите также

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

  1. ^ Дейли, RC; Нойманн, П.Г. (1965). «Файловая система общего назначения для вторичного хранилища». Материалы осенней совместной компьютерной конференции, состоявшейся 30 ноября — 1 декабря 1965 г., Часть I по XX — AFIPS '65 (Осень, часть I) . Том. Часть I. С. 213–229. дои : 10.1145/1463891.1463915 . S2CID  16236414.
  2. ^ «Почему Windows использует обратную косую черту, а все остальное использует косую черту» . 10 февраля 2014 г.
  3. ^ «Почему путь DOS представляет собой символ «»?». 24 июня 2005 г.
  4. ^ abc «Именование файлов, путей и пространств имен». Документы Майкрософт . 15 декабря 2022 г.
  5. ^ "компактный диск". Команды Windows: Windows Server. Документы Майкрософт . 3 февраля 2023 г. Проверено 4 октября 2023 г.
  6. ^ «Когда обратная косая черта не является обратной косой чертой?». Разбираем все это .
  7. ^ "Функция DavGetHTTPFromUNCPath" . ВебДАВ: Windows. Документы Майкрософт . ряд. 13 октября 2021 г. Проверено 4 октября 2023 г.
  8. ^ «Форматы путей к файлам в системах Windows» . Файловый и потоковый ввод-вывод: .NET. Документы Майкрософт . Проверено 14 июля 2019 г.
  9. ^ "winapi - Есть ли разница между путями \??\ и \\?\?". Переполнение стека .
  10. ^ "Префиксы путей \??\ и \\?\". Переполнение стека .
  11. ^ «Определение UNC» . ComputerLanguage.com .
  12. ^ «Спецификация разрешения имен путей POSIX» .
  13. ^ «Определение пути POSIX» .

Внешние ссылки