심볼릭 링크를 사용하여 상위 디렉토리 (../) 변경


32

심볼릭 링크가 있습니다

~/link -> ~/a/really/long/path

내가 할 때

cd ~/link
cd ..    

그것은 나를 데려 간다

~

하지만 가고 싶다

~/a/really/long

이것을 할 수있는 방법이 있습니까?

bash를 사용하고 있습니다.


1
당신은 의미 cd ~/a/really/long/path다음 cd ..당신은에두고 ~순간에? 나는 그것을 재현 할 수 없습니다.
Mikel

1
@Mikel : 아니요, 먼저 심볼릭 링크를 ~/a/really/long/path만든 다음에 cd를 입력하십시오 ... ~로 돌아와야합니다 (시작한 곳이라고 가정).
Xodarap

편집 내용이 정확합니까? 나는 전에 질문을 이해할 수 없었다.
Mikel

답변:


38

Bash (ksh, zsh 및 ash)는 디렉토리 변경 사항을 추적하므로 심볼릭 링크 인 경우에도 cd /foo/bar && cd ..항상 사용자를 안내 합니다. 패스 하는 옵션 추적 된 변경 사항을 무시하고 "실제"디렉토리 구조를 따라하기를 :/foobar-Pcd

cd -P ..

참조 help cd또는 man builtinsbash는 내장에 대한 문서화 cd. 디렉토리 추적 기능이 마음에 들지 않으면 set -Pbash ( set -o no_chase_linkzsh)에서 사용하지 않도록 설정할 수 있습니다 .


1
내가 질문을 읽은 방법으로, 영업 이익은있다 -P또는 -o physical이미 설정?
Mikel

+1이지만 매뉴얼 페이지에 대한 링크를 제안하십시오.
Faheem Mitha

@Mikel : 아니요. 문제는 그가 물리적 디렉토리 구조가 아니라 기호 링크를 따르고 있다는 것입니다.
Faheem Mitha

죄송합니다. 실제로 게시물을 수정하려고하지 않았습니다. 제안 된 수정 사항이 제출되었습니다.
Faheem Mitha

4

readlink를 사용하여이 디렉토리에 대한 실제 경로를 찾은 다음 한 디렉토리 이상으로 이동할 수 있습니다.

cd $(readlink -f .)/..

3

사용할 수있는 한 가지 방법은 심볼릭 링크 대신 별칭을 사용하여 ~ / a / really / long / path로 이동하는 것입니다. 그게 내가 사용하는 방법입니다. 왜냐하면 cd symlink 대신 간단한 1 / 2 / et cetera letter 명령을 입력 할 수 있기 때문입니다.

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