..
(더블 도트) 의 본질을 이해하려고합니다 . 액세스 방법에 따라 다른 대상을 가리키는 것 같습니다.
예:-
/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
에middle
middle
실행시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
위와 같이) 지시 합니다.