Cp

cp -R 的 POSIX 描述

  • June 21, 2016

與POSIX 單詞應該發生cp -R的情況相比,我對 bash 命令的實現感到非常困惑

鑑於 posix 定義,我希望cp -R srcDir existingDestDir將 的內容srcDir複製到existingDestDir. 而是srcDir在 sh 的 bash 和 csh 實現中被複製到 existingDestDir 中。

posix cp -R 定義的相關部分:

對於每個 source_file,應採取以下步驟:

(…)

2、如果source_file是directory類型,則需要執行以下步驟:

(…)

F。將 source_file 目錄中的文件複製到 dest_file 目錄,執行此處列出的四個步驟(1 到 4),文件為 source_files。

如果有人能為我解決這個問題,我將不勝感激。

您錯過了 POSIX 文件中的一段:

第三種概要形式 ( cp -R [-H|-L|-P] [-fip] source_file... target) 由兩個或多個指定了 -R 選項的操作數表示。cp 實用程序應將根在每個 source_file 的文件層次結構中的每個文件複製到名為如下的目標路徑:

  • 如果目標存在並命名現有目錄,則文件層次結構中每個文件的相應目標路徑的名稱應為目標的串聯,<slash>如果目標不以 a 結尾,則為單個字元<slash>,以及文件相對於文件的路徑名包含 source_file 的目錄。

在你的情況下,與

cp -R srcDir existingDestDir

“source_file”是srcDir,“target”是existingDestDir。在該段落中,“文件層次結構中每個文件的目標路徑”變為existingDestDir/srcDir,這解釋了您所看到的行為。

引用自:https://unix.stackexchange.com/questions/180922