Ank*_*r S 13 filesystem command-line symbolic-link
我想/在我的主目录中创建一个指向根 ( ) 文件夹的符号链接。但是,如果我尝试这个,我会得到
~$ ln -s /
ln: failed to create symbolic link './': File exists
Run Code Online (Sandbox Code Playgroud)
当然,我可以使用 Nautilus Ctrl+做到这一点D,所以我知道这是可能的。
如何使用终端执行此操作?
Vid*_*uth 17
您缺少链接的名称,它应该是:
cd ~
ln -s / root
Run Code Online (Sandbox Code Playgroud)
然后将在您的主目录中创建一个名为 root 的符号链接。所以正确的用法是:
ln -s <target> <link-name>
Run Code Online (Sandbox Code Playgroud)
您看到的错误消息是,./始终存在并且无法使用此名称创建链接,最好使用带有两个参数的ln命令2以防止错误链接。
来自man ln:
概要
Run Code Online (Sandbox Code Playgroud)(1st form) ln [OPTION]... [-T] TARGET LINK_NAME (2nd form) ln [OPTION]... TARGET (3rd form) ln [OPTION]... TARGET... DIRECTORY (4th form) ln [OPTION]... -t DIRECTORY TARGET...描述
在第一个表单中,创建一个
TARGET名为的链接LINK_NAME。在第二种形式中,TARGET在当前目录中创建一个链接。在第 3 种和第 4 种形式中,TARGET在DIRECTORY. 默认情况下创建硬链接,符号链接为--symbolic. 默认情况下,每个目的地(新链接的名称)不应该已经存在4。创建硬链接时,每个都TARGET必须存在。符号链接可以包含任意文本;如果稍后解析,则相对链接将相对于其父目录进行解释。长选项的强制性参数对于短选项也是强制性的。
最后一个参数 ,<link-name>默认为目标的最后一部分。所以当目标是/path/dir链接名称时,dir如果未指定,将默认为。1如果你比如创建~/etc具有mkdir ~/etc然后运行ln -s /etc中~,因为该名称/目录已存在无法创建链接。3
你可以看到在你的主目录中创建的链接(这里作为例子,当然你可以随意命名它):
$ ls -l ~/root
lrwxrwxrwx 1 videonauth videonauth 1 Dez 14 00:28 root -> /
Run Code Online (Sandbox Code Playgroud)
1 感谢@thomasrutter指出这一点。
2 另见man link和man symlink
3 感谢@steeldriver在评论中提供示例。
4 强调部分使文本指出,因为它与问题相关。