Symlink
ln 中帶有硬連結和軟連結的路徑
相對路徑如何工作
ln (-s or not)
?例如,如果我輸入ln -s foo bar/banana.txt
這是什麼意思?foo 相對於什麼?因為它似乎與目前路徑無關。如果我刪除-s
或不刪除,它也會有所不同嗎?我已經對其進行了測試,結果對我來說沒有意義,並且手冊頁似乎沒有解釋這一點。誰能解釋一下?
有和沒有是不同的
-s
。在
-s
:ln -s path/to/file some/dir/link
path/to/file
設置為some/dir/link
(或者some/dir/link/file
如果link
是目錄)的符號連結目標。符號連結是一種特殊類型的文件,它/包含/一個路徑(可以是任何非 0 字節的數組,某些系統甚至允許空字元串),它是符號連結的目標。
ln
將其設置為第一個參數。解析連結後(稍後使用連結時),
path/to/file
路徑將相對於link
(硬)連結到的目錄(some/dir
此處some/dir/link
通過其some/dir/link
路徑訪問時)。請注意,在命令執行時(或曾經)
path/to/file
不需要存在。ln
而在:
ln path/to/file some/dir/link
它類似於:
cp path/to/file some/dir/link
path/to/file
相對於正在執行的程序的目前工作目錄ln
。沒有什麼能阻止您創建指向符號連結的多個(硬)連結。例如:
$ mkdir -p a b/c b/a $ ln -s ../a b/L # b/L a symlink to "a" $ ln b/L b/c/L
b/L
並且b/c/L
是同一個文件:相同的 inode 但連結到兩個不同的目錄。它們都是與 target 的符號連結../a
。但是當b/L
解決時,那個指向./a
當b/c/L
,那個指向./b/a
。