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

редактировать

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

Содержание
  • 1 История
  • 2 Абсолютные и относительные пути
  • 3 Представления путей по операционной системе и оболочке
  • 4 Пути в языках программирования
  • 5 Универсальное соглашение об именах
  • 6 Определение пути к POSIX
  • 7 Пример
    • 7.1 Стиль Unix
    • 7.2 Стиль MS-DOS / Microsoft Windows
  • 8 См. Также
  • 9 Ссылки
  • 10 Внешние ссылки
История

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

Примерно в 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 не зависят от косой черты, что позволяет смешивать оба типа косой черты в пути.

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

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

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

Представления путей по операционной системе и оболочке
Операционная. СистемаОболочкаКорень. КаталогКаталог. РазделительТекущий. каталогРодительский. каталогДомашний. каталогПримеры
Unix-подобный ОС. (включая macOS )оболочку Unix //...~/home/user/docs/Letter.txt. ./inthisdir. ../../greatgrandparent. ~ /.rcinfo
DOS COMMAND.COM [буква диска:] \или. \\ [имя сервера] \ [том] \\...C: \ USER \ DOCS \ LETTER.TXT. A: PICTURE.JPG. \\ SERVER01 \ USER \ DOCS \ LETTER.TXT
OS / 2 cmd.exe [буква диска:] \или. \\ [имя сервера] \ [том] \/или \...C: \ user \ docs \ Letter.txt. A: Picture.jpg. \\ SERVER01 \ USER \ docs \ Letter.txt
Microsoft. Windows cmd.exe \(относительно корня текущего рабочего каталога). или [буква_диска]: \. или \\[server provided\[sharename impression\. или \\?\[drive_spec] :\. или \\? \ [server ] \ [sharename] \. или \ \? \ UNC \ [сервер] \ [общее имя] \. или \\. \ [Физическое_устройство] \./или \...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: имя_ альтернативного_потока . ./inthisdir. ../../ greatgrandparent.
Microsoft. WindowsWindows PowerShell [буква диска:] /или [имя диска:] \или. \\ [сервер имя] \or.

[имя PSSnapIn] \ [имя PSProvider:] [: корень PSDrive]

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

UserDocs: /Letter.txt. Переменная: PSVersionTable. Registry :: HKEY_LOCAL_MACHINE \ SOFTWARE \. Microsoft.PowerShell.Security \ Certificate :: CurrentUser \

TOPS-20 DCL [имя устройства:].PS: LETTER.TXT, 4
RSX-11 [имя устройства:]DR0: [30,12] LETTER.TXT; 4
OpenVMS DCL [имя устройства:] [000000]or.

[NODE ["accountn ame пароль "]] :: [имя устройства] [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.

Классический. Mac OS [том или имя диска]:::::Macintosh HD: Документы: Буква. : fileincurrentdir. :: fileinparent. ::: fileingrandparent
ProDOS AppleSoft BASIC/ [том или имя диска] ///SCHOOL.DISK/APPLEWORKS/MY.REPORT

FLIGHT.SIMULATOR, D2

AmigaOS Amiga CLI /. AmigaShell[диск, том, устройство или назначенное имя]:/"". (пустая строка)/Workbench: Utilities / MultiView. DF0: S / Startup-Sequence. S: Startup-Sequence. TCP: en.wikipedia.com/80
RISC OS ShellCLI[тип fs [#option]:] [: номер диска или имя диска.] $

примечание:,% и @ также могут использоваться для ссылки на корень. текущего пользователя, библиотеки и текущего (рабочего) каталога соответственно.

.@^ADFS :: MyDrive. $. Documents.Letter. Net # MainServer :: DataDrive. $. Main.sy10823. LanMan :: WindowsC. $. Pictures.Japan / gif. NFS:. ! Варианты. ADFS:%. IfThere. @.inthisdir. ^. ^. Greatgrandparent.. При монтировании файловых систем с расширениями файлов. '.' символы заменяются на '/', как в приведенном выше примере Japan / gif.
Symbian OS Файловый менеджер\\\ user \ docs \ Letter.txt
Домен / ОС Оболочка

//(корень домена). /(корень текущего узла).

/.\~// узел / home / user / docs / Letter.txt. ./inthisdir. \\ greatgrandparent. ~ rcinfo
MenuetOS CMD//
Stratus VOS команда VOS- строка. интерпретатор%[system_namepting#[module_name provided>><% sysname # module1>SubDir>AnotherDir
NonStop. Kernel TACL. Tandem Advanced. Command LanguageНет корня.нет родительского. каталога\ NODE. $ DISK.SUBVOL.FILE. \ NODE. $ DEVICE. \ NODE. $ DEVICE. # SUBDEV.QUALIFIER
CP / M CCP [буква диска:]без поддержки каталогов, только пользовательские области 0-FA: LETTER.TXT
GS / OS : [ имя тома]:или . [имя устройства]:или [prefix visible:. примечание: префикс. может быть числом (0-31), *(загрузочный том) или @(домашний каталог AppleShare):или /@: Приложения: Platinum.Paint: Platinum.Paint. *: Система: Finder. .APPLEDISK3.5B / file

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

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 имеет общую форму:

\\ ComputerName \ SharedFolder \ Resource

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

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

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

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

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

\\? \ UNC \ ComputerName \ SharedFolder \ Resource

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

  • локальная файловая система (LFS), например C: \ File
  • универсальное соглашение об именах (UNC), например \\ Server \ Volume \ Fileили / [\ Имя каталога](по крайней мере, в Windows 7 и новее)
  • «длинный» путь к устройству, например \\? \ C: \ Fileили \\? \ UNC \ Сервер \ Том \ Файл. Этот путь указывает на пространство имен локального файла, а \\. \- аналогичный путь, указывающий на пространство имен локального устройства DOS. Этот формат также является «необработанным» или «неинтерпретируемым» путем, поскольку он отправляет пути прямо в файловую систему без преобразования / в \ и интерпретации таких имен, как...
  • диспетчер объектов Windows NT \\ ?? \- пути с префиксом (глобальное пространство имен DOS).

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

Оболочка в Windows XP и Windows Vista, explorer.exe, позволяет имена путей до 248 символов long.

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

определение пути POSIX

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

hostname: / путь к каталогу / ресурс

или аналогичный URL-адреса с именем службы (здесь 'smb'):

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

Стиль Unix

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

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

/ users / mark /

Требуется изменить текущий рабочий каталог на:

/ users / mark / bobapples

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

./bobapples

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

bobapples

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

/ users / mark / bobapples

Данные bobapples как относительный путь для d Если требуется каталог, в командной строке можно ввести следующее, чтобы изменить текущий рабочий каталог на 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 (любой путь, начинающийся с \\? \) Не поддерживают косую черту.

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

A: \ Temp \ File.txt

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

C:.. \ File.txt

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

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

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

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

CD "[буква диска]: / Program Files" будет только работать из корневого ([буква диска]: \) каталога. Похоже, что все косые черты обрабатываются так же, как. \.

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

Например:

CD «C:. \ Program Files»

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

CD «C: / Program Files»

Кроме того, из корневой папки:

CD "C:. \ Program Files. \ Internet Explorer"

будет обрабатываться так же, как

CD "C: / Program Files / Internet Explorer"

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

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

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

C: \>dir / x
См. Также
Ссылки

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

Внешние ссылки
Последняя правка сделана 2021-06-01 04:52:50
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте