이 두 디렉토리는 다음 foo1
과 foo2
.
처음에는에 의해 심볼릭 링크를 ln -s foo1 bar
만듭니다. 그 후 심볼릭 링크를 변경하고 싶었습니다.ln -sf foo2 bar
하지만 bar
여전히foo1
있습니다. Symlink foo2
는 내부에 생성됩니다 foo1
.
교체 할 때 무엇을 입력해야합니까 foo1
가 foo2
?
세 가지 환경에서 테스트했습니다.
- 우분투 12.04, ln (GNU coreutils) 8.13
- CentOS 6.4, ln (GNU coreutils) 8.4
- OS X 10.7.5, ln (버전 미포함)
답변
이를 수행하는 올바른 방법은 -n, --no-dereference
옵션 을 사용하는 것입니다.
$ ln -snf foo2 bar
이것은 ln
기존의 심볼릭 링크를 파일로 취급합니다. 그렇지 않으면 역 참조 bar
하기 foo1
로 하강 foo1
하고 원래 사용 TARGET
은 AS 이름을 LINK_NAME
그의 왜 당신이 심볼릭 링크와 끝까지 foo2
내부에 생성되는 foo1
디렉토리. 맨 페이지의 ln
내용은 다음과 같습니다.
-n, --no-dereference LINK_NAME이 (가) 파일에 대한 심볼릭 링크 인 경우 일반 파일로 취급 예배 규칙서
아래는 버전 8.21의 옵션이 있거나 ln
없는 Arch Linux 데스크탑의 셸 출력입니다 . --no-dereference
옵션 없이는 동일한 결과를 얻었 --no-dereference
지만 --no-dereference
예상대로 작동 하는 옵션을 사용했습니다.
$ mkdir foo1 foo2
$ ln -s foo1 bar
$ ls -l bar
lrwxrwxrwx 1 drew users 4 Sep 17 12:51 bar -> foo1
$ ln -sf foo2 bar
$ ls -l bar
lrwxrwxrwx 1 drew users 4 Sep 17 12:51 bar -> foo1
$ ls -l foo1
total 0
lrwxrwxrwx 1 drew users 4 Sep 17 12:51 foo2 -> foo2
$ ln -snf foo2 bar
$ ls -l bar
lrwxrwxrwx 1 drew users 4 Sep 17 12:52 bar -> foo2