Symlink
如何強制創建符號連結?
我有一個特定的目錄,其中包含按日期組織(命名)的其他目錄。為了便於參考,我有一個符號連結,稱為
current
指向最新的符號連結。在創建新日期目錄的腳本中,我希望創建或修復
current
符號連結以指向創建後的最新目錄。我認為適當的命令只是,例如,
ln -fs 2017-03-01 current
如果
current
符號連結尚不存在,則此方法有效。但是,如果
current
符號連結已經創建(並且指向,讓我們說,在 directory2017-02-28
),這不起作用:不是刪除符號連結
current
並創建一個current
指向的新符號連結2017-03-01
,結果將是一個損壞的符號連結,稱為2017-03-01
指向**自身,*位於目錄內(*2017-02-28
符號連結current
指向並仍然指向的位置)。這讓我很困惑,所以我閱讀了
ln
. 原來這是預期的行為:概要
ln [-fs] [-L|-P] source_file target_file ln [-fs] [-L|-P] source_file... target_dir
描述
…
當最終操作數命名現有目錄時,應採用第二種概要形式。
那麼,似乎沒有辦法將目前指向目錄的符號連結重新指向**新目標,其中新目標的名稱與符號連結的名稱不同。所以
ln -fs
不像我想像的那樣工作。我必須
rm current
,還是我忽略了另一種方法?
在 GNU 中
ln
,有ln -n
,這將允許重新指向一個符號連結:$ mkdir dir1 dir2 $ ln -s dir1 sym # dir1/ # dir2/ # sym -> dir1/ $ ln -nsf dir2 sym # dir1/ # dir2/ # sym -> dir2/
BSD coreutils 使用該標誌
-h
的方式與使用該標誌的方式相同-n
,但二進製文件可能-n
僅支持與 GNU 兼容。