ln -s(pwd를 기준으로 한 경로 포함)

ln -s(pwd를 기준으로 한 경로 포함)

여러 개의 심볼릭 링크를 만들려고 하는데 이것이 왜 작동하는지 이해가 안 됩니다.

ln -s /Users/niels/something/foo ~/bin/foo_link

이것

cd /Users/niels/something
ln -s foo ~/bin/foo_link

아니요.

foo_link/Users/niels/bin나는 이것이 foo 보다는 foo에 연결하는 것과 관련이 있다고 생각합니다 ./Users/niels/something

문제는 실제로 입력하지 않고 절대 경로를 가리키는 심볼릭 링크를 어떻게 만들 수 있느냐는 것입니다.

참고로 저는 Mac OS X 10.9와 Zsh를 사용하고 있습니다.

답변1

전체 경로 문자열을 입력하지 않고 절대 경로를 사용하여 현재 디렉터리에 연결하는 가장 쉬운 방법은 다음과 같습니다.

ln -s "$(pwd)/foo" ~/bin/foo_link

target(첫 번째) 인수는 ln -s현재 디렉토리가 아닌 심볼릭 링크의 위치를 ​​기준으로 합니다. 기본적으로 생성된 심볼릭 링크(두 번째 인수)는 단지 저장만 한다는 점을 이해하는 데 도움이 됩니다.텍스트첫 번째 매개변수를 제공합니다.

따라서 다음을 수행하면:

cd some_directory
ln -s foo foo_link

그럼 링크를 옮겨

mv foo_link ../some_other_directory
ls -l ../some_other_directory

너는 보게 될 것이다foo_link 노력하다foo해당 디렉터리가 있는 디렉터리를 가리킵니다 . 이는 상대 경로를 가리키는 기호 링크에도 적용됩니다. 다음을 수행하는 경우:

ln -s ../foo yet_another_link

그런 다음 yet_another_link다른 디렉토리로 이동하여 그것이 가리키는 위치를 확인하면 항상 가리키는 것을 볼 수 있습니다 ../foo. 이는 기호 링크가 다양한 절대 경로에 있을 수 있는 디렉토리 구조의 일부일 수 있기 때문에 예상되는 동작입니다.

귀하의 경우 다음을 입력하여 링크를 만들 때

ln -s foo ~/bin/foo_link

foo_linkfoo해당 위치와 관련된 링크만 유지됩니다. $(pwd)대상 매개변수 이름 앞에 붙이면 현재 작업 디렉터리에 절대 경로가 추가되므로 절대 대상으로 링크가 생성됩니다.

답변2

-r( ) 플래그를 사용하면 --relative이 작업이 수행됩니다.

ln -sr foo ~/bin/foo_link

답변3

타이핑을 저장하려면 다음을 수행하십시오.

ln -s "$PWD"/foo ~/bin/foo_link

답변4

어때요?

 $ cd /Users/niels/something
 $ ln -s ./foo ~/bin/foo_link

관련 정보