更准确地说:我知道这些-s选项代表什么——我每天都在使用它。但是我在教程中看到有人将其网站的文档根目录从/var/www/html/project移到~/www/project以提高安全性(他后来更改了权限等,但在这种情况下并不重要)。然后他创建了以下符号链接:
ln -sT ~/www/project /var/www/html/project
Run Code Online (Sandbox Code Playgroud)
我想知道这-T是做什么用的,因为通常我会使用-s. 从手册页中,我获得了有关该-T选项的以下稀疏信息:
-T, --no-target-directory
treat LINK_NAME as a normal file always
Run Code Online (Sandbox Code Playgroud)
我真的不明白这是为了什么。创建符号链接时为什么要-T结合使用-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)
Run Code Online (Sandbox Code Playgroud)
如果没有-T,如果LINK_NAME已经存在并且是一个目录(或经过验证以最终解析为目录的符号链接),则第一种和第三种形式是不明确的,并ln选择第三种形式:它在目录内创建链接。因此
ln -s ~/www/project /var/www/html/project
Run Code Online (Sandbox Code Playgroud)
如果后者已经存在,将创建一个名为projectinside的链接/var/www/html/project。
-T消除歧义,并强制ln仅考虑第一种形式:如果链接不存在,则以命名链接的形式创建;如果已经有一个文件或目录与给定的LINK_NAME,ln因错误而失败(除非-f指定太)。
所以
ln -sT ~/www/project /var/www/html/project
Run Code Online (Sandbox Code Playgroud)
保证您最终得到/var/www/html/project指向的链接~/www/project或错误消息(和非零退出代码)。
| 归档时间: |
|
| 查看次数: |
1282 次 |
| 最近记录: |