패스(컴퓨팅)

Path (computing)

경로디렉토리 구조 내의 위치를 일의로 식별하는 데 사용되는 문자열입니다.구분 문자로 구분된 구성 요소가 각 디렉토리를 나타내는 디렉토리 트리 계층을 따라 구성됩니다.일반적으로 구분 문자는 슬래시("/), 백슬래시("\") 또는 콜론(":")입니다.단, 일부 운영 체제에서는 다른 구분 기호를 사용할 수 있습니다.경로는 컴퓨터 과학에서 현대 운영 체제에서 공통적인 디렉토리/파일 관계를 나타내기 위해 광범위하게 사용되며 Uniform Resource Locators(URL; 통일 리소스 로케이터) 구축에 필수적입니다.리소스는 절대 경로 또는 상대 경로로 나타낼 수 있습니다.

역사

멀티틱스는 1960년대 [1]중반에 디렉토리('>'로 구분)를 포함한 계층형 파일 시스템을 처음 도입했습니다.

1970년경, Unix는 디렉토리 구분자로 슬래시 문자("/")를 도입했습니다.

1981년 마이크로소프트의 첫 번째 버전은DOS가 출시되었습니다.MS-DOS 1.0은 파일 디렉토리를 지원하지 않았습니다.또한 MS-DOS 1.0과 함께 패키징된 유틸리티 명령의 대부분은 IBM에서 왔고 명령줄 구문은 슬래시 문자를 'switch' 접두사로 사용했습니다.예를들면,dir /w를 실행합니다.dir명령어에 와이드리스트 포맷옵션을 지정합니다.

이 슬래시의 사용은 Microsoft Windows의 명령어인터페이스에서도 확인할 수 있습니다.반면 Unix에서는 명령줄 스위치프리픽스로 대시("-") 문자를 사용합니다.

버전 2.0에서 디렉토리 지원이 MS-DOS에 추가되었을 때 하위 호환성을 위해 스위치 프리픽스 문자로 "/"가 유지되었습니다.Microsoft 에서는 디렉토리 구분자로 백슬래시 문자("\")를 선택했습니다.이것은 슬래시 문자와 비슷합니다만, 보다 최신 버전의 Windows 는 슬래시에 의존하지 않기 때문에,[2][3] 양쪽 타입의 슬래시를 패스내에서 혼재시킬 수 있습니다.

절대 경로 및 상대 경로

절대 경로 또는 전체 경로는 현재 작업 디렉토리에 관계없이 파일 시스템의 동일한 위치를 가리킵니다.그러기 위해서는 루트 디렉토리가 포함되어 있어야 합니다.

반면 상대 경로는 특정 작업 디렉토리에서 시작되므로 완전한 절대 경로를 제공할 필요가 없습니다.파일명은, 현재의 작업 디렉토리에 근거하는 상대 패스로 간주할 수 있습니다.작업 디렉토리가 파일의 부모 디렉토리가 아닌 경우 파일 이름에 따라 주소가 지정되면 file not found 오류가 발생합니다.

운영 체제 및 셸별 경로 표시

운영하는
시스템.
껍데기 뿌리
디렉토리
디렉토리
분리기
현재의
디렉토리
부모
디렉토리
집입니다
디렉토리
Unix 계열 OS
(macOS 포함)
Unix 쉘 / / . .. ~ /home/user/docs/Letter.txt
./inthisdir
../../greatgrandparent
~/.rcinfo
DOS 명령어COM [drive letter:]\또는
\\[server name]\[volume]\
\ . .. C:\USER\DOCS\LETTER.TXT
A:PICTURE.JPG
\\SERVER01\USER\DOCS\LETTER.TXT
OS/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]
/또는\,

일본어판에서는 ,, 한국어판에서는 as를 경로 구분자로 사용합니다.

. ..[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\

TOPS-20 DCL [device name:] . PS:<USER.DOCS>LETTER.TXT,4
RSX-11 MCR [device name:] DR0:[30,12]LETTER.TXT;4
오픈VMS DCL [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

클래식
Mac OS
[volume or drive name]: : : :: Macintosh HD:Documents:Letter
:fileincurrentdir
::fileinparent
:::fileingrandparent
ProDOS Apple Soft BASIC /[volume or drive name]/ / /SCHOOL.DISK/APPLEWORKS/MY.REPORT

FLIGHT.SIMULATOR,D2

아미가OS Amiga CLI /
아미가셸
[drive, volume, device or assign name]: / ""
(빈 문자열)
/ Workbench:Utilities/MultiView
DF0:S/Startup-Sequence
S:Startup-Sequence
TCP:en.wikipedia.com/80
RISC OS 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

파일 이름 확장자를 가진 파일 시스템이 마운트되면
'..' 문자는 위의 일본/gif 예시와 같이 '/'로 변경됩니다.

Symbian OS 파일 매니저 \ \ \user\docs\Letter.txt
도메인/OS 껍데기

//(도메인 루트)
/(현재 노드의 루트)

/ . \ ~ //node/home/user/docs/Letter.txt
./inthisdir
\\greatgrandparent
~rcinfo
메뉴 OS CMD / /
Stratus VOS VOS 명령줄
통역사
%[system_name]#[module_name]> > < %sysname#module1>SubDir>AnotherDir
정지하지 않다
커널
TACL
탠덤 어드밴스드
명령어
루트 없음 . 부모 없음
디렉토리
\NODE.$DISK.SUBVOL.FILE
\NODE.$DEVICE
\NODE.$DEVICE.#SUBDEV.QUALIFIER
CP/M CCP [drive letter:] 디렉토리 지원 없음, 사용자 영역 0 ~F만 A:LETTER.TXT
GS/OS :[volume name]:또는.[device name]:또는[prefix]:

주의: 프리픽스는 숫자(0~31),*(부팅 볼륨) 또는@(AppleShare 홈 디렉토리)

:또는/ @ :Apps:Platinum.Paint:Platinum.Paint
*:System:Finder
.APPLEDISK3.5B/file

Windows 의 일본어판이나 한국어판에서는, 디렉토리 구분 문자 대신에 「'」또는 「'」자가 표시되는 경우가 있습니다.이 경우 백슬래시의 코드는 이 문자와 같이 그려집니다.초기 버전의 MS-DOS는 디스플레이에 이러한 글리프로 백슬래시를 대체하여 7비트 ASCII만 인식하는 프로그램(ISO 646, Windows Codepage 932(일본어판 Shift JIS) 및 Codepage 949(한국어판)를 통해 백슬래시를 표시할 수 있게 되었습니다.Windows의 첫 번째 버전에서도 U+00A5의 Yen 기호가 있는 8비트 ISO-8859-1 문자 집합을 지원하지만 최신 버전의 Windows는 U+20A9의 Won 기호가 있는 Unicode를 지원하지만 많은 소프트웨어는 하위 [6]호환성을 유지하기 위해 ASCII 파일에 있는 백슬래시를 계속 표시할 것입니다.

UNIX의 파생 모델인 Mac OS X는 내부적으로 UNIX 경로를 사용합니다.다만, 소프트웨어의 호환성과 유저의 친숙성을 유지하기 위해서, 유저가 입력한 GUI 스위치의 「/」의 상당수는, 파일명을 표시할 때에 「:」라고 입력해 되돌립니다(유저가 입력한 「:」도 「/」로 변경되지만, 역변환은 일어나지 않습니다).

프로그래밍 언어의 경로

프로그래밍 언어도 경로를 사용합니다.예: 파일이 열렸을 때.대부분의 프로그래밍 언어는 기본 운영 체제의 경로 표현을 사용합니다.

 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)에 매핑됩니다.

범용 명명 규칙

Universal Naming Convention 또는 Uniform Naming Convention의 줄임말인 Microsoft Windows UNC는 공유 파일, 디렉터리 또는 프린터와 같은 네트워크 리소스의 위치를 설명하는 공통 구문을 지정합니다.윈도우즈 시스템의 UNC 구문은 일반 형식입니다.

\\컴퓨터명\공유 폴더\리소스

Microsoft 에서는, 이것을 「네트워크 패스」라고 부릅니다.

일부 Microsoft Windows 인터페이스에서는 URL 대신 WebDAV 공유 액세스를 위한 UNC 구문을 허용하거나 요구합니다.UNC 구문은 옵션의[7] 컴포넌트로 확장되어 SSL 및 TCP/IP 포트 번호(WebDAV URL)의 사용을 나타냅니다.http[s]://HostName[:Port]/SharedFolder/Resource된다

\\호스트명[@]SSL][@Port]\공유 폴더\리소스

원격에서 "Shared Folder"를 열었을 때 "Shared Folder"의 이름이 서버상의 프로그램에서 표시되는 이름과 다를 수 있습니다.대신 SharedFolder 이름은 "공유"를 정의할 때 폴더에 할당된 임의의 이름으로 구성됩니다.

일부 Microsoft Windows 인터페이스에서는, 「긴 UNC」도 사용할 수 있습니다.

\\?\UNC\컴퓨터명\공유 폴더\리소스

Microsoft Windows 에서는, 다음의 타입의 패스를 사용합니다.

  • 로컬 파일 시스템(LFS)과 같은C:\File
  • 예를 들어 Universal Naming Configuration(UNC; 범용 명명 규칙)과 같은\\Server\Volume\File또는 /<internet resource name>[\Directory name](최소한 Windows 7 이후에서는)
  • 다음과 같은 '긴' 디바이스 경로\\?\C:\File또는\\?\UNC\Server\Volume\File이 경로는 로컬파일 네임스페이스를 가리키며,[8]\\.\는 로컬 DOS 디바이스 이름 공간을 가리키는 것과 유사합니다.이 형식은 변환하지 않고 파일 시스템에 직접 경로를 전송하기 때문에 "원시" 또는 "해석되지 않은" 경로이기도 합니다./ to \ 및 다음과 [9]같은 이름을 해석합니다.
  • Windows NT 오브젝트 매니저 \\??\프리픽스 패스(글로벌 DOS [10][11]네임스페이스).

Windows XP 이전 버전의 Windows에서는 "긴" 디바이스 경로를 허용하는 API만 260자를 초과할 수 있습니다.

Windows XP 및 Windows Vista인 Explorer.exe에서는 최대 [citation needed]248자의 경로 이름을 사용할 수 있습니다.

UNC는 두 개의 백슬래시로 시작하며, 백슬래시는 문자열 이스케이프 및 정규 표현에서도 사용되므로 이쑤시개 신드롬이 발생할 수 있습니다.UNC와 일치하는 정규 표현의 이스케이프 문자열은 8개의 백슬래시로 시작됩니다.\\\\\\\\– 문자열과 정규 표현 모두 이스케이프가 필요하기 때문입니다.이것은 C#의 경우와 같이 raw 스트링을 사용하여 심플화할 수 있습니다.@"\\\\"또는 Python의r'\\\\'또는 Perl과 같은 정규 표현 리터럴qr{\\\\}.

POSIX 경로 이름 정의

대부분의 Unix 유사 시스템은 유사한 [12]구문을 사용합니다.POSIX 에서는, 2 개의 슬래시로 시작하는 패스를 실장 정의의 [13]방법으로 취급할 수 있습니다.다만, 시스템에서는 복수의 슬래시를 1 개의 [14]슬래시로 취급할 필요가 있는 경우도 있습니다.Unix와 유사한 시스템의 많은 응용 프로그램(scp, rcp, rsync 등)은 다음과 같은 리소스 정의를 사용합니다.

호스트명:/directory path/resource

또는 서비스 이름을 가진 URI 스킴(여기서 'smb'):

smb://hostname/directorypath/리소스

Unix 스타일

다음 예제에서는 터미널 또는 터미널 응용 프로그램(명령줄 창)에서 나타나는 Unix 스타일의 파일시스템 동작에 대해 설명합니다.

다음의 현재의 작업 디렉토리(cwd)에 접속되어 있습니다.

/users/마크/

현재 작업 디렉토리를 다음과 같이 변경할 수 있습니다.

/users/mark/bobapples

이 시점에서, 목적의 디렉토리의 상대 패스는 다음과 같이 나타낼 수 있습니다.

./bobles

또는 줄여서:

보바플

디렉토리의 절대 패스는 다음과 같습니다.

/users/mark/bobapples

원하는 디렉토리의 상대 경로로 bobapples를 지정하면 명령 프롬프트에서 다음을 입력하여 현재 작업 디렉토리를 bobapples로 변경할 수 있습니다.

cd bobapples

상위 디렉토리를 나타내는 2개의 점("..")은 현재 디렉토리 자체를 나타냅니다.둘 다 복잡한 상대 경로(예: "../mark/.bobapples")의 구성 요소일 수 있습니다. 여기서 ".foo"는 단독으로 또는 이러한 상대 경로의 첫 번째 구성 요소로서 작업 디렉터리를 나타냅니다. (현재 작업 디렉터리의 파일 "foo"를 참조하기 위해 ".foo"를 사용하면 기본 디렉터리에 있는 리소스 "foo"와 유용하게 구분할 수 있습니다.또는 시스템에 설치되어 있는 페이지가 아닌 특정 버전의 매뉴얼페이지 표시 등)를 참조해 주세요.

MS-DOS/Microsoft Windows 스타일

디렉토리내의 파일명을 표시하는 윈도·스커맨드 셸의 스크린샷.

일반적인 생각과는 달리, Windows 시스템 API는 슬래시를 받아들이기 때문에 위의 모든 Unix 예가 작동해야 합니다.그러나 Windows 상의 많은 응용 프로그램은 슬래시를 다른 목적으로 해석하거나 잘못된 문자로 취급하기 때문에 특히 cmd.exe 셸(일반적으로 터미널 창에서 실행되므로 "terminal"이라고도 함)을 입력해야 합니다.tcshWindows PowerShell과 같은 Windows에서 사용할 수 있는 다른 많은 셸은 슬래시를 허용합니다.

또한 "\"는 단일 루트가 아니라 "현재 디스크"의 루트를 나타냅니다.현재 디스크가 아닌 다른 디스크에 있는 파일을 지정하려면 드라이브 문자와 콜론 앞에 접두사를 붙여야 합니다.콜론은 MS-DOS 파일명의 유효한 문자가 아니기 때문에, 현재의 디렉토리에는 「A:」라고 하는 파일을 가질 수 없기 때문에, 애매함은 없습니다.

UNC 이름(\\로 시작하는 경로)\)[15] 슬래시를 지원하지 않습니다.

다음으로 가장 일반적인 구문에 일치하는 백슬래시를 사용하는 MS-DOS/Windows 스타일의 경로를 표시하는 예를 나타냅니다.

A:\Temp\File.txt

이 경로는 Temp 디렉토리에 있는 File.txt라는 이름의 파일을 가리키며, Temp 디렉토리는 드라이브 A:의 루트 디렉토리에 위치합니다.

C:..\파일.txt

이 경로는 파일이라는 파일을 참조합니다.txt는 C: 드라이브의 현재 디렉토리의 부모 디렉토리에 있습니다.

폴더\서브폴더\파일.txt

이 경로는 파일이라는 파일을 나타냅니다.txt는 SubFolder 디렉토리에 있으며, 이 디렉토리는 현재 드라이브의 현재 디렉토리에 있는 폴더 디렉토리에 위치합니다(이 예에서는 드라이브 사양을 제공하지 않으므로).

파일.txt

이 다소 단순한 경로는 파일 이름인File.txt(경로에 디렉토리 사양이 없기 때문에) 현재 드라이브의 현재 디렉토리에 있습니다(드라이브 사양이 없기 때문에).

\.\COM1

이 경로는 첫 번째 시리얼 포트(COM1)를 참조합니다.

C:\> 추가 < C:/Windows/system.ini
; 16비트 어플리케이션 지원 [386 강화] 동작하지 않다=dosapp.displaces EGA80WOA=EGA80WOA EGA40WOA=EGA40WOA CGA80WOA=CGA80WOA CGA40WOA=CGA40WOA ... 

이 예에서는 슬래시가 포함된 경로를 디렉토리 구분자로 사용합니다.명령어는 파일의 내용을 명령어로 리다이렉트합니다.

E:\>dir "/Folder/SubFolder/" /Q 드라이브 E볼륨 시리얼 번호는 E:\Folder\SubFolder 2008년 10월 18일 08:15 AM <DIR> 도메인\user . 2008년 10월 18일 08:15 AM <DIR> 사용자 18일 08:15 AM <DIR> 도메인 ..D >txt 1 파일(s) 8 바이트2 Dir,063,000 바이트

슬래시를 포함하는 경로는 명령줄 스위치에서 명확하게 하기 위해 큰따옴표로 둘러싸야 하는 경우가 많습니다.

  • 주의: CD는 이 방법으로 동작하지 않습니다.

CD "[드라이브 문자]:/프로그램 파일"은 루트([드라이브 문자]:\) 디렉토리그러면 모든 슬래시가 .\[citation needed]와 동일하게 처리됩니다.

  • 예외:/D 스위치를 사용하여 드라이브의 현재 디렉토리를 변경할 뿐만 아니라 현재 드라이브도 변경할 수 있습니다.

예를 들어 다음과 같습니다.

CD "C:.\Program Files"

와 동일하게 동작한다.

CD "C:/Program Files

또한 루트 폴더에서:

CD "C:.\Program Files" (C:.\프로그램 파일)\Internet Explorer"

같은 취급을 받다

CD "C:/프로그램 파일/Internet Explorer"

슬래시로 지정된 디렉토리 이름에 대한 상대 경로가 없는 경우 다음 오류가 발생합니다.

지정된 경로를 찾을 수 없습니다. 

환경변수를 설정하기 위해 공백이 없는 경로를 제공해야 하는 경우가 있습니다(예:%JAVA_HOME%"C:"로 정의됩니다.\Program Files\Java.."는 패스명의 스페이스를 검출하면 스크립트가 정지할 수 있습니다.환경변수 내의 임의의 디렉토리에 Windows 가 할당하는8 문자의 이름을 취득하려면 , /x 옵션을 타겟디렉토리에서 1 레벨 위로 지정하고 directory listing 명령을 사용합니다.예를 들어, root 바로 아래에 있는 모든 디렉토리의 8글자 이름을 다음에 나타냅니다.

C:\>dir/x

「 」를 참조해 주세요.

레퍼런스

  1. ^ Daley, R.C.; Neumann, P.G. (1965). "A general-purpose file system for secondary storage". AFIPS Proceedings of the Joint Computer Conference. Part I: 213–229. doi:10.1145/1463891.1463915. S2CID 16236414.
  2. ^ "Why Windows Uses Backslashes and Everything else Uses Forward Slashes".
  3. ^ "Why is the DOS path character ?".
  4. ^ 파일, 경로 및 네임스페이스 이름 지정
  5. ^ "cd". Windows Commands : Windows Server. Microsoft Docs. Retrieved 14 July 2019.
  6. ^ 모든 것을 정리하는 방법:백슬래시가 아닌 경우는?
  7. ^ "DavGetHTTPFromUNCPath function". WebDAV : Windows. Microsoft Docs. series. Retrieved 14 July 2019.
  8. ^ "File path formats on Windows systems". File and Stream I/O : .NET. Microsoft Docs. Retrieved 14 July 2019.
  9. ^ "Naming Files, Paths, and Namespaces - Win32 apps". docs.microsoft.com.
  10. ^ "winapi - Is there a difference between \??\ and \\?\ paths?". Stack Overflow.
  11. ^ "Path prefixes \??\ and \\?\". Stack Overflow.
  12. ^ ComputerLanguage.com에 의한 UNC 정의
  13. ^ POSIX 경로 이름 해결 사양
  14. ^ POSIX 경로 이름 정의
  15. ^ "Naming Files, Paths, and Namespaces". Local File Systems : Windows. Microsoft Docs. Retrieved 14 July 2019.

외부 링크