심볼릭 링크의 값을 바꾸는 방법이 있습니까?
예를 들어 심볼릭 링크를 다음과 같이 변경하고 싶습니다.
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
.