Symlink
Linux中的’ln -sT’是什麼意思?
更準確地說:我知道這些
-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
如果後者已經存在,將創建一個名為
project
inside的連結。/var/www/html/project
-T
消除歧義,並強制ln
只考慮第一種形式:如果連結不存在,則連結創建為命名;如果給定的文件或目錄已經存在LINK_NAME
,則ln
失敗並出現錯誤(除非-f
也指定了)。所以
ln -sT ~/www/project /var/www/html/project
保證您最終得到一個
/var/www/html/project
指向的連結~/www/project
,或者一個錯誤消息(和非零退出程式碼)。