Answers:
您缺少链接的名称,它应该是:
cd ~
ln -s / root
然后,它将在您的主目录中创建一个名为root的符号链接。因此正确的用法是:
ln -s <target> <link-name>
您看到的错误消息是,该错误消息./始终存在,并且无法使用该名称创建链接,最好是同时使用带有两个参数的ln命令2以防止错误的链接。
来自man ln:
概要
(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在当前目录中创建一个链接。在第三和第四的形式,创建链接到每个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 -> /
1 感谢@thomasrutter指出这一点。
2 另请参见man link和man symlink
3 感谢@steeldriver提供了注释示例。
4 强调要指出的地方,因为它与问题有关。
ln -s /etc起作用而不是这样?感谢您的回答,
/可以是root或可以是路径组件,因此程序无法知道现在的含义。/etc只是一条明确的可区分路径。
./会一直存在- ./etc不太可能。mkdir etc先尝试,然后ln -s /etc-您也将获得File exists
/some/dir链接名称时,dir如果未指定,则默认为。/但是,当目标只是时,这将行不通。
File Exists输出,@ steeldriver的解释听起来更合理。但这并不重要,因为这是简陋的案例
cd /吗?还是您想创建一个链接,该链接将不断地反复进行?例如:cd root/home/terrance/root/home/terrance/root/home/terrance/root。。。等