첫 번째 문제:
당신을 인용 :
작성 및 삭제가 정상적으로 작동합니다. 그러나 업데이트가 작동하지 않습니다. 이 명령을 수행 한 후 symlink는 유효하지 않습니다.
주어진 디렉토리 구조의 문제점 :
~ / scripts / test / ~ / scripts / test / remote_loc / ~ / scripts / test / remote_loc / site1 / ~ / scripts / test / remote_loc / site1 / stuff1.txt ~ / scripts / test / remote_loc / site2 / ~ / scripts /test/remote_loc/site2/stuff2.txt ~ / scripts / test / remote_loc / site2 / ~ / scripts / test / remote_loc / site3 / stuff3.txt
그리고 명령을 사용하여 :
ln -s /remote_loc/site1 test_link
/ remote_loc / site1의 / 또는 루트에 존재하지 않는 파일을 가리키는 $ PWD 또는 현재 작업 디렉토리에 기호 링크를 작성한다는 것입니다.
PWD가 ~ / scripts /에 있다면 다음을 사용해야합니다.
ln -s remote_loc/site1 test_link
그렇지 않으면 다음과 같은 전체 절대 경로를 사용할 수 있습니다.
ln -s /home/yourusername/remote_loc/site1 test_link
두 번째 문제 :
당신을 인용 :
여기저기서 심볼릭 링크를 업데이트 / 재정의 할 수 없다는 것을 읽었습니다. 인터넷에는 모순되는 정보가 있습니다. 누구가 옳습니까? 심볼릭 링크를 업데이트 / 재정의 할 수있는 경우 어떻게해야합니까?
"누가 옳은가"라는 질문에 대답하기 위해 정확히 무엇을 읽었는지 또는 어떻게 이해했는지 잘 모르겠습니다. 그러나 다음은 정리하는 데 도움이됩니다.
- 무엇을 업데이트 할 수 있습니까?
- 적절한 스위치를 사용하지 않고 업데이트 할 수없는 것.
디렉토리가 아닌 대상으로 기호 링크 업데이트
ln -sf :
-f 또는 --force는 기존 대상 파일을 제거합니다. 이는 링크의 대상 또는 대상을 업데이트하는 데 사용됩니다.
예:
ln -sf /tmp/test /tmp/test.link; ls -go /tmp |grep test
-rw-r--r-- 1 0 Jun 8 17:19 test
lrwxrwxrwx 1 9 Jun 8 17:27 test.link -> /tmp/test
그러나 보시다시피 절대 경로가 ln
인수 에 있으면 절대 경로를 제공합니다 . 현재 작업 디렉토리가 링크의 상위 디렉토리와 다른 경우 전체 경로를 제공해야합니다.
상대 경로 :
ln -sfr :
-r 또는 --relative는 링크 위치에 상대적인 심볼릭 링크를 만듭니다.
예:
ln -sfr /tmp/test /tmp/test.link ; ls -go /tmp| grep test
-rw-r--r-- 1 0 Jun 8 17:19 test
lrwxrwxrwx 1 4 Jun 8 17:27 test.link -> test
그러나 대상이 디렉토리 인 경우 디렉토리에 대한 링크를 업데이트 할 수 없습니다.
예:
ln -sf /tmp/testdir /tmp/testdir.link ; ls -go /tmp |grep testdir
drwxr-xr-x 2 4096 Jun 8 17:48 testdir
lrwxrwxrwx 1 7 Jun 8 17:47 testdir.link -> testdir
보다시피 ln
, -r 옵션없이 위의 인수에 주어진 절대 경로 이름을 사용하더라도 심볼릭 링크는 여전히 링크에 상대적입니다.
디렉토리에 대한 링크 업데이트 :
ln -sfrn :
-n 또는 --no-dereference는 LINK_NAME이 디렉토리에 대한 심볼릭 링크 인 경우 일반 파일로 취급합니다.
예:
ln -sfn /tmp/testdir /tmp/testdir.link; ls -go /tmp| grep testdir
drwxr-xr-x 2 4096 Jun 8 17:48 testdir
lrwxrwxrwx 1 12 Jun 8 17:48 testdir.link -> /tmp/testdir
대조적으로 :
ln -sfnr /tmp/testdir /tmp/testdir.link; ls -go /tmp| grep testdir
drwxr-xr-x 2 4096 Jun 8 17:48 testdir
lrwxrwxrwx 1 7 Jun 8 17:48 testdir.link -> testdir
unlink
대신에 사용 하는 것이 좋습니다rm
. 함께unlink
사용하면 실수로 잘못된 스위치를 사용하여 소스 디렉토리의 모든 파일을 잃을 위험을 감수하지 않습니다.