cp -r
ファイルを再帰的にコピーし、cp -R
ディレクトリを再帰的にコピーすることを意味します。しかし、確認してみると、両方ともファイルとディレクトリをコピーしているようです。では、実際の違いは何ですか?
答え1
-R
posixは明確に定義されていますが、移植性-r
はありません!
Linuxでは、実装はGNUとBusyBoxで同じcp
です。-r
-R
一方、できるだけPOSIXcp
アクションのマニュアルページ-r
は次のとおりです。実装定義。
* If neither the -R nor -r options were specified, cp shall take actions based on the type and contents of the file referenced by the symbolic link, and not by the symbolic link itself. * If the -R option was specified: * If none of the options -H, -L, nor -P were specified, it is unspecified which of -H, -L, or -P will be used as a default. * If the -H option was specified, cp shall take actions based on the type and contents of the file referenced by any symbolic link specified as a source_file operand. * If the -L option was specified, cp shall take actions based on the type and contents of the file referenced by any symbolic link specified as a source_file operand or any symbolic links encoun- tered during traversal of a file hierarchy. * If the -P option was specified, cp shall copy any symbolic link specified as a source_file operand and any symbolic links encoun- tered during traversal of a file hierarchy, and shall not follow any symbolic links. * If the -r option was specified, the behavior is implementation- defined.
答え2
小文字は-r
4.1BSDで導入された古いオプションで、ディレクトリ以外のすべてのエントリをファイルにコピーします。つまり、デバイスまたはFIFOに会うと、それを開いて内容を読み取り、ターゲットに内容を含むファイルを作成します。
大文字は、デバイス、FIFO、またはその他の特殊ファイルが見つかったときにターゲットに同等の特殊ファイルを生成する-R
標準化されたオプションです(4.4BSDでBSDに導入されましたが、以前のバージョンでは同義語として使用されました)。-r
多くの実装は依然としてこれらの区別を維持していますが、一部(一般的なLinuxのLinux版を含む)は同義語でのみ意味を提供し-R
ます-r
。
答え3
違いは、1つは小文字の「R」を使用し、もう1つは大文字の「R」を使用することです。他に違いはありません。長いオプションを使用しても--recursive
同様です。
答え4
私が見つけた違いの1つは、-rは隠しディレクトリをコピーしないのに対し、-Rは隠されたディレクトリをコピーすることです。
ターゲットディレクトリで.gitディレクトリをテストしたところ、上記の結論に達しました。私は現在CentOSを使用しています。
私は間違っているかもしれませんが、議論の余地があります。