"표준 경로"란 무엇입니까?


82

따라서 절대 경로는 전체 경로, 전체 경로를 설명하는 특정 파일 또는 위치에 도달하는 방법이며 OS에 따라 다릅니다 (예 : Windows 및 Linux의 절대 경로는 다름). 상대 경로입니다. 현재 위치에서 설명 된 파일 또는 위치로 경로를 지정합니다. .. (점 2 개) 디렉터리 트리에서 상위 수준을 나타냅니다. 그것은 몇 년 동안 저에게 분명했습니다.

검색 할 때도 정규화 된 파일이있는 것을 보았습니다! 내가 아는 모든 것이 CANONICAL이라는 것은 "규칙에 따라"같은 것을 의미합니다.

누군가가 규범적인 것에 대한 이론의 열에서 나를 깨달을 수 있습니까?


5
"SO"는 "OS"를 의미합니까? 당신은 프랑스 인입니까?
Kerrek SB

"네이 팅 시스템 디부 착취"지원되는 운영 시스템 ... 난 사실 멕시코 해요 (I hehe에 죄송 그것을 철자) 나는 프랑스어 알고 있지만 내가 OS 의미는 XD
Metafaniel

4
Ahh, "Sistema de la operación, ¡ olé!" (그리고 그것은 "운영 체제"입니다.)
Kerrek SB 2012-08-23

5
) Emmm는 ...의 xD 사실 그것은 "하기 Sistema Operativo"해야하며, OLE 그것은 (스페인) 매우 스페인어 그리고 그래 난 = 내가 감사 하하 산만 다시 실패, 그것은 작동을 알고
Metafaniel

@Editor, "canonicalized"라는 실제 단어 가 없다는 데 동의하지만 , 개발자가 항상 단어를 말로 표현 ( "enverb")하지 않는다고 믿는 것도 잘못된 것 입니다. 검색 목적을 위해 아마도 작동했을 것입니다.
Dave Newton

답변:


94

만들기의 요점 무엇이든은 "표준"당신이 두 가지를 비교할 수있다. 예를 들어, 모두 ../../here/bar/x./test/../../bar/x같은 위치로 참조 할 수 있습니다,하지만 당신은 두 경로에 텍스트 비교를 할 수 없습니다. 그러나 그것들을 표준 표현으로 바꾸면 둘 다가되고 ../bar/x실제로 동일한 것을 참조한다는 것을 알 수 있습니다.

즉, 종종 당신이 한 일을 참조하는 여러 가지 방법을 가지고있는 경우이며,이 경우에 당신은 정의 할 수 있습니다 정규 표현 입니다 독특한 당신이 그런 것들의 집합에 핸들을 얻을 수있는합니다.

(더 많은 예제를 찾고 있다면 모든 수학은 모든 종류의 물체에 대한 "정규"구조로 가득 차 있으며 동일한 목적을 염두에두고 있습니다.이 Wikipedia 기사에서 몇 가지 추가 지침을 제공 할 수 있습니다.)


1
Oooh 이제 알겠습니다 ... 간단히 말해서 표준은 고유해야하므로 두 점을 상대적으로 사용하지 않는 전체 경로입니다. 오! 귀하의 답변이 도움이되었습니다.) 감사합니다
Metafaniel 2012-08-23

@Metafaniel : 예, 중요한 부분은 고유성입니다. 나는 당신이 표준 상대 경로와 표준 절대 경로를 모두 가질 수 있다고 생각하지만 그것은 독립적 인 구별입니다.
Kerrek SB

1
그 주석이 될 때까지 모든 것이 좋았고 옳았습니다. xD 알았지 만 ... 표준 상대 경로? 지금까지 이해했듯이 (모두에게 감사드립니다) 표준 경로는 본질적으로 절대적입니다. 표준 상대 경로에 대해 무엇을 알려줄 수 있습니까? = S 감사 =)
Metafaniel 2012-08-23

1
@Metafaniel : 표준 상대 경로는 주어진 고정 작업 디렉토리에 상대적입니다. 상대 가 주어진 디렉토리에, 당신은 고유의 상대 경로를 형성 할 수있다. 그러나 동일한 작업 디렉토리에 대해서만 비교할 수 있습니다. 반대로 표준 절대 경로는 전역 적으로 비교할 수 있습니다.
Kerrek SB

1
디렉토리 또는 파일에 대한 하드 또는 소프트 링크를 승인하면 작동하지 않습니다 ...이 경우 표준 경로를 정의하는 것이 훨씬 더 어렵습니다 (답변 @alfasin 참조).
Jean-Baptiste Yunès

28

표준 경로를 정의하는 좋은 방법은 다음과 같습니다. the shortest absolute path(짧은 문자열 길이 의미).

다음은 절대 경로와 표준 경로의 차이점에 대한 예입니다.

절대 경로 : C:\abc\..\abc\file.txt
표준 경로 :C:\abc\file.txt


1
@KerrekSB에 따르면 경로는 정규 적이기 위해 고유해야합니다. 따라서 귀하의 예제에서 볼 수 있습니다. C : \ abc \ file.txt를 표현하는 다른 방법은 없습니다. 예제 감사합니다 =)
Metafaniel

2
@alfasin : Microsoft는 Windows API 함수 PathCanonicalize 에서 입증 된 것처럼 "Windows에는 표준 경로가 없습니다"라는 귀하의 주장에 동의하지 않는 것 같습니다 . Windows가 일반적으로 경로에 대소 문자 구분을 적용하지 않는 것은 사실이지만 (볼륨에 따라 달라 지지만) Windows는 대소 문자를 구분하지 않고 액세스를 허용하더라도 실제로 경로에있는 각 문자의 대소 문자를 유지합니다. 어쨌든 내 요점은 가능한 가장 짧은 절대 경로가 반드시 표준 적이지는 않다는 것입니다.
Dan Korn

2
@DanKorn 은 canonical의 정의에 대해 논쟁하라고 그들에게 말합니다 . 귀하의 의견 불일치에 관해서는 귀하가 옳을 수도 있지만 여전히 좋은 반례를 보지 못했습니다 .)
Nir Alfasi

2
@alfasin : 사전 정의를 제외하고 Microsoft는 자체 운영 체제와 API에서 자체 용어가 무엇을 의미하는지 정의하게되는 것 같습니다. Windows의 표준에 대해 자신보다 더 높은 권위를 가진 사람은 누구입니까? 그리고 왜 "C : \ PROGRA ~ 1"은 최단 경로가 정의상 표준이라는 당신의 주장에 대한 좋은 반례가 아닌가?
Dan Korn

3
@DanKorn과 Microsoft (그리고 나는 어떻게 그들을 존중)가 정규의 의미가 무엇인지 정의하지 않습니다. 정식은 "고유 한"또는 "고유 한 표현"을 의미합니다. Windows OS는 대소 문자를 구분하지 않기 때문에 정의에 따라 경로의 고유 한 단일 표현이있을 수 없습니다. 절대적 일 수 있지만 정식은 아닙니다. 이 논리가 합리적이지 않다면 동의하지 않으셔도됩니다.하지만이 토론이 무의미 해 지므로 (계속 반복하고 내 말을 설명합니다) 여기서 잘라 내고 동의하지 않는 것에 동의합시다.
Nir Alfasi

6

표준 경로 (또는 절대 경로와의 차이점)는 시스템에 따라 다릅니다.
일반적으로 (전체) 경로에 별칭, 바로 가기 또는 심볼릭 링크가 포함 된 경우 표준 경로는 이러한 모든 것을 참조하는 실제 디렉토리로 확인합니다.
예 : /bin/a심볼 링크 인 경우 절대 경로를 요청하는 곳이면 어디에서나 찾을 수 있습니다. 예를 들어 java.io.File # getAbsolutePath 에서 실제 파일 (즉, 링크의 실제 대상) usr/local/bin/a은 표준 경로로 반환됩니다. 에서 java.io.File에 # getCanonicalPath


나도 이해하기 위해 귀하의 의견이 매우 유용합니다! 나는 지금 심볼 링크에 대해 생각조차하지 않았습니다! 따라서 심볼 링크는 절대적이지만 정식은 아닙니다. 매우 포괄적입니다. 그러나 새로운 의심이 생겼습니다 ... 하드 링크는 어떻습니까? 충분히 절대적이지 않나요? 감사합니다
Metafaniel 2012-08-23

Depends.For 예 java.io.File의 # getCanonicalPath는 하드 링크가 해결되지 않는
Cratylus

1
나는 자바에서 그렇게 많이 개발하지 않았고, 나는 주로 PHP 녀석이다;) 명확히 해주셔서 감사합니다. =)
Metafaniel 2012-08-23

레. 하드 링크 : 표준 형식에 대한 하드 링크를 해결하는 것과 같은 개념은 없습니다. 두 파일이 서로 하드 링크 된 경우 둘 다 디스크의 동일한 데이터를 가리 키므로 더 이상 표준 형식이 없으며 데이터가 실제로 디스크의 동일한 공간을 차지하는 두 개의 동일한 파일 만 있습니다. 디스크의 데이터에 먼저 링크 된 파일은 정식 이름 지정 개념과 관련이 없습니다. 참조 stackoverflow.com/questions/185899/...
코니 돕 스는

2

표준 경로와 관련된 대부분의 문제는 파일이 아닌 dir의 이름을 전달할 때 발생합니다. 파일의 경우 표준 경로이기도 한 절대 경로를 제공하는 경우. 그러나 dir의 경우 마지막 "/"를 생략하는 것을 의미합니다. 예를 들어, "/ var / tmp / foo"는 표준 경로이고 "/ var / tmp / foo /"는 그렇지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.