디렉토리에 대한 심볼릭 링크를 사용하는 방법

디렉토리에 대한 심볼릭 링크를 사용하는 방법

심볼릭 링크를 시험해 보는데 몇 가지 문제가 발생합니다. 첫 번째는 심볼릭 링크와 관련된 디렉터리 대신 디렉터리에 대한 심볼릭 링크를 따라간 후 실제 작업 디렉터리를 표시하는 방법입니다( pwd예: 다음을 사용하는 경우). 두 번째는 심볼릭 링크가 아닌 파일 시스템의 실제 디렉터리에 "백업"하는 방법입니다.

답변1

당신이 원하는 것은 입니다 pwd -P.

man pwdCentOS 6 부터 :

   -L, --logical
          use PWD from environment, even if it contains symlinks

   -P, --physical
          avoid all symlinks

또는 BSD pwd매뉴얼 페이지에서 약간 더 유용한 단어를 사용합니다.

 -L      Display the logical current working directory.

 -P      Display the physical current working directory (all symbolic
         links resolved).

"백업"이 무엇을 의미하는지 100% 확신할 수는 없지만 "디렉터리를 현재 디렉터리의 상위 디렉터리로 변경"을 의미한다고 가정하면 다음을 사용할 수 있습니다.

cd "$(dirname "$(pwd -P)")"

cd ..이는 기호 링크를 포함하지 않는 현재 작업 경로 와 동일합니다 .

또는 cd "$(pwd -P)"현재 논리 디렉터리의 실제 경로로 이동하여 cd ..필요에 따라 사용할 수 있습니다.

답변2

man pwd내 우분투 에서 :

쉘에 자체 버전의 pwd가 있을 수 있습니다.

나는 사용한다 bash. 간단한 pwd명령은 심볼릭 링크의 경로를 제공하지만 /bin/pwd실제 경로를 반환합니다. 이 cd명령은 bash 내장 명령이기도 합니다.

즉, 이것은 쉘에 따라 다릅니다.

편집: thrig의 의견(아래 참조)은 내가 이 줄 아래에 쓴 모든 것보다 더 나은 대안인 것 같습니다.

실제 디렉토리에 "백업"하려면 cd "$(/bin/pwd)/.."또는 cd "$(/bin/pwd)"; cd ..두 번째 형식을 사용하여 별칭을 만들 수 있다고 생각합니다 cd.

alias cd='cd "$(/bin/pwd)"; cd'

비슷한 방법으로 bash 내장을 제거할 수 있습니다 pwd:

alias pwd=`/bin/pwd`

관련 정보