![심볼릭 링크 값을 바꿀 수 있는 방법이 있나요?](https://rvso.com/image/50577/%EC%8B%AC%EB%B3%BC%EB%A6%AD%20%EB%A7%81%ED%81%AC%20%EA%B0%92%EC%9D%84%20%EB%B0%94%EA%BF%80%20%EC%88%98%20%EC%9E%88%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%B4%20%EC%9E%88%EB%82%98%EC%9A%94%3F%20.png)
심볼릭 링크의 값을 바꾸는 방법이 있습니까?
예를 들어 다음과 같이 심볼릭 링크를 변경하고 싶습니다.
first -> /home/username/foo/very/long/directories/that/I/do/not/want/to/type/again
이에:
second -> /home/username/bar/very/long/directories/that/I/do/not/want/to/type/again
foo
으로 만 변경하고 싶습니다 bar
.
물론 링크를 다시 생성할 수도 있지만, 링크의 값을 대체할 수 있다면 더 쉬워진다.
답변1
-f
, --force
옵션을 사용하면 ln
새 심볼릭 링크를 만들기 전에 기존 심볼릭 링크를 제거할 수 있습니다. 대상이 디렉터리인 경우 심볼릭 링크를 일반 파일로 처리하도록 지시하는 -n
, 옵션을 추가해야 합니다.--no-dereference
ln
ln -sfn target existing_link
그러나 이 작업은 을 호출하기 전의 이전 심볼릭 링크 와 ln
마찬가지로 원자적이지 않으므로 기술적으로 링크 값을 변경하는 것으로 간주되지 않습니다. 이러한 구별에 관심이 있다면 대답은 '아니요'입니다. 기존 심볼릭 링크의 값을 변경할 수 없습니다.unlink()
symlink()
즉, 다음과 같은 작업을 수행하여 이전 링크 값의 일부를 변경하여 새 심볼릭 링크를 만들 수 있습니다.
ln -sfn "$(readlink existing_link | sed s/foo/bar/)" "existing_symlink"
답변2
second -> /home/username/bar/very/long/directories/that/I/do/not/want/to/type/again
X 내부에서 실행 중인 경우:
stat second
링크와 기타 정보를 인쇄합니다. 를 입력한 ln -s
다음 /home/username/bar/very/long/directories/that/I/do/not/want/to/type/again
마우스 커서로 강조 표시합니다. 가운데 버튼(또는 두 개만 있는 경우 두 버튼 모두)을 누릅니다. 다시 입력하고 싶지 않은 긴 줄이 텍스트 커서에 붙여넣어집니다.
X를 사용하지 않는 경우 를 설치하여 동일한 작업을 수행할 수 있습니다 gpm
.