cp -s 的目的是什麼?

cp -s 的目的是什麼?

正如這個問題的答案所示, 使用 cp -l 或 ln 進行硬連結有差別嗎?

為 cp 指令建立 -l 選項的目的是遞歸地硬連結目錄(的內容)。 -s 選項是對應的,創建軟鏈接而不是硬鏈接,但它似乎不能遞歸使用。

任何嘗試這樣做都會導致錯誤訊息:

cp: `source_dir/source_file': can make relative symbolic links only in current directory

也許這取決於發行版。在 Ubuntu 12.04 中,這就是結果。僅當原始文件和連結位於同一目錄中時才有效。

也許語法不正確? cp -rs target_directory destination_directory是我用過的。

例子:

$ ls sourcedir/             
-rw-rw---- 1 user group 1123 Jan  8 23:10 source_file
$ cp -rs sourcedir/ targetdir/
cp: `targetdir/sourcedir/source_file': can make relative symbolic links only in current directory

答案1

給定來源目錄的絕對路徑:

cp -rs $PWD/sourcedir/ targetdir/

中的符號連結targetdir將包含 的絕對路徑sourcedir

否則,如果它只是創建一個符號鏈接,它將創建類似以下內容的內容:

targetdir/filename -> sourcedir/filename

但這不是查找原始文件的正確相對路徑,它應該是:

targetdir/filename -> ../sourcedir/filename

cp不會嘗試弄清楚來源目錄和目標目錄如何相互關聯,以便它可以添加適當數量的../前綴。

相關內容