..
(이중점)의 본질을 이해하려고 노력하고 있습니다 . 어떻게 접근하느냐에 따라 다른 타겟을 가리키는 것 같습니다.
예:-
/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/..
. 이는 위의 동작과 모순되는 것 같습니다! ?
답변1
..
는하드 링크디렉토리 항목의 일부로 생성된 상위 디렉토리로 이동합니다.
각 디렉토리에서 질문을 발행 하면 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
위와 동일)은 실제 경로를 사용합니다.