Command-Line

mv 一個文件而不破壞該文件的符號連結

  • January 26, 2019

是否可以在 mv不破壞該文件的符號連結的情況下創建文件?我對此的最初反應是否定的,我正在製定一個基於腳本的解決方案,以在移動後立即更改連結,但我想知道其他人是如何解決這個問題的。符號連結的路徑和名稱是預先知道的,所以理論上我需要做的就是:

  1. 獲取連結的目標
  2. mv 目標
  3. 重新創建指向新目標的連結
  4. 創建一個指向新目標的新連結(不同於我現在仍想保留的原始連結)

日後:

  1. 刪除舊連結

1-4 將被封裝在一個 bash 腳本中,但我想知道是否有人有更優雅的方法,或者知道我不知道的內置或命令。

您走在正確的軌道上,我認為沒有比您描述的順序更簡單的方法了。

第 3 步和第 4 步有點混亂。如果您想重新定位現有連結,您可以使用相同的名稱ln -f來覆蓋現有文件。如果您希望連結的名稱也更改以反映新的目標名稱,那麼您的順序是正確的。

對於您的情況:

# 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

引用自:https://unix.stackexchange.com/questions/19267