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命令将第二个例子识别为第三个表格
答
符号链接是一种文件,它不是一个目录,readlink( )系统调用读取符号链接文件中的字符,这就是“ - > one”来自ls显示的地方
为了让你的例子工作ls -l two应该显示“../one “因为这两个符号链接在一个目录中,所以为了正确引用这个目录,必须要去“找”一个。
我想知道如何创建一个符号链接从一个目录到另一个目录,其中如果我把一个文件放在一个*我将能够在*两个*中管理它。假设* 1 *和* 2 *在**符号链接之前被创建** – Kani 2012-02-14 13:05:57
当“two”是目录时,它也不能是符号链接。所以你需要删除目录“two”,然后创建符号链接“two”。没有办法将目录“变形”为符号链接 如果您希望“所有东西都在一个中,也应该是两个,但也可以包含其他东西”,这对于符号链接来说是不可能的。有一些文件系统可以这样做,但这些文件系统非常阴暗。 – Claude 2012-02-14 13:25:45
只是为了澄清:我不知道任何文件系统,你可以做一个既是目录又是符号链接的东西(我认为根本不可能);您可以将某些文件系统安装在“两个”上,但这会导致显示“one”和“two”两个文件。 – Claude 2012-02-14 13:28:58