Command-Line
mv 一個文件而不破壞該文件的符號連結
是否可以在
mv
不破壞該文件的符號連結的情況下創建文件?我對此的最初反應是否定的,我正在製定一個基於腳本的解決方案,以在移動後立即更改連結,但我想知道其他人是如何解決這個問題的。符號連結的路徑和名稱是預先知道的,所以理論上我需要做的就是:
- 獲取連結的目標
- mv 目標
- 重新創建指向新目標的連結
- 創建一個指向新目標的新連結(不同於我現在仍想保留的原始連結)
日後:
- 刪除舊連結
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