ln: 다른 심볼릭 링크를 사용하여 심볼릭 링크 만들기

ln: 다른 심볼릭 링크를 사용하여 심볼릭 링크 만들기

파일과 디렉터리가 있다고 가정해 보겠습니다.

$ ls -l
total 4
drwxrwxr-x. 2 user user 4096 Oct  8 09:53 dir
-rw-rw-r--. 1 user user    0 Oct  8 09:53 file

나는 file라는 심볼릭 링크 symlink1dir다음이라는 심볼릭 링크를 만들었습니다 dirslink1.

$ ls -l
drwxrwxr-x. 2 user user 4096 Oct  8 09:53 dir
lrwxrwxrwx. 1 user user    3 Oct  8 10:03 dirslink1 -> dir
-rw-rw-r--. 5 user user    0 Oct  8 09:53 file
lrwxrwxrwx. 1 user user    4 Oct  8 09:53 symlink1 -> file

이제 다음 을 symlink1사용하여 심볼릭 링크를 만듭니다 ln -s.ln -sL

$ ln -s symlink1 symlink2
$ ln -sL symlink1 symlink3
$ ln -s dirslink1 dirslink2
$ ln -sL dirslink1 dirslink3

이제 내가 이해한 바에 따르면 는 symlink3을 가리키고 filedirslink3가리켜야 합니다 dir. 하지만 확인해 보니 symlink[23]및 중 어느 것도 dirslink[23]원본 파일이나 디렉터리를 가리키지 않습니다.

$ ls -l
drwxrwxr-x. 2 user user 4096 Oct  8 09:53 dir
lrwxrwxrwx. 1 user user    3 Oct  8 10:03 dirslink1 -> dir
lrwxrwxrwx. 1 user user    9 Oct  8 10:03 dirslink2 -> dirslink1
lrwxrwxrwx. 1 user user    9 Oct  8 10:03 dirslink3 -> dirslink1
-rw-rw-r--. 5 user user    0 Oct  8 09:53 file
lrwxrwxrwx. 1 user user    4 Oct  8 09:53 symlink1 -> file
lrwxrwxrwx. 1 user user    8 Oct  8 09:54 symlink2 -> symlink1
lrwxrwxrwx. 1 user user    8 Oct  8 09:54 symlink3 -> symlink1

문제는 다른 심볼릭 링크를 사용하여 원본 파일에 대한 심볼릭 링크를 만드는 것이 가능합니까/어떻게 하는 것입니다.

답변1

-L하드 링크에만 적용됩니다.POSIX에 지정됨:

만약에-에스옵션을 지정한 후,-엘그리고-피옵션은 자동으로 무시됩니다.

가지고 있다면 readlink다음과 같이 사용할 수 있습니다.

ln -s -- "$(readlink symlink1)" symlink4

readlink이 옵션을 지원 하는 경우 -f이를 사용하여 대상(대상 경로의 모든 기호 링크를 확인합니다(대상 기호 링크에 다른 기호 링크가 포함된 경우).

답변2

cp -P다음을 사용하여 심볼릭 링크의 복사본을 만들 수 있습니다 .

cp -P symlink2 symlink3

(이는 symlink3디렉토리나 디렉토리 심볼릭 링크가 아직 존재하지 않는다고 가정합니다. 이러한 경우에 대해서는 -TGNU의 옵션을 참조하십시오 cp.)

심볼릭 링크의 대상이 상대적이고 복사본이 원본과 동일한 디렉터리에 없으면 위의 내용으로 인해 링크가 끊어질 수 있습니다.

그리고 zsh,

ln -s -- symlink2(:P) symlink3

symlink3완전히 표준적인(심볼릭 링크 없음) 경로로 심볼릭 링크를 생성합니다 symlink2. 유사 ln -s -- "$(readlink -f symlink2)" symlink3하지만 더 안정적입니다. 경로가 줄 바꿈으로 끝나는 경우에도 여전히 잘 작동하기 때문입니다.

위와 동일한 경고 및 GNU에 대한 해결 방법도 동일합니다 ln.

관련 정보