Jump to content

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

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

[PSSnapIn name]\[PSProvider name:][:PSDrive root]

/ или \ . .. ~ C:\user\docs\Letter.txt
C:\user/docs\Letter.txt
\\Server01\user\docs\Letter.txt
cd ~\Desktop

UserDocs:/Letter.txt
Variable:PSVersionTable
Registry::HKEY_LOCAL_MACHINE\SOFTWARE\
Microsoft.PowerShell.Security\Certificate::CurrentUser\

ТОПС-20 ДКЛ [device name:] . PS:<USER.DOCS>LETTER.TXT,4
РСХ-11 МКР [device name:] DR0:[30,12]LETTER.TXT;4
OpenVMS ДКЛ [device name:][000000] или

[NODE["accountname password"]]::[device name][000000]:

. [] [-] SYS$LOGIN: SYS$SYSDEVICE:[USER.DOCS]PHOTO.JPG

[]IN_THIS_DIR.COM;
[-.-]GreatGrandParent.TXT
SYS$SYSDEVICE:[.DRAFTS]LETTER.TXT;4
GEIN::[000000]LETTER.TXT;4
SYS$LOGIN:LOGIN.COM

Классический
MacOS
[volume or drive name]: : : :: Macintosh HD:Documents:Letter
:fileincurrentdir
::fileinparent
:::fileingrandparent
ПроДОС AppleSoft БЕЙСИК /[volume or drive name]/ / /SCHOOL.DISK/APPLEWORKS/MY.REPORT

FLIGHT.SIMULATOR,D2

АмигаОС друг 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

Когда монтируются файловые системы с расширениями имен файлов,
'.' символы изменяются на '/', как в примере Japan/gif выше.

ОС Симбиан Файловый менеджер \ \ \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), * (загрузочный том) или @ (домашний каталог AppleShare)

: или / @ :Apps:Platinum.Paint:Platinum.Paint
*:System:Finder
.APPLEDISK3.5B/file
OpenHarmony (включая HarmonyOS ) руководитель [6] [7] hb set -root [ROOT_PATH]

hb set -p --product [PRODUCT_NAME]

> ./ ../ 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

[ редактировать ]
Снимок экрана 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 , который, в свою очередь, находится в корневом каталоге диска. А: .

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

См. также

[ редактировать ]
  1. ^ Дейли, Р.К.; Нойманн, П.Г. (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. ^ Перейти обратно: а б с «Именование файлов, путей и пространств имен» . Документы Майкрософт . 15 декабря 2022 г.
  5. ^ «компакт-диск» . Команды Windows: Windows Server. Документы Майкрософт . 3 февраля 2023 г. Проверено 4 октября 2023 г.
  6. ^ «Введение в оболочку» . Гитхаб . OpenAtom OpenHarmony . Проверено 13 марта 2024 г.
  7. ^ "исполнительный" . Гитхаб . OpenAtom OpenHarmony . Проверено 14 марта 2024 г.
  8. ^ «Когда обратная косая черта не является обратной косой чертой?» . Разбираем все это .
  9. ^ «Функция DavGetHTTPFromUNCPath» . ВебДАВ: Windows. Документы Майкрософт . ряд. 13 октября 2021 г. Проверено 4 октября 2023 г.
  10. ^ «Форматы путей к файлам в системах Windows» . Файловый и потоковый ввод-вывод: .NET. Документы Майкрософт . Проверено 14 июля 2019 г.
  11. ^ "winapi - Есть ли разница между путями \??\ и \\?\?" . Переполнение стека .
  12. ^ «Префиксы путей \??\ и \\?\" . Переполнение стека .
  13. ^ «Определение UNC» . ComputerLanguage.com .
  14. ^ «Спецификация разрешения имен путей POSIX» .
  15. ^ «Определение пути POSIX» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 09bf40bc105d41e30a0a311e8f2d28ee__1719413640
URL1:https://arc.ask3.ru/arc/aa/09/ee/09bf40bc105d41e30a0a311e8f2d28ee.html
Заголовок, (Title) документа по адресу, URL1:
Path (computing) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)