code

그렇다면 Windows에서 경로 슬래시 (/ 또는 \)의 올바른 방향은 무엇입니까?

codestyles 2021. 1. 9. 09:54
반응형

그렇다면 Windows에서 경로 슬래시 (/ 또는 \)의 올바른 방향은 무엇입니까?


Windows는 \파일 경로에 백 슬래시를 작성한다고 주장하는 반면 .NET의 URI 클래스는 슬래시로 작성합니다 /. 가장 원시적 인 시스템에서도 허용되는 올바른 방법이 있습니까? .NET의 URI가 나머지 Windows와 비교하여 다른 슬래시를 표시하는 이유는 무엇입니까?


파일 경로와 URI가 다릅니다. \Windows 파일 경로 /에서 올 바르고 URI에서 올 바릅니다.

따라서이 파일 경로 C:\Documents\Foo는 다음 URI로 변환됩니다.file:///C:/Documents/Foo


Windows는 이와 관련하여 운영 체제의 자식이지만 많은 API도 슬래시를 허용합니다. Windows에서 파일 경로는 다음과 같습니다.

C:\Users\jsmith\Documents\file.txt

Unix 계열 시스템 (Mac OS X 및 Linux 포함)에서 동일한 경로는 다음과 같습니다.

/home/jsmith/Documents/file.txt

표준화에 대한 URL, RFC 1738는 , 항상 플랫폼에 관계없이 슬래시를 사용합니다 :

http://home.example.com/Documents/file.txt

그 이유는 역사적입니다. Windows조차도 URL에 대한 우리의 생각을 바꿀 수 없습니다. 백 슬래시에 대해 이야기 할 때 백 슬래시를 사용하는 유일한 플랫폼은 Windows (및 일부 다른 참신한 플랫폼)입니다.

Windows 이외의 백 슬래시가 사용되는 경우 UNC 경로가 될 수 있지만 Windows는 다음과 같은 주요 지지자이기도합니다.

\\HOMESVR\Documents\file.txt

그리고 당신이 무엇을 하든지, 당신의 웹 사이트를 광고하지 말고 "내 회사 닷컴 백 슬래시 프로모션"이라고 말하지 마십시오.


그 이유는 약간의 역사 때문입니다. UNIX가 생성되었을 때 또는 내가 UNICS라고 말해야 할 때 디렉토리 구분자로 /를 선택했습니다. 예전에는 저장 매체가 다소 작았으며 루트의 모든 디렉토리는 또 다른 마운트 된 저장 장치였습니다 (/ bin / lib 등).

Microsoft에서 MS-DOS 버전 1.0을 출시 할 때 디렉터리 지원이 없었습니다. 프로그램의 매개 변수에 / 문자를 사용했습니다 (프로그램 / a / b).

Q-DOS의 빠른 리 브랜딩 인 MS-DOS 1.0은 CP / M에서 파생 된 운영 체제로, 드라이브 문자 (A : C : 등)를 상속 받았습니다.

이후 버전에서는 디렉토리 지원을 추가하고 싶었 기 때문에 /가 이미 운영 체제에서 다른 의미를 가지고 있기 때문에 \를 사용하기로 선택했습니다.

현대 운영 체제에는 컴퓨터 역사의 많은 인공물이 있는데, 대부분의 사람들이 깨닫지 못하지만 여전히 작동 방식에 큰 영향을 미칩니다.

그렇다면 올바른 방법은 무엇입니까? Microsoft가 DOS에 디렉토리 지원을 구현하기 전에 UNIX와 유사한 운영 체제가 존재했기 때문에 /라고 말할 수 있습니다.


참고로 .NET에 대해 이야기 System.IO.Path.DirectorySeparatorChar하면서 현재 경로 구분 기호를 가져 오는 데 사용해야 합니다.


파일 시스템 경로 구분 기호에 관한 한, 저는 Windows에서 모든 API가 슬래시를 받아 들일 것이라고 믿습니다. ).

사실, 내가 올바르게 기억하면 MS-DOS조차도 하위 디렉터리 (v2.0)를 지원하기 시작한 이후로 API 수준에서 경로 구분 기호로 '/'를 허용했지만 그 당시 '/'문자는 이미 다음과 같이 설정되었습니다. 명령 줄 옵션의 '스위치'문자이므로 백 슬래시는 DOS (및 이후 Windows)에서 사실상 경로 구분자가되었습니다.

URI는 유사하지만 파일 경로와는 다른 동물이며 URI는 항상 '/'를 사용하여 구성 요소를 구분해야합니다. Windows 응용 프로그램 및 API는 아마도 사람들이 해당 시스템에서 백 슬래시를 구분자로 사용하는 데 익숙하고 URI를 로컬 파일을 나타내는 데 사용할 수 있기 때문에 URI에서 구분자로 '\'를 허용 할 것입니다.


오늘의 쓸모없는 퀴즈-MS-DOS의 일부 초기 버전에는 명령 줄 옵션 스위치 문자 (일반적으로 '/'에서 '-'로)를 변경하는 API가있어서 명령이 더 유닉스와 비슷하게 보이고 명령이 명령 줄에서 경로 구분 기호로 '/'를 허용합니다. API는 성공하지 못했으며 (애플리케이션에서 보편적으로 지원되지 않았기 때문에) 이후 버전에서 제거되었습니다.

흠 ... 두 번째 읽기에서이 전체 답변은 거의 쓸모없는 퀴즈입니다.


Windows는 \파일 시스템 구분 기호로 백 슬래시 ( )를 사용합니다 . 그 밖의 모든 경우에는 슬래시 ( /) 가 사용됩니다 . Uri그 방법이 때문에 유형 슬래시를 사용하여 균일 한 리소스 식별자가 정의된다.


웹은 슬래시 (/)로 경로에서 디렉토리를 구분하는 UNIX 방식을 기반으로합니다. Windows는 백 슬래시 (\)로 디렉토리를 구분합니다.

올바른 방법은 용도에 따라 다릅니다. Windows 시스템의 로컬 파일 경로에는 백 슬래시를 사용하십시오. UNIX 기반 컴퓨터 (Mac, Linux 포함)에있는 웹 리소스 또는 파일에 대한 경로에는 슬래시를 사용합니다.

.NET의 URI가 슬래시를 사용하는 이유는 웹 브라우저에서 사용하기위한 형식이기 때문입니다.

서버는 웹 리소스를 하드 드라이브의 파일에 연결하는 데 필요한 모든 작업을 수행합니다.


Windows는 경로에 대해 둘 다 허용합니다.

Windows 탐색기를 열고 입력 시도 C:/Temp/Foo, c:\Temp\Foo제대로 열립니다.


\ 백 슬래시는 항상 탈출에주의해야하므로 위험합니다. 많은 프로그래밍 언어에는 이스케이프를 위해 백 슬래시를 사용하는 printf가 있습니다.

/ Frontslash is mostly harmless.

: colon was (and to some degree still is) used by Apple.

ReferenceURL : https://stackoverflow.com/questions/1589930/so-what-is-the-right-direction-of-the-paths-slash-or-under-windows

반응형