![有沒有辦法替換符號連結的值?](https://rvso.com/image/50577/%E6%9C%89%E6%B2%92%E6%9C%89%E8%BE%A6%E6%B3%95%E6%9B%BF%E6%8F%9B%E7%AC%A6%E8%99%9F%E9%80%A3%E7%B5%90%E7%9A%84%E5%80%BC%EF%BC%9F%20.png)
有沒有辦法替換符號連結的值?
例如,我想從此更改符號連結:
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-dereference
選項來告訴ln
將符號連結視為普通檔案。
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
.