Linux에서 상대 심볼릭 링크를 작성하는 방법 링크가 필요하다 .

나는 그것이 위치한 디렉토리와 관련 하여 해결되는 심볼릭 링크가 필요하다 . 그런 것을 만드는 데 어떤 명령이 사용 되는가?



답변

  1. 링크가있는 디렉토리로 이동하십시오
  2. 명령을 실행 ln -s ../some/other/file linkname

제공 한 경로는 파일과 함께 저장됩니다. 파일에 액세스하면 저장된 경로가 조회되고 파일을 기준으로 확장됩니다. 링크를 만들 때 어떤 디렉토리에 있었는지 알 수 없습니다.


답변

GNU coreutils의 ln (> = 8.16) 최신 버전은 --relative(또는 -r) 옵션을 지원합니다. 즉 ln -s, 작업 디렉토리와 관련하여 2 개의 절대 또는 상대 경로를 호출 할 수 있으며 올바른 상대 경로를 알아낼 것입니다 심볼릭 링크에 작성되었습니다.


답변

이해해야 할 것은 기본적으로 심볼릭 링크는 파일을 포함하는 디렉토리 항목보다 텍스트 파일과 유사하다는 것입니다. 그래서 당신이

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


답변

상대 경로를 사용하여 심볼릭 링크를 만드는 방법을 자세히 설명하고 싶었습니다 (자세한 예제 포함).

주석에 언급 된 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


답변