UNIX:在创建符号链接目录的目录,而不是

问题描述:

时看到:UNIX:在创建符号链接目录的目录,而不是

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) 

我试图做第三形式,这就是:从一个目录到另一个目录创建符号链接

你能给我一个关于我的错误的暗示吗?我认为是概念性的(和技术性的)

在你的第一个例子中,“two”不是一个目录。这是一个simlink(基本上是一个小标签,上面写着“如果有人问我,请代替”one“代替

在第二种情况下,您确实使用第三种形式。因为“two”是一个目录,所以ln命令将第二个例子识别为第三个表格

+0

我想知道如何创建一个符号链接从一个目录到另一个目录,其中如果我把一个文件放在一个*我将能够在*两个*中管理它。假设* 1 *和* 2 *在**符号链接之前被创建** – Kani 2012-02-14 13:05:57

+0

当“two”是目录时,它也不能是符号链接。所以你需要删除目录“two”,然后创建符号链接“two”。没有办法将目录“变形”为符号链接 如果您希望“所有东西都在一个中,也应该是两个,但也可以包含其他东西”,这对于符号链接来说是不可能的。有一些文件系统可以这样做,但这些文件系统非常阴暗。 – Claude 2012-02-14 13:25:45

+0

只是为了澄清:我不知道任何文件系统,你可以做一个既是目录又是符号链接的东西(我认为根本不可能);您可以将某些文件系统安装在“两个”上,但这会导致显示“one”和“two”两个文件。 – Claude 2012-02-14 13:28:58

符号链接是一种文件,它不是一个目录,readlink( )系统调用读取符号链接文件中的字符,这就是“ - > one”来自ls显示的地方

为了让你的例子工作ls -l two应该显示“../one “因为这两个符号链接在一个目录中,所以为了正确引用这个目录,必须要去“找”一个。