2012-02-14 149 views
0

時看到: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) 

我試圖做第三形式,這就是:從一個目錄到另一個目錄創建符號鏈接

你能給我一個關於我的錯誤的暗示嗎?我認爲是概念性的(和技術性的)

回答

2

在你的第一個例子中,「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

0

符號鏈接是一種文件,它不是一個目錄,readlink( )系統調用讀取符號鏈接文件中的字符,這就是「 - > one」來自ls顯示的地方

爲了讓你的例子工作ls -l two應該顯示「../one 「因爲這兩個符號鏈接在一個目錄中,所以爲了正確引用這個目錄,必須要去「找」一個。