심볼릭 링크의 대상 파일이 포함된 디렉터리로 이동하는 명령(또는 별칭)을 어떻게 만들 수 있습니까? 예를 들어 심볼릭 링크가 있는 경우
symFile@ -> /Users/zhermes/some/dir/someFile
나는 달리고 싶고 <command> symFile
그것을 가지고 cd
싶다./Users/zhermes/some/dir/
답변1
다음 함수는 심볼릭 링크가 존재하는지 확인하고 cd
해당 상위 디렉터리에 연결합니다. 물론 일반 파일에서도 작동합니다. readlink
또는 의 오류가 있으면 더 영리할 수 있지만 cd
시작에 불과합니다.
GNU/리눅스:
GNU/Linux에서는 다음을 사용할 수 있습니다 readlink -f
.
cdln() { [[ -f $1 ]] && cd "$(dirname "$(readlink -f "$1")")" || echo "No such file: $1" }
BSD / OS X:
-f
다음은 옵션이 없는 Unix/OS X에서 작동합니다 readlink
. 물론 이는 중첩된 심볼릭 링크를 따르지 않음을 의미합니다.
cdln() { [[ -f $1 ]] && cd "$(dirname "$(readlink "$1")")" || echo "No such file: $1" }
OS X에서는 다음을 coreutils
사용 하여 설치할 수 있습니다.홈브류대신 사용하세요 greadlink -f
.