링크로 연결된 디렉터리를 입력하세요.

링크로 연결된 디렉터리를 입력하세요.

링크 할 때 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링크를 입력한 후 현재 경로를 링크된 디렉터리의 경로로 어떻게 변경할 수 있나요?

답변1

POSIX 셸을 사용하면 -P다음 옵션을 사용할 수 있습니다.CD내장:

cd -P <link>

와 함께 bash, 다음에서 man bash:

-P 옵션은 기호 링크를 따르는 대신 물리적 디렉토리 구조를 사용한다는 의미입니다(set 내장 명령의 -P 옵션도 참조하세요).

답변2

Korn과 같은 쉘은 현재 디렉토리 경로의 기호 링크를 추적합니다(이를 논리적 현재 디렉토리 추적이라고 합니다). 모든 심볼릭 링크를 확장하려면 내장 함수 -P에 옵션을 전달하세요(물리적 현재 디렉터리 추적용).cd

cd -P logic

심볼릭 링크를 통해 액세스되는 디렉터리에 있고 추적 중인 현재 디렉터리를 심볼릭 링크로 확장된 경로로 전환하려면 다음을 실행하세요.

cd -P .

현재 디렉터리에 대한 경로를 인쇄하고 기호 링크를 확장하려면 를 실행하세요 . bash pwd -P에서 논리적 추적을 끄려면 set -Pzsh에서 ;set -wsetopt chase_links

답변3

이를 사용하여 readlink링크가 가리키는 위치를 결정하고 이 출력을 cd.

cd "$(readlink <link>)"

추가 심볼릭 링크가 심볼릭 링크를 가리키는 경우, readlink정식 파일 대상에 대한 심볼릭 링크를 따르도록 옵션 중 하나를 지정하지 않는 한 대상만 제공됩니다 readlink -f <link>.

링크 읽기- 심볼릭 링크 또는 표준 파일 이름의 값을 인쇄합니다.

-f, --canonicalize
지정된 이름을 가진 모든 구성 요소의 모든 심볼릭 링크를 반복적으로 추적하여 정규화합니다. 마지막 구성 요소를 제외한 모든 구성 요소가 존재해야 합니다.

-e, --canonicalize-existing
지정된 이름을 가진 모든 구성 요소의 모든 심볼릭 링크를 재귀적으로 추적하여 정규화합니다. 모든 구성 요소가 존재해야 합니다.

-m, --canonicalize-missing은
구성 요소가 존재하지 않아도 지정된 이름을 가진 모든 구성 요소의 모든 심볼릭 링크를 반복적으로 추적하여 정규화합니다.

관련 정보