Symlink

Linux中的’ln -sT’是什麼意思?

  • April 30, 2018

更準確地說:我知道這些-s選項代表什麼——我每天都在使用它。但是我在教程中看到有人將他網站的文件根目錄從 移動/var/www/html/project~/www/project以提高安全性(他後來更改了權限等等,但這在這種情況下並不重要)。然後他創建了以下符號連結:

ln -sT ~/www/project /var/www/html/project

我想知道它的用途是什麼-T,因為通常我會使用-s. 從手冊頁中,我得到以下有關該-T選項的稀疏資訊:

-T, --no-target-directory
    treat LINK_NAME as a normal file always

我真的不明白這是為了什麼。創建符號連結時為什麼要-T與 with 結合使用?-s這樣做有什麼好處嗎?

ln的概要如下:

ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
ln [OPTION]... TARGET                  (2nd form)
ln [OPTION]... TARGET... DIRECTORY     (3rd form)
ln [OPTION]... -t DIRECTORY TARGET...  (4th form)

如果沒有-T,如果LINK_NAME已經存在並且是一個目錄(或經過驗證以最終解析為目錄的符號連結),第一種和第三種形式是不明確的,並ln選擇第三種形式:它在目錄*內創建連結。*因此

ln -s ~/www/project /var/www/html/project

如果後者已經存在,將創建一個名為projectinside的連結。/var/www/html/project

-T消除歧義,並強制ln只考慮第一種形式:如果連結不存在,則連結創建為命名;如果給定的文件或目錄已經存在LINK_NAME,則ln失敗並出現錯誤(除非-f也指定了)。

所以

ln -sT ~/www/project /var/www/html/project

保證您最終得到一個/var/www/html/project指向的連結~/www/project,或者一個錯誤消息(和非零退出程式碼)。

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