심볼릭 링크의 값을 바꾸는 방법이 있습니까? [복사]

심볼릭 링크의 값을 바꾸는 방법이 있습니까? [복사]

심볼릭 링크의 값을 바꾸는 방법이 있습니까?

예를 들어 심볼릭 링크를 다음과 같이 변경하고 싶습니다.

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-dereferenceln

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.

관련 정보