请参阅:
mkdir sym
cd sym
mkdir one
//Create the symlink
ln -s one two
ls -l
drwxr-xr-x 2 lola lola 4096 2012-02-14 07:58 one
lrwxrwxrwx 1 lola lola 3 2012-02-14 07:58 two -> one
现在,如果我在一个中放了一些东西,我会在两个中找到它。根据我的理解两个是符号链接的名称,并为其创建一个目录(即两个)[是这个正确?]。
问题:两个是目录?指向一个?
但如果我这样做:
(assuming a clean configuration)
mkdir sym
cd sym
mkdir one
mkdir two <--- notice the creation of two!!
//Create the symlink
ln -s one two
drwxr-xr-x 2 lola lola 4096 2012-02-14 07:59 one
lrwxrwxrwx 1 lola lola 3 2012-02-14 07:59 two
but in two/
lrwxrwxrwx 1 lola lola 3 2012-02-14 07:59 one -> one
如果我在一个中添加了某些内容, 。
但是来自man ln
:
SYNOPSIS
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)
我尝试执行第三种形式,这是:从一个目录到另一个目录创建一个符号链接。
你可以给我一个关于我错误的提示吗?我认为是概念(和技术)答案 0 :(得分:2)
在您的第一个示例中,“two”不是目录。这是一个simlink(基本上是一个小标签,上面写着“如果有人问我,请改为”一个“。
在第二种情况下,您确实使用第三种形式。但是这个表单的作用是“在目录DIRECTORY中创建一个指向TARGET的simlink。因为”two“是一个目录,所以ln命令将第二个例子识别为第三个表单。
答案 1 :(得分:0)
符号链接是一种文件。它不是目录。 readlink()系统调用读取符号链接文件中的字符。这就是ls显示中“ - &gt; one”的来源。
为了让你的例子工作ls -l两个应该显示“../one”,因为两个符号链接在一个目录中,所以为了正确引用目录,必须“向上”找到一个