답변:
ln -s ../some/other/file linkname
제공 한 경로는 파일과 함께 저장됩니다. 파일에 액세스하면 저장된 경로가 조회되고 파일을 기준으로 확장됩니다. 링크를 만들 때 어떤 디렉토리에 있었는지 알 수 없습니다.
ln -s ../some/other/file /some/dir/linkname
ln -s ./file linkname
있기 때문에 .
현재 디렉토리를 의미합니다.
ln -s somedir/original-dir link-name
작동하지 않습니다. link-name
잘못된 링크가 포함 된 이름의 디렉토리를 작성합니다 . 작동하는 명령은 다음과 같습니다ln -sr somedir/original-dir link-name
GNU coreutils의 ln (> = 8.16) 최신 버전은 --relative
(또는 -r
) 옵션을 지원합니다. 즉 ln -s
, 작업 디렉토리와 관련하여 2 개의 절대 또는 상대 경로를 호출 할 수 있으며 올바른 상대 경로를 알아낼 것입니다 심볼릭 링크에 작성되었습니다.
-r
옵션은 크로스 컴파일 할 때 빌드 호스트에서는 절대 경로가 필요하지만 대상에서는 상대 경로가 필요할 때 유용합니다.
ln -r -s targetfile myalias
문제 해결에 도움을 줄 수 있습니다
이해해야 할 것은 기본적으로 심볼릭 링크는 파일을 포함하는 디렉토리 항목보다 텍스트 파일과 유사하다는 것입니다. 그래서 당신이
echo ../poo >/file/name
그때는
ln -s ../poo /file/name
시스템은 /file/../poo
존재 하는지 전혀 신경 쓰지 않으며 심볼릭 링크에 넣는 텍스트 일뿐입니다. 무언가가 심볼릭 링크 를 열려고 할 때 시스템이이를 해결하려고 할 때입니다.
파일 이름이 완성 된 쉘을 사용하는 경우이 기능을 사용하면 완전히 다른 디렉토리에서 심볼릭 링크의 대상으로 사용하더라도 현재 작업 디렉토리에 상대적인 파일 이름을 완성 할 수 있으므로 혼동 될 수 있습니다.
<
하여 시스템이 메모리를 할당하는 방식을 변경하는 데 사용됩니다. 물론 <
해당 디렉토리에 이름이 지정된 파일은 없으며 특정 플랫폼의 일반 텍스트 파일보다 매력적인 속성을 가진 매우 작은 파일과 같은 것을 만드는 저렴한 방법입니다.
OS X에서 상대적 링크는 까다로웠다.
~/Dropbox/git/dave-bot $ ln -s ../codyhess/bin ~/bin
~/Dropbox/git/dave-bot $ ln -s ../codyhess/bin/ ~/bin
둘 다 작동하지 않았습니다 (뭔가 생성되었지만 디렉토리가 아닙니다). 절대 경로 를 사용하여 원하는 링크를 만들었습니다 .
~/Dropbox/git/dave-bot $ ln -s ~/Dropbox/git/codyhess/bin/ ~/bin
ln -s Dropbox/git/codyhess/bin ~/bin
상대 경로를 사용하여 심볼릭 링크를 만드는 방법을 자세히 설명하고 싶었습니다 (자세한 예제 포함).
주석에 언급 된 Ignacio Vazquez-Abrams와 같이 현재 디렉토리가 아닌 심볼릭 링크가 생성 될 위치를 기준으로 파일 / 폴더 위치를 지정해야합니다.
예
당신은에 있습니다 /usr/share/nginx/html/_src/learn
당신은에 심볼릭 링크 coding
를 만들 것 입니다/usr/share/nginx/html
상대 심볼릭 링크 (이론) 만들기 :
sudo ln -s /path/to/source/file-or-folder/relative/from/symlink /path/to/symlink/relative/to/current/location
실제 상대 심볼릭 링크를 만듭니다.
sudo ln -s ./_src/learn/coding ../../coding
추가 정보 (같은 예)
current path: /usr/share/nginx/html/_src/learn
symlink(to be) relative to current path: ../../coding
symlink location (absolute): /usr/share/nginx/html/coding
folder/file relative to symlink location: ./_src/learn/coding
folder/file absolute path: /usr/share/nginx/html/_src/learn/coding