mv 파일에 대한 심볼릭 링크를 끊지 않고 파일을 엽니다.

mv 파일에 대한 심볼릭 링크를 끊지 않고 파일을 엽니다.

mv파일에 대한 심볼릭 링크를 끊지 않고 파일을 생성 할 수 있습니까 ? 이에 대한 나의 초기 반응은 '아니요'입니다. 이동 후 즉시 링크를 변경하기 위한 스크립트 기반 솔루션을 개발 중이지만 다른 사람들은 이 문제를 어떻게 해결했는지 알고 싶습니다. 심볼릭 링크의 경로와 이름은 미리 알려져 있으므로 이론적으로 해야 할 일은 다음과 같습니다.

  1. 링크의 대상을 가져옵니다
  2. MV 목표
  3. 새 대상에 대한 링크를 다시 만듭니다.
  4. 새 대상을 가리키는 새 링크를 만듭니다(지금은 유지하고 싶은 원래 링크와는 다름).

나중에:

  1. 오래된 링크 삭제

1-4는 bash 스크립트로 캡슐화되지만 누군가가 더 우아한 방법을 가지고 있거나 내가 모르는 내장 또는 명령을 알고 있는지 궁금합니다.

답변1

당신은 올바른 길을 가고 있습니다. 당신이 설명하는 순서보다 더 쉬운 방법은 없다고 생각합니다.

3단계와 4단계는 약간 혼란스럽습니다. 기존 링크를 재배치하려는 경우 ln -f동일한 이름으로 기존 파일을 덮어쓸 수 있습니다. 새 대상 이름을 반영하여 링크 이름도 변경하려면 순서가 올바른 것입니다.

답변2

귀하의 상황에 맞게:

# change target of a symbolic link
# -------------
# ln -s, --symbolic    make symbolic links instead of hard links
# ln -f, --force       remove existing destination files
#
# Setup: make junk.link to  file junk
  echo hello > ~/junk
  ln -s ~/junk ~/junk.link;  cat ~/junk.link
#
# move file and point the link to it.
  org="$(readlink ~/junk.link)"
  new="$org".moved
  mv "$org" "$new"
  ln -s -f "$new" "$new".link  # '-s' for a soft link

관련 정보