Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Path (computing)

From Wikipedia, the free encyclopedia
(Redirected fromUNC path)
Sequence that identifies location in a directory hierarchy
For the environment variable, seePATH (variable).
This articleneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "Path" computing – news ·newspapers ·books ·scholar ·JSTOR
(July 2008) (Learn how and when to remove this message)

Apath (orfilepath,file path,pathname, or similar) is astring ofcharacters used to uniquely identify a location in adirectory structure. It is composed by following the directorytree hierarchy in which components, separated by a delimiting character, represent each directory. The delimiting character is most commonly theslash ("/"), thebackslash character ("\"), or colon (":"), though someoperating systems may use a differentdelimiter. Paths are used extensively incomputer science to represent the directory/file relationships common in modern operating systems and are essential in the construction ofUniform Resource Locators (URLs). Resources can be represented by eitherabsolute orrelative paths.

History

[edit]

Multics first introduced ahierarchical file system with directories (separated by ">") in the mid-1960s.[1]

Around 1970,Unix introduced the slash character ("/") as its directory separator.

In 1981, the first version ofMicrosoftDOS was released.MS-DOS 1.0 did not support file directories. Also, a major portion of the utility commands packaged with MS-DOS 1.0 came fromIBM and their command line syntax used the slash character as a 'switch' prefix. For example,dir /w runs thedir command with the wide list format option.

This use of slash can still be found in the command interface underMicrosoft Windows. By contrast, Unix uses thehyphen-minus character ("-") as a command-line switch prefix.

When directory support was added to MS-DOS in version 2.0, "/" was kept as the switch prefix character forbackward compatibility. Microsoft chose the backslash character ("\") as a directory separator, which looks similar to the slash character, though more modern version of Windows are slash-agnostic, allowing mixing of both types of slash in a path.[2][3]

Absolute and relative paths

[edit]

Anabsolute orfull path points to the same location in a file system, regardless of the currentworking directory. To do that, it must include theroot directory.

By contrast, arelative path starts from some given working directory, avoiding the need to provide the full absolute path. Afilename can be considered as a relative path based at the current working directory. If the working directory is not the file'sparent directory, afile not found error will result if the file is addressed by its name.

Base URL

[edit]

Abase URL is the consistent part of an API path, to which endpoint paths are appended.

Representations of paths by operating system and shell

[edit]
Operating
system
ShellRoot
directory
Directory
separator
Current
directory
Parent
directory
Home
directory
Examples
Unix-like OS
(incl.macOS)
Unix shell//...~/home/user/docs/Letter.txt
./inthisdir
../../greatgrandparent
~/.rcinfo
DOSCOMMAND.COM[drive letter:]\ or
\\[server name]\[volume]\
\...C:\USER\DOCS\LETTER.TXT
A:PICTURE.JPG
\\SERVER01\USER\DOCS\LETTER.TXT
OS/2cmd.exe[drive letter:]\ or
\\[server name]\[volume]\
/ or\...C:\user\docs\Letter.txt
A:Picture.jpg
\\SERVER01\USER\docs\Letter.txt
Microsoft
Windows
cmd.exe\ (relative to current working directory root)
or[drive_letter]:\
or\\[server]\[sharename]\
or\\?\[drive_spec]:\
or \\?\UNC\[server]\[sharename]\
or\\.\[physical_device]\[4]
/ or\,

TheJapanese edition uses ¥,the Korean version uses ₩ as Path separator

...[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:]/ or[drive name:]\or
\\[server name]\ or

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

/ or\...~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\

TOPS-20DCL[device name:].PS:<USER.DOCS>LETTER.TXT,4
RSX-11MCR[device name:]DR0:[30,12]LETTER.TXT;4
OpenVMSDCL[device name:][000000] or

[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

Classic
Mac OS
[volume or drive name]:::::Macintosh HD:Documents:Letter
:fileincurrentdir
::fileinparent
:::fileingrandparent
ProDOSAppleSoft BASIC/[volume or drive name]///SCHOOL.DISK/APPLEWORKS/MY.REPORT

FLIGHT.SIMULATOR,D2

AmigaOSAmiga CLI /
AmigaShell
[drive, volume, device, or assign name]:/""
(empty string)
/Workbench:Utilities/MultiView
DF0:S/Startup-Sequence
S:Startup-Sequence
TCP:en.wikipedia.com/80
RISC OSShellCLI[fs type[#option]:][:drive number or disc name.]$

note: &, %, and @ can also be used to reference the root
of the current user, the library and the current (working) directory respectively.

.@^&ADFS::MyDrive.$.Documents.Letter
Net#MainServer::DataDrive.$.Main.sy10823
LanMan::WindowsC.$.Pictures.Japan/gif
NFS:&.!Choices
ADFS:%.IfThere
@.inthisdir
^.^.greatgrandparent

When filesystems with filename extensions are mounted,
'.' characters are changed to '/', as in the Japan/gif example above.

Symbian OSFile manager\\\user\docs\Letter.txt
Domain/OSShell

// (root of domain)
/ (root of current node)

/.\~//node/home/user/docs/Letter.txt
./inthisdir
\\greatgrandparent
~rcinfo
MenuetOSCMD//
Stratus VOSVOS command-line
interpreter
%[system_name]#[module_name]>><%sysname#module1>SubDir>AnotherDir
NonStop
Kernel
TACL
Tandem Advanced
Command Language
No root.no parent
directory
\NODE.$DISK.SUBVOL.FILE
\NODE.$DEVICE
\NODE.$DEVICE.#SUBDEV.QUALIFIER
CP/MCCP[drive letter:]no directory support, just user areas 0–FA:LETTER.TXT
GS/OS:[volume name]: or.[device name]: or[prefix]:

note: prefix may be a number (0–31),* (boot volume) or@ (AppleShare home directory)

: or/@:Apps:Platinum.Paint:Platinum.Paint
*:System:Finder
.APPLEDISK3.5B/file
OpenHarmony (incl.HarmonyOS)exec[6][7]hb set -root [ROOT_PATH]

hb set -p --product [PRODUCT_NAME]

>./../LOCAL>MEDIA_TYPE_>Download>Letter.txt

Japanese and Korean versions of Windows may often display the '¥' character or the '' character instead of the directory separator. In such cases the code for a backslash is being drawn as these characters. Very early versions of MS-DOS replaced the backslash with these glyphs on the display to make it possible to display them by programs that only understood 7-bitASCII (other characters such as the square brackets were replaced as well, seeISO 646,Windows Codepage 932 (Japanese Shift JIS), andCodepage 949 (Korean)). Although even the first version of Windows supported the 8-bitISO-8859-1 character set which has the Yen sign at U+00A5, and modern versions of Windows supportsUnicode which has the Won sign at U+20A9, much software will continue to display backslashes found in ASCII files this way to preserve backward compatibility.[8]

Mac OS X, as a derivative of UNIX, uses UNIX paths internally. However, to preserve compatibility for software and familiarity for users, many portions of the GUI switch "/" typed by the user to ":" internally, and switch them back when displaying filenames (a ":" entered by the user is also changed into "/" but the inverse translation does not happen).

Paths in programming languages

[edit]

Programming languages also use paths. E.g.: When a file is opened. Most programming languages use the path representation of the underlying operating system:

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

This direct access to the operating system paths can hinder the portability of programs. To support portable programsJava usesFile.separator to distinguish between / and \ separated paths.Seed7 has a different approach for the path representation. In Seed7 all paths use the Unix path convention, independent of the operating system. Under windows a mapping takes place (e.g.: The path/c/users is mapped toc:\users).

Universal Naming Convention

[edit]

The Microsoft WindowsUNC, short forUniversal Naming Convention orUniform Naming Convention, specifies a common syntax to describe the location of a network resource, such as a shared file, directory, or printer. The UNC syntax for Windows systems has the generic form:

\\ComputerName\SharedFolder\Resource

Microsoft often refers to this as a "network path".

Some Microsoft Windows interfaces also allow or require UNC syntax forWebDAV share access, rather than a URL. The UNC syntax is extended[9] with optional components to denote use of SSL and TCP/IP port number, a WebDAV URL ofhttp[s]://HostName[:Port]/SharedFolder/Resource becomes

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

When viewed remotely, the "SharedFolder" may have a name different from what a program on the server sees when opening "\SharedFolder". Instead, the SharedFolder name consists of an arbitrary name assigned to the folder when defining its "sharing".

Some Microsoft Windows interfaces also accept the "Long UNC":

\\?\UNC\ComputerName\SharedFolder\Resource

Microsoft Windows uses the following types of paths:

  • local file system (LFS), such asC:\File
  • universal naming convention (UNC), such as\\Server\Volume\File or /<internet resource name>[\Directory name] (at least in Windows 7 and later)
  • "long" device path such as\\?\C:\File or\\?\UNC\Server\Volume\File.[10] This path points to the local file namespace and\\.\ is a similar one that points to the local DOS device namespace. This format is also the "raw" or "uninterpreted" path, since it sends paths straight to the file system without converting/ to\ and interpreting names like...[4]
  • Windows NT object manager\\??\-prefixed paths (global DOS namespace).[11][12]

In versions of Windows prior to Windows XP, only the APIs that accept "long" device paths could accept more than 260 characters.

Theshell inWindows XP andWindows Vista,explorer.exe, allows path names up to 248 characters long.[citation needed]

Since UNCs start with two backslashes, and the backslash is also used for string escaping and inregular expressions, this can result in extreme cases ofleaning toothpick syndrome: an escaped string for a regular expression matching a UNC begins with 8 backslashes –\\\\\\\\ – because the string and regular expression both require escaping. This can be simplified by usingraw strings, as in C#'s@"\\\\" or Python'sr'\\\\', or regular expression literals, as in Perl'sqr{\\\\}.

POSIX pathname definition

[edit]

Most Unix-like systems use a similar syntax.[13]POSIX allows treating a path beginning with two slashes in an implementation-defined manner,[14]though in other cases systems must treat multiple slashes as single slashes.[15]Many applications on Unix-like systems (for example,scp,rcp, andrsync) use resource definitions such as:

hostname:/directorypath/resource

orURI schemes with the service name (here 'smb'):

smb://hostname/directorypath/resource

Example

[edit]

Unix style

[edit]

The following worked example discusses the behavior of aUnix-stylefile system as it would appear from a terminal or terminal application (command-line window):

Attached to a current working directory (cwd) of:

/users/mark/

One wants to change the current working directory to:

/users/mark/bobapples

At that moment, therelative path for the desireddirectory can be represented as:

./bobapples

or for short:

bobapples

and the absolute path for the directory as:

/users/mark/bobapples

Givenbobapples as the relative path for the directory wanted, the following may be typed at thecommand prompt to change the current working directory to bobapples:

cd bobapples

Two dots ("..") point upward in thehierarchy, to indicate theparent directory; one dot (".") represents the current directory itself. Both can be components of a complex relative path (e.g., "../mark/./bobapples"), where "." alone or as the first component of such a relative path represents theworking directory. (Using "./foo" to refer to a file "foo" in the current working directory can sometimes usefully distinguish it from a resource "foo" to be found in a default directory or by other means; for example, to view a specific version of amanual page instead of the one installed in the system.)

MS-DOS/Microsoft Windows style

[edit]
This sectionneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources in this section. Unsourced material may be challenged and removed.(November 2020) (Learn how and when to remove this message)
Screenshot of aWindowscommand shell showing filenames in a directory

Contrary to popular belief, theWindows system API accepts slash, and thus all the above Unix examples should work. But many applications on Windows interpret a slash for other purposes or treat it as an invalid character, and thus require you to enter backslash – notably thecmd.exe shell (often called the "terminal" as it typically runs in a terminal window). Note that many other shells available for Windows, such astcsh andWindows PowerShell, allow the slash.

In addition "\" does not indicate a single root, but instead the root of the "current disk". Indicating a file on a disk other than the current one requires prefixing a drive letter and colon. No ambiguity ensues, because colon is not a valid character in an MS-DOS filename, and thus one cannot have a file called "A:" in the current directory.

UNC names (any path starting with\\?\) do not support slashes.[4]

The following examples showMS-DOS/Windows-style paths, with backslashes used to match the most common syntax:

A:\Temp\File.txt

This path points to a file with the nameFile.txt, located in the directoryTemp, which in turn is located in the root directory of the driveA:.

C:..\File.txt

This path refers to a file calledFile.txt located in the parent directory of the current directory on driveC:.

Folder\SubFolder\File.txt

This path denotes a file calledFile.txt located inSubFolder directory which in turn is located inFolder directory which is located in the current directory of the current drive (since this example gives no drive-specification).

File.txt

This rather simple path points to a file namedFile.txt located in the current directory (since the path lacks a directory-specification) on the current drive (since no drive specification is present).

\\.\COM1

This path refers to the firstserial port (COM1).

C:\>more< C:/Windows/system.ini; for 16-bit app support[386Enh]woafont=dosapp.fonEGA80WOA.FON=EGA80WOA.FONEGA40WOA.FON=EGA40WOA.FONCGA80WOA.FON=CGA80WOA.FONCGA40WOA.FON=CGA40WOA.FON...

This example uses a path containing slashes as directory separator. The command redirects the content of the file to themore command.

E:\>dir"/Folder/SubFolder/" /Q Volume in drive E is Data Volume Serial Number is 07BE-0B10 Directory of E:\Folder\SubFolder18 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

A path containing forward slashes often needs to be surrounded by double quotes to disambiguate it fromcommand-line switches.

  • note: CD does not work this way:

CD "[drive letter]:/Program Files" will only work from the root ([drive letter]:\) directory. This appears to treat all forward slashes the same as .\.[citation needed]

  • exception: Use the /D switch to change current drive in addition to changing current directory for a drive.

For example:

CD "C:.\Program Files"

works the same as

CD "C:/Program Files"

Also, from a root folder:

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

would be treated the same as

CD "C:/Program Files/Internet Explorer"

If there is no relative path to the directory name specified with forward slashes you will get the following error:

The system cannot find the path specified.

For setting environment variables, it is sometimes necessary to provide a path that does not contain spaces in it, for instance%JAVA_HOME% defined as "C:\Program Files\Java..." can cause scripts to halt when they encounter the space in the path name. To get the eight-character name Windows assigns to any directory for substitution in environment variables, use the directory listing command with the /x option one level up from the target directory. For instance, the following will display the8.3 filenames for all directories directly under root:

C:\>dir /x

(Users can disable 8.3 filename creation on a drive-by-drive basis.)

See also

[edit]

References

[edit]
  1. ^Daley, R.C.; Neumann, P.G. (1965). "A general-purpose file system for secondary storage".Proceedings of the November 30--December 1, 1965, fall joint computer conference, Part I on XX - AFIPS '65 (Fall, part I). Vol. Part I. pp. 213–229.doi:10.1145/1463891.1463915.S2CID 16236414.
  2. ^"Why Windows Uses Backslashes and Everything else Uses Forward Slashes". 10 February 2014.
  3. ^"Why is the DOS path character ""?". 24 June 2005.
  4. ^abc"Naming Files, Paths, and Namespaces".Microsoft Docs. 15 December 2022.
  5. ^"cd". Windows Commands: Windows Server.Microsoft Docs. 3 February 2023. Retrieved4 October 2023.
  6. ^"Introduction to the Shell".GitHub. OpenAtom OpenHarmony. Retrieved13 March 2024.
  7. ^"exec".GitHub. OpenAtom OpenHarmony. Retrieved14 March 2024.
  8. ^"When is a backslash not a backslash?".Sorting it all Out.
  9. ^"DavGetHTTPFromUNCPath function". WebDAV: Windows.Microsoft Docs. series. 13 October 2021. Retrieved4 October 2023.
  10. ^"File path formats on Windows systems". File and Stream I/O: .NET.Microsoft Docs. Retrieved14 July 2019.
  11. ^"winapi - Is there a difference between \??\ and \\?\ paths?".Stack Overflow.
  12. ^"Path prefixes \??\ and \\?\".Stack Overflow.
  13. ^"UNC Definition".ComputerLanguage.com.
  14. ^"POSIX pathname resolution specification".
  15. ^"POSIX pathname definition".

External links

[edit]
Types
Properties
Organisation
Operations
Linking
Management
Retrieved from "https://en.wikipedia.org/w/index.php?title=Path_(computing)&oldid=1275356371#UNC"
Category:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp