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

相关内容