Путь (вычисления)
Эта статья нуждается в дополнительных цитатах для проверки . ( июль 2008 г. ) |
Путь путь (или к файлу , путь к файлу , имя пути и т. д.) — это строка символов , используемая для уникальной идентификации местоположения в структуре каталогов . Он составлен в соответствии с иерархией дерева каталогов , в которой компоненты, разделенные символом-разделителем, представляют каждый каталог. Символом-разделителем чаще всего является косая черта («/»), обратная косая черта («\") или двоеточие («:»), хотя в некоторых операционных системах может использоваться другой разделитель . Пути широко используются в информатике для представления отношений каталог/файл, распространенных в современных операционных системах, и необходимы для создания унифицированных указателей ресурсов (URL). Ресурсы могут быть представлены как абсолютными , так и относительными путями .
История
[ редактировать ]Multics впервые представила иерархическую файловую систему с каталогами (разделенными знаком «>») в середине 1960-х годов. [1]
Примерно в 1970 году в Unix в качестве разделителя каталогов был введен символ косой черты («/»).
первая версия Microsoft DOS В 1981 году была выпущена . 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, к которому добавляются пути к конечным точкам.
Представления путей по операционной системе и оболочке
[ редактировать ]Операционная система |
Оболочка | Корень каталог |
Каталог сепаратор |
Текущий каталог |
Родитель каталог |
Дом каталог |
Примеры |
---|---|---|---|---|---|---|---|
Unix-подобная ОС (включая macOS ) |
оболочка Unix | /
|
/
|
.
|
..
|
~
|
/home/user/docs/Letter.txt ./inthisdir ../../greatgrandparent ~/.rcinfo
|
ПРИНАДЛЕЖАЩИЙ | COMMAND.COM | [drive letter:]\ или \\[server name]\[volume]\
|
\
|
.
|
..
|
C:\USER\DOCS\LETTER.TXT A:PICTURE.JPG \\SERVER01\USER\DOCS\LETTER.TXT
| |
ОС/2 | cmd.exe | [drive letter:]\ или \\[server name]\[volume]\
|
/ или \
|
.
|
..
|
C:\user\docs\Letter.txt A:Picture.jpg \\SERVER01\USER\docs\Letter.txt
| |
Майкрософт Окна |
cmd.exe | \ (относительно корня текущего рабочего каталога) или [drive_letter]:\ или \\[server]\[sharename]\ или \\?\[drive_spec]:\ или \\?\UNC\[server]\[sharename]\ или \\.\[physical_device]\ [4]
|
/ или \ ,
В японской версии используется ¥ , в корейской версии в качестве разделителя путей используется ₩. |
.
|
.. [5]
|
C:\user\docs\Letter.txt /user/docs/Letter.txt C:\Letter.txt \\Server01\user\docs\Letter.txt \\?\UNC\Server01\user\docs\Letter.txt \\?\C:\user\docs\Letter.txt C:\user\docs\somefile.ext:alternate stream name ./inthisdir ../../greatgrandparent | |
Windows PowerShell | [drive letter:]/ или [drive name:]\ или \\[server name]\ или
|
/ или \
|
.
|
..
|
~
|
C:\user\docs\Letter.txt C:\user/docs\Letter.txt \\Server01\user\docs\Letter.txt cd ~\Desktop
| |
ТОПС-20 | ДКЛ | [device name:]
|
.
|
PS:<USER.DOCS>LETTER.TXT,4
| |||
РСХ-11 | МКР | [device name:]
|
DR0:[30,12]LETTER.TXT;4
| ||||
OpenVMS | ДКЛ | [device name:][000000] или
|
.
|
[]
|
[-]
|
SYS$LOGIN:
|
SYS$SYSDEVICE:[USER.DOCS]PHOTO.JPG
|
Классический MacOS |
[volume or drive name]:
|
:
|
:
|
::
|
Macintosh HD:Documents:Letter :fileincurrentdir ::fileinparent :::fileingrandparent
| ||
ПроДОС | AppleSoft БЕЙСИК | /[volume or drive name]/
|
/
|
/SCHOOL.DISK/APPLEWORKS/MY.REPORT
| |||
АмигаОС | друг CLI / AmigaShell |
[drive, volume, device or assign name]:
|
/
|
"" (пустая строка) |
/
|
Workbench:Utilities/MultiView DF0:S/Startup-Sequence S:Startup-Sequence TCP:en.wikipedia.com/80
| |
РИСКИ | ShellCLI | [fs type[#option]:][:drive number or disc name.]$
примечание: &, % и @ также можно использовать для ссылки на корень |
.
|
@
|
^
|
&
|
ADFS::MyDrive.$.Documents.Letter Net#MainServer::DataDrive.$.Main.sy10823 LanMan::WindowsC.$.Pictures.Japan/gif NFS:&.!Choices ADFS:%.IfThere @.inthisdir ^.^.greatgrandparent
Когда монтируются файловые системы с расширениями имен файлов, |
ОС Симбиан | Файловый менеджер | \
|
\
|
\user\docs\Letter.txt
| |||
Домен/ОС | Оболочка |
|
/
|
.
|
\
|
~
|
//node/home/user/docs/Letter.txt ./inthisdir \\greatgrandparent ~rcinfo
|
МинуэтОС | КМД | /
|
/
|
||||
Слой ВЫ | Командная строка VOS устный переводчик |
%[system_name]#[module_name]>
|
>
|
<
|
%sysname#module1>SubDir>AnotherDir
| ||
НонСтоп Ядро |
ВЗЯТЬСЯ Тандем Продвинутый Командный язык |
Нет корня | .
|
нет родителя каталог |
\NODE.$DISK.SUBVOL.FILE \NODE.$DEVICE \NODE.$DEVICE.#SUBDEV.QUALIFIER
| ||
КП/М | КПК | [drive letter:]
|
нет поддержки каталогов, только пользовательские области 0–F | A:LETTER.TXT
| |||
ГС/ОС | :[volume name]: или .[device name]: или [prefix]:
примечание: префикс может быть числом (0–31), |
: или /
|
@
|
:Apps:Platinum.Paint:Platinum.Paint *:System:Finder .APPLEDISK3.5B/file
| |||
OpenHarmony (включая HarmonyOS ) | руководитель [6] [7] | hb set -root [ROOT_PATH]
|
>
|
./
|
../
|
LOCAL>MEDIA_TYPE_>Download>Letter.txt
|
Японская и корейская версии 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, таким образом, чтобы сохранить обратную совместимость. [8]
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 ).
Универсальное соглашение об именах
[ редактировать ]Microsoft Windows UNC , сокращение от Universal Naming Convention или Uniform Naming Convention , определяет общий синтаксис для описания местоположения сетевого ресурса, такого как общий файл, каталог или принтер. Синтаксис UNC для систем Windows имеет общую форму:
\\ComputerName\SharedFolder\Resource
Microsoft часто называет это « сетевым путем ».
Некоторые интерфейсы Microsoft Windows также допускают или требуют синтаксис UNC для доступа к общему ресурсу WebDAV , а не URL-адрес. Синтаксис UNC расширен. [9] с дополнительными компонентами для обозначения использования SSL и номера порта TCP/IP, URL-адрес WebDAV http[s]://HostName[:Port]/SharedFolder/Resource
становится
\\HostName[@SSL][@Port]\SharedFolder\Resource
При удаленном просмотре «SharedFolder» может иметь имя, отличное от того, которое видит программа на сервере при открытии «\SharedFolder». Вместо этого имя SharedFolder состоит из произвольного имени, присвоенного папке при определении ее «общего доступа».
Некоторые интерфейсы Microsoft Windows также принимают «длинный UNC»:
\\?\UNC\ComputerName\SharedFolder\Resource
Microsoft Windows использует следующие типы путей:
- локальная файловая система (LFS), например
C:\File
- универсальное соглашение об именах (UNC), например
\\Server\Volume\File
или /<internet resource name>[\Directory name]
(по крайней мере, в Windows 7 и более поздних версиях) - «длинный» путь устройства, например
\\?\C:\File
или\\?\UNC\Server\Volume\File
. [10] Этот путь указывает на локальное пространство имен файлов и\\.\
аналогичный, указывающий на локальное пространство имен устройств DOS. Этот формат также является «необработанным» или «неинтерпретируемым» путем, поскольку он отправляет пути прямо в файловую систему без преобразования. / к \ и интерпретировать такие имена, как .. . [4] - Диспетчер объектов Windows NT
\\??\
-префиксные пути (глобальное пространство имен DOS). [11] [12]
В версиях Windows, предшествующих Windows XP, только те API, которые принимают «длинные» пути к устройствам, могли принимать более 260 символов.
Оболочка Windows в XP и Windows Vista , explorer.exe , допускает длину пути до 248 символов. [ нужна ссылка ]
Поскольку UNC начинаются с двух обратных косых черт, а обратная косая черта также используется для экранирования строк и в регулярных выражениях , это может привести к крайним случаям синдрома наклоненной зубочистки : экранированная строка для регулярного выражения, соответствующего UNC, начинается с 8 обратных косых черт – \\\\\\\\
– потому что и строка, и регулярное выражение требуют экранирования. Это можно упростить, используя необработанные строки , как в C#. @"\\\\"
или Python r'\\\\'
или литералы регулярных выражений, как в Perl qr{\\\\}
.
Определение пути POSIX
[ редактировать ]Большинство Unix-подобных систем используют аналогичный синтаксис. [13] POSIX позволяет обрабатывать путь, начинающийся с двух косых черт, в соответствии с реализацией. [14] хотя в других случаях системы должны рассматривать несколько косых черт как одиночные. [15] Многие приложения в Unix-подобных системах (например, scp , rcp и rsync ) используют такие определения ресурсов, как:
hostname:/directorypath/resource
или схемы URI с именем службы (здесь «smb»):
smb://hostname/directorypath/resource
Пример
[ редактировать ]Unix-стиль
[ редактировать ]В следующем рабочем примере обсуждается поведение Unix в стиле файловой системы , как она выглядит из терминала или терминального приложения (окно командной строки):
Прикреплен к текущему рабочему каталогу (cwd):
/users/mark/
Кто-то хочет изменить текущий рабочий каталог на:
/users/mark/bobapples
В этот момент относительный путь к нужному каталогу может быть представлен как:
./bobapples
или сокращенно:
bobapples
и абсолютный путь к каталогу как:
/users/mark/bobapples
Учитывая, что bobapples является относительным путем к желаемому каталогу, в командной строке можно ввести следующее , чтобы изменить текущий рабочий каталог на bobapples:
cd bobapples
Две точки (" .. ») указывает вверх в иерархии , чтобы указать родительский каталог ; одна точка (« . ") представляет сам текущий каталог. Оба могут быть компонентами сложного относительного пути (например, " ../mark/./bobapples "), где " . " отдельно или в качестве первого компонента такого относительного пути представляет рабочий каталог . (Использование " ./foo "для ссылки на файл" foo "в текущем рабочем каталоге иногда может помочь отличить его от ресурса" foo " можно найти в каталоге по умолчанию или другим способом; например, для просмотра конкретной версии страницы руководства вместо той, которая установлена в системе.)
Стиль MS-DOS/Microsoft Windows
[ редактировать ]Этот раздел нуждается в дополнительных цитатах для проверки . ( Ноябрь 2020 г. ) |
Вопреки распространенному мнению, системный 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 , который, в свою очередь, находится в корневом каталоге диска. А: .
C:..\File.txt
Этот путь относится к файлу с именем Файл.txt находится в родительском каталоге текущего каталога на диске. С: .
Folder\SubFolder\File.txt
Этот путь обозначает файл с именем Файл.txt находится в Каталог SubFolder , который, в свою очередь, находится в Каталог папки , расположенный в текущем каталоге текущего диска (поскольку в этом примере не указана спецификация диска).
File.txt
Этот довольно простой путь указывает на файл с именем File.txt
находится в текущем каталоге (поскольку в пути отсутствует спецификация каталога) на текущем диске (поскольку спецификация диска отсутствует).
\\.\COM1
Этот путь относится к первому последовательному порту ( COM1 ).
C:\>more < C:/Windows/system.ini
; for 16-bit app support
[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
Volume in drive E is Data
Volume Serial Number is 07BE-0B10
Directory of E:\Folder\SubFolder
18 October 2008 08:15 AM <DIR> DOMAIN\user .
18 October 2008 08:15 AM <DIR> DOMAIN\user ..
18 October 2008 08:15 AM <DIR> DOMAIN\user File.txt
1 File(s) 8 bytes
2 Dir(s) 19,063,000 bytes free
Путь, содержащий косую черту, часто необходимо заключить в двойные кавычки, чтобы исключить неоднозначность его использования в параметрах командной строки .
- примечание: CD не работает таким образом:
Компакт-диск «[буква диска]:/Program Files» будет работать только из корневого каталога ([буква диска]:\). Похоже, что все косые черты рассматриваются так же, как и .\. [ нужна ссылка ]
- исключение: используйте переключатель /D для изменения текущего диска в дополнение к изменению текущего каталога диска.
Например:
CD "C:.\Program Files"
работает так же, как
CD "C:/Program Files"
Также из корневой папки:
CD "C:.\Program Files.\Internet Explorer"
будут рассматриваться так же, как
CD "C:/Program Files/Internet Explorer"
Если относительный путь к имени каталога, указанному с помощью косой черты, отсутствует, вы получите следующую ошибку:
The system cannot find the path specified.
Для установки переменных среды иногда необходимо указать путь, не содержащий пробелов, например %JAVA_HOME%
определенный как «C:\Program Files\Java...», может привести к остановке сценариев, когда они обнаруживают пробел в имени пути. Чтобы получить восьмизначное имя, которое Windows назначает любому каталогу для подстановки в переменных среды, используйте команду списка каталогов с параметром /x на один уровень выше целевого каталога. Например, следующая команда даст вам восьмизначное имя для всех каталогов непосредственно под корнем:
C:\>dir /x
См. также
[ редактировать ]- Имя файла
- базовое имя
- Файл устройства
- имя каталога
- Распределенная файловая система (DFS)
- Стандарт иерархии файловой системы (FHS)
- Полное имя файла
- ПУТЬ (переменная)
- URL (унифицированный указатель ресурсов)
Ссылки
[ редактировать ]- ^ Дейли, Р.К.; Нойманн, П.Г. (1965). «Файловая система общего назначения для вторичного хранилища». Материалы осенней совместной компьютерной конференции, состоявшейся 30 ноября — 1 декабря 1965 г., Часть I по XX — AFIPS '65 (Осень, часть I) . Том. Часть I. С. 213–229. дои : 10.1145/1463891.1463915 . S2CID 16236414 .
- ^ «Почему Windows использует обратную косую черту, а все остальное — прямую» . 10 февраля 2014 г.
- ^ «Почему путь DOS имеет символ «»?» . 24 июня 2005 г.
- ^ Jump up to: а б с «Именование файлов, путей и пространств имен» . Документы Майкрософт . 15 декабря 2022 г.
- ^ «компакт-диск» . Команды Windows: Windows Server. Документы Майкрософт . 3 февраля 2023 г. Проверено 4 октября 2023 г.
- ^ «Введение в оболочку» . Гитхаб . OpenAtom OpenHarmony . Проверено 13 марта 2024 г.
- ^ "исполнительный" . Гитхаб . OpenAtom OpenHarmony . Проверено 14 марта 2024 г.
- ^ «Когда обратная косая черта не является обратной косой чертой?» . Разбираем все это .
- ^ «Функция DavGetHTTPFromUNCPath» . ВебДАВ: Windows. Документы Майкрософт . ряд. 13 октября 2021 г. Проверено 4 октября 2023 г.
- ^ «Форматы путей к файлам в системах Windows» . Файловый и потоковый ввод-вывод: .NET. Документы Майкрософт . Проверено 14 июля 2019 г.
- ^ "winapi - Есть ли разница между путями \??\ и \\?\?" . Переполнение стека .
- ^ «Префиксы пути \??\ и \\?\" . Переполнение стека .
- ^ «Определение UNC» . ComputerLanguage.com .
- ^ «Спецификация разрешения имен путей POSIX» .
- ^ «Определение пути POSIX» .
Внешние ссылки
[ редактировать ]- Определение пути — Информационный проект Linux (LINFO)
- Именование файлов, путей и пространств имен - Локальные файловые системы: Windows: Microsoft Docs