..(더블 도트) 의 본질을 이해하려고합니다 . 액세스 방법에 따라 다른 대상을 가리키는 것 같습니다.
예:-
/outer/
middle/
inner/
inner --> ./middle/inner/
이제로 /outer/middle/inner/..연결 /outer/middle/되지만 기호 링크를 통해 액세스하면로 /outer/inner/..연결됩니다 /outer/. ..여기에 다른 두 가지가있는 것 같습니다 .
..정확히 무엇입니까 ? 상징적 링크? 하드 링크? 또는 디렉토리에 액세스 할 때 경로에 따라 동적으로 생성됩니까? 또는 상징적 인 링크에 대한 나의 이해가 잘못되었습니다.
편집하다:
다른 관련 관찰
/outer/
middle/
file
inner/
f --> ./../file
inner --> ./middle/inner/
이제 파일을 통해 파일에 액세스하려고 /outer/inner/f하면 작동합니다. 그러나 그 이후 /outer/inner/../file로 파일을 가리켜 서는 안됩니다 . 파일은에 /outer/middle/inner/..있습니다. 이것은 위의 동작과 모순되는 것 같습니다!?
답변
..디렉토리 항목의 일부로 작성된 상위 디렉토리에 대한 하드 링크 입니다.
ls -ail이러한 각 디렉토리에서 발행 하면 다음 항목이 모두 동일한 inode(첫 번째 필드) 하드 링크 수 (세 번째 필드) 임을 알 수 있습니다.
..실행시ls -ail에inner.실행시ls -ail에middlemiddle실행시ls -ail에outer
이제 / outer / middle / inner / ..는 / outer / middle /로 연결되지만 심볼릭 링크를 통해 액세스하면 / outer / inner / ..는 / outer /로 연결됩니다. 두 가지 다른 .. 여기가있는 것 같습니다.
에 하나의 ..항목이 inner있습니다. 현재 작업 디렉토리가 outer인 경우와 동일한 결과 (디렉토리 목록 middle)가 표시됩니다.
ls -al inner/..ls -al middle/inner/..
..기호 링크를 통한 “액세스” 가 다른 동작을 제공해야하는 유일한 상황 은 기호 링크 cd를 inner사용하는 경우 논리 작업 디렉토리 ( pwd -L)가 실제 작업 디렉토리 ( pwd -P) 와 다른 경우입니다 . 이 경우, cd ..후면에 당신을 데려 갈 것이다 outer 없는 다른이 있기 때문에 ..쉘이 추적 유지되기 때문에 항목이 있지만, 논리적 작업 디렉토리를 한 수준 밖으로 터지는 것이 아니라 실제 참조 ..에서 항목을 inner.
예를 들어 bash내장 cd명령의 일부로 제공되는 편의성 입니다. 실제 ..항목으로 변경하도록 요청하여이를 무시할 수 있습니다.
cd -P ..
여기서 물리적 경로를 사용 -P하도록 cd( pwd위와 같이) 지시 합니다.