IT박스

파일 경로에서 슬래시 (/)와 백 슬래시 (\)의 차이점

itboxs 2020. 6. 17. 19:22
반응형

파일 경로에서 슬래시 (/)와 백 슬래시 (\)의 차이점


파일 경로 \/파일 경로 의 차이점에 대해 궁금했습니다 . 나는 때때로 경로가 포함되어 /있고 때로는 경로가 있음을 알았 습니다 \.

누구나 사용할 때 설명 할 수 있다면 그것은 좋은 것 \하고 /.


/유닉스 및 유닉스 계열 시스템에서 경로 구분 기호입니다. 현대 윈도우는 일반적으로 모두 사용할 수 있습니다 \/상호 교환 filepaths을 위해,하지만 마이크로 소프트의 사용을 옹호했다 \수십 년의 경로 구분 기호로.

이는 1970 년대로 거슬러 올라가는 역사적인 이유로 Windows를 10 년 이상 앞질렀습니다. 처음에는 MS-DOS (초기 Windows의 기초)가 디렉토리를 지원하지 않았습니다. 유닉스는 /처음부터 문자를 사용하여 디렉토리를 지원했습니다 . 그러나 디렉토리가 MS-DOS 2.0에 추가되었을 때 Microsoft와 IBM은 이미 명령 스위치/ 문자를 사용하고 있었고 DOS의 경량 구문 분석기 ( QDOS 에서 다운 스트림 하드웨어에서 실행되도록 설계됨)로 인해 디렉토리를 찾을 수 없었습니다. 기존 응용 프로그램과의 호환성을 유지하면서 캐릭터 를 사용할 수있는 방법 입니다./

따라서 파일 경로를 다음과 같은 명령에 인수로 전달할 때 "스위치 누락"또는 "잘못된 스위치"에 대한 오류를 피하려면 다음을 수행하십시오.

cd/                        <---- no switch specified
dir folder1/folder2        <---- /folder2 is not a switch for dir

\대신 문자를 사용 하기로 결정 했으므로 다음과 같은 명령을 작성할 수 있습니다

cd\
dir folder1\folder2

오류없이.

나중에 Microsoft와 IBM은 OS / 2 라는 DOS와 관련이없는 운영 체제에서 협업했습니다 . OS / 2는 두 구분 기호를 모두 사용할 수 있었으며 아마도 더 많은 유닉스 개발자들을 유치 할 수있었습니다. 마이크로 소프트와 IBM이 1990 년에 헤어 졌을 때 , 마이크로 소프트는 보유하고있는 코드를 취하여 Windows NT를 만들었으며, 모든 최신 버전의 Windows가 기반을두고이 구분 기호 불가지론을 가지고 있습니다.


이전 버전과의 호환성은 그들이 수행했던 모든 주요 OS 전환 (DOS에서 Win16 / DOS, Win16 / Win32, Win32 / WinNT로)에서 Microsoft의 게임 이름 이었으므로,이 특성은 고착 될 것입니다. 한동안 존재합니다.

이런 이유로이 불일치가 존재합니다. 내가 말했듯이 WinAPI는 일반적으로 상호 교환 적으로 사용할 수 있기 때문에 실제로 수행중인 작업에는 영향을 미치지 않습니다. 그러나 타사 응용 프로그램은 디렉토리 이름 사이 /를 예상 할 때 a를 전달하면 중단 될 수 \있습니다. Windows를 사용하는 경우를 사용하십시오 \. 유닉스 또는 URI (유닉스 경로에 기초가 있지만 완전히 다른 이야기)를 사용하는 경우을 사용하십시오 /.


C 번호의 맥락에서 : 이 때문에 그것은 주목해야한다 이고 , 기술적으로는 C # 질문이 더 많은 "휴대용"C # 코드를 작성하려는 경우 그 유닉스 및 Windows (C 번호가 Windows 언어가 주로 경우에도) 모두에서 작품을 Path.DirectorySeparatorChar코드가 해당 시스템에서 선호하는 구분 기호를 사용 Path.Combine()하고 경로를 올바르게 추가 하는 데 사용하도록 필드 를 사용하려고 할 수 있습니다 .


MS-DOS 1.0 은 CP / M의 명령 줄 옵션 (또는 스위치) 문자 규칙 인 '/'를 유지했습니다. 그 당시에는 파일 시스템에 디렉토리 구조가 없었으며 충돌이 없었습니다.

Microsoft가 MS-DOS (및 PC-DOS) 2.0으로 더 유닉스와 유사한 환경을 개발할 때 기존 명령 줄 옵션과 충돌하지 않는 경로 구분 기호를 나타내야했습니다. 내부적으로 시스템은 '/'또는 '\'와 동일하게 작동합니다. 명령 프로세서 (및 많은 응용 프로그램)는 계속 '/'를 스위치 문자로 사용했습니다.

CONFIG.SYS항목은 SWITCHAR=-무시하는 데 사용할 수 /유닉스 호환성을 개선하기 위해 기본. 내장 명령과 표준 유틸리티는 대체 문자를 사용합니다. 그러면 Unix 경로 구분 기호를 파일 및 디렉토리 이름에 명확하게 사용할 수 있습니다. 이 항목은 이후 버전에서 제거되었지만 부팅 후 값을 설정하기 위해 DOS 호출이 문서화되었습니다.

이것은 거의 사용되지 않았으며 대부분의 타사 도구는 변경되지 않았습니다. 혼란이 지속됩니다. 많은 유닉스 도구 포트는 '-'스위치 문자를 유지하지만 일부는 두 규칙을 모두 지원합니다.

후속 PowerShell 명령 프로세서는 엄격한 이스케이프 및 스위치 매개 변수를 구현하며 레거시 도구가 사용되는 경우를 제외하고는 혼란을 피합니다.

질문이나 대답 모두 C #과 관련이 없습니다.


유닉스 기반 시스템 \에서 이스케이프 문자 \는 구문 분석기에게 이것이 공백이 아니라 명령문의 끝이 아님을 알려줍니다. 유닉스 시스템 /에서는 디렉토리 구분자가 있습니다.

Windows \에서는 디렉토리 분리자가 있지만 /파일 또는 디렉토리 이름에 사용할 수 없습니다.


  • RFC 1738에서 표준화 된 URL은 플랫폼에 관계없이 항상 슬래시를 사용합니다.
  • 파일 경로와 URI가 다릅니다. \Windows 파일 경로 /에서 정확하고 URI에서 정확합니다.
  • 백 슬래시가있는 URI를 발견하면 여러 브라우저 (즉, Firefox 및 Opera)가 치명적으로 실패합니다.
  • 현재 경로 구분 기호를 가져 오는 System.IO.Path.DirectorySeparatorChar

이것은 관련 자원이 될 수 있습니다.


주어진 답변 외에도 프로그래밍 언어, 텍스트 편집기 및 어휘 분석을 적용하는 일반 시스템의 \특수 문자 (예 :) 에 널리 사용되는 것은 언급 할 가치 \n \t가 있습니다.

예를 들어 프로그래밍하는 경우 백 슬래시를 다른 것으로 이스케이프 처리 \\해야 할 필요가 있거나 C #과 같은 이스케이프 문자열을 사용해야하는 경우가 종종 불편합니다 @"\test".

물론 앞에서 언급했듯이 웹 URI는 표준에 따라 슬래시를 사용합니다. 두 슬래시는 최신의 가장 일반적인 명령 줄 도구에서 작동합니다..

업데이트 : 약간의 검색 후,이 사이의 전체 이야기를 보인다 /그리고 \그 당시 DOS의 나이와 유닉스 기반의 시스템에서, "컴퓨터의 역사"로 돌아갑니다. HowToGeek이 이야기에 관한 흥미로운 기사를 가지고 있습니다.

간단히 말해서, DOS 1.0은 처음에 디렉토리 지원없이 IBM에 의해 릴리스되었으며 /다른 ( "전환") 명령 기능에 사용되었습니다. 디렉토리가 2.0 버전으로 도입되었을 때 /이미 사용 중이었기 때문에 IBM은 시각적으로 가장 가까운 기호 인을 선택했습니다 \. 반면, 유닉스 /는 디렉토리에 표준으로 사용 되었습니다.

When users started to use many different systems, they started becoming confused, making the OS developers to attempt making the systems work in both cases - this even applies in the part of URLs, as some browsers support the http:\\www.test.com\go format. This had drawbacks though in general, but the whole thing stands today still for backward compartibility causes, with an attempt for support of both slashes on Windows, even though they are not based on DOS anymore.


You shouldn't be using either in C#. You should always use the Path class. This contains a method called Path.Combine that can be used to create paths without specifying the separator yourself.

Example usage:

string fullPath = System.IO.Path.Combine("C:", "Folder1", "Folder2", "file.txt");

\ is used for Windows local file paths and network paths as in:

C:\Windows\Temp\ or \\NetworkSharedDisk\Documents\Archive\

/ is what is required by standard URIs as in:

http://www.stackoverflow.com/

참고URL : https://stackoverflow.com/questions/38428561/difference-between-forward-slash-and-backslash-in-file-path

반응형