링크로 링크 된 디렉토리로 이동


12

cd링크 일 때 현재 경로는 링크가 연결된 디렉토리의 경로가 아니라 링크의 경로로 시작됩니다. 예 :

~/dirlinks/maths$ ls -l logic
lrwxrwxrwx 1 tim tim 71 Jul 27 10:24 logic -> /windows-d/academic discipline/study objects/areas/formal systems/logic

~/dirlinks/maths$ cd logic
~/dirlinks/maths/logic$ pwd
/home/tim/dirlinks/maths/logic

~/dirlinks/maths/logic$ cd ..
~/dirlinks/maths$

현재 경로를 연결된 디렉토리의 경로로 변경하여 연결된 디렉토리의 부모 디렉토리로 작업 할 수 있도록하고 싶습니다. ls링크 된 디렉토리를 찾아서 링크하는 링크 외에도 cd그것을 달성하는 더 간단한 방법은 무엇입니까? 예를 들어, cd링크 후 현재 경로를 연결된 디렉토리의 경로로 어떻게 변경합니까?

답변:


22

POSIX 쉘에서는 cd 내장 -P옵션을 사용할 수 있습니다 .

cd -P <link>

bash에서 man bash:

-P 옵션은 기호 링크를 따르는 대신 실제 디렉토리 구조를 사용하도록 지시합니다 (set 내장 명령에 대한 -P 옵션 참조).


7
cd -P .원본 다음에이 작업을 수행 할 수 있습니다 cd.
ctrl-alt-delor

5

readlink링크 지점을 결정하고이 출력을의 대상으로 제공 하는 데 사용할 수 있습니다 cd.

cd "$(readlink <link>)"

심볼릭 링크를 가리키는 추가 심볼릭 링크의 경우 readlink예를 들어 표준 파일 대상에 대한 심볼릭 링크를 따르는 옵션 중 하나를 지정하지 않으면 대상을 제공합니다 readlink -f <link>.

readlink- 기호 링크 또는 표준 파일 이름의 인쇄 값

-f, --canonicalize
주어진 이름의 모든 구성 요소에있는 모든 심볼릭 링크를 재귀 적으로 따라 정식화합니다. 마지막 구성 요소를 제외한 모든 구성 요소가 존재해야합니다.


주어진 이름의 모든 구성 요소에있는 모든 심볼릭 링크를 재귀 적으로 따라 가면 기존 구성 요소가 정규화됩니다.

-m, --canonicalize-missing
구성 요소 존재에 대한 요구 사항없이 주어진 이름의 모든 구성 요소에있는 모든 심볼릭 링크를 반복적으로 따라 가면서 정규화합니다.


5

Korn과 같은 쉘은 현재 디렉토리의 경로에서 기호 링크를 추적합니다 (논리적 현재 디렉토리 추적이라고 함). 모든 기호 링크를 확장하려면 옵션 -Pcd내장 (실제 현재 디렉토리 추적 용)으로 전달하십시오.

cd -P logic

심볼릭 링크를 통해 액세스 한 디렉토리에 있고 추적 된 현재 디렉토리를 심볼릭 링크가 확장 된 경로로 전환하려면 다음을 실행하십시오.

cd -P .

심볼릭 링크가 확장 된 현재 디렉토리의 경로를 인쇄하려면을 실행하십시오 pwd -P. bash에서 논리적 추적을 끄려면 set -P; zsh에서 set -w또는을 실행하십시오 setopt chase_links.

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