현재 디렉토리에 대한 절대 심볼릭 링크 만들기


12

나는 지금 매우 긴 경로를 가진 디렉토리에 있습니다. 나중에 더 빨리 방문하려면 링크를 만들고 싶습니다.

나는 시도했다

ln -s . ~/mylink

~/mylink실제로로 연결됩니다 ~. 그래서 ~절대 경로 이름으로 확장 한 다음에 줄 수 ln있습니까?

답변:


19

심볼릭 링크는 실제로 사용자가 제공 한 경로를 문자열 ¹로 저장합니다. 즉, 링크 ~/mylink에 " ."(한 문자) 가 포함되어 있습니다 . 링크에 액세스하면 해당 경로는 링크를 만들 때 있었던 위치가 아니라 링크가있는 위치를 기준으로 해석됩니다.

대신 링크에 원하는 실제 경로를 저장할 수 있습니다.

ln -s "$(pwd)" ~/mylink

명령 대체 를 사용하여 pwd(작업 디렉토리 이름) 의 출력을 명령 행에 넣습니다. ln전체 경로를 확인하여 심볼릭 링크에 저장하면 올바른 위치를 가리 킵니다.

¹ 더 많거나 적습니다.


2
"$PWD"POSIX 쉘 및 ~0에서 참조하십시오 zsh.
Stéphane Chazelas

7

다음을 사용해야합니다.

ln -s "$(cd . && pwd)" ~/mylink

또는:

ln -s "$(pwd -P)" ~/mylink

현재 작업 디렉토리에 대한 올바른 결과를 얻습니다. 이 질문 에서와 같이 작업하면서 변경할 수 있습니다 .


1
첫 번째 것은 모든 쉘에서 반드시 도움이되는 것은 아닙니다 ( 이 답변 참조 ). OP는 아마도 $PWD( $(pwd -P)현재 디렉토리에 대한 정식 경로) 보다는 ( 그가 거기에 도착했던 경로)를 사용하기를 원할 것 입니다. 경우 $PWD현재 디렉토리에 더 이상 점, 다음에는 그가 말없는 것 $(pwd -P)중 하나 다음 분의 뜻을.
Stéphane Chazelas


@ StéphaneChazelas : "$PWD"현재 direcory가 이동하면 여전히 오래된 값을 볼 수 있습니다 . 쉘에 의해 또는 초기화 PWD될 때만 설정됩니다 cd.
cuonglm

그러나 말인지하면 영업 이익은 여러 쉘 (ksh93의, 화산재, YASH)의 현재 작업 디렉토리에 약간의 절대 경로보다 오래된 $의 PWD를 원하는 것 같이하고 있다는 점이다, 같은 설명 호출 cd메이크업을 보장 할 수 없습니다 $ PWD 또는 pwd의 출력은 현재 디렉토리의 경로입니다. 당신은 일어날 가능성이없는 것을 막으려 고 노력하고 있지만, 첫 번째 해결책에서는 반드시 효과적 일 필요는 없으며, 두 번째에서는 그것이 행동을 변화시키고 있습니다.
Stéphane Chazelas

1
누군가가 당신을 한 mv 후에도ln 같은 상황에 처하게됩니다. 반면에, 그가했다면 cd /long/logical/path/to/some/directory, /vg0/lv1/user2/app4링크가 /long/logical/path/to/some/directory다른 곳을 가리킬 때 잘못된 위치를 가리 키므로 링크가 (정규 경로) 를 가리 키기를 원하지 않습니다 .
Stéphane Chazelas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.