-R
の間 -r
は posix で明確に定義されています 移植できません!
Linux では、cp
の GNU および BusyBox 実装で 、 -r
と -R
同等です。
一方、cp
の POSIX マニュアル ページで読めるように、 、 -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.
小文字 -r
4.1BSD で導入された古いオプションで、ディレクトリ以外のすべてをファイルとして単純にコピーします。つまり、デバイスまたは FIFO に遭遇した場合、それを開き、内容を読み取り、内容を含むファイルを宛先に作成します。
大文字 -R
標準化されたオプションでした (4.4BSD で BSD に導入されましたが、以前のバージョンでは -r
と同義でした) ) デバイス、FIFO、またはその他の特殊ファイルに遭遇すると、宛先で同等の特殊ファイルを作成します。
多くの実装は今でもこの区別を維持していますが、一部 (Linux に典型的な GNU バージョンを含む) は -R
しか提供していません。 セマンティクス、-r
を使用 同義語として。
違いは、一方は小文字の「R」を使用し、もう一方は大文字の「R」を使用することです。それ以上、違いはありません。 --recursive
を使用しても同じです 長いオプションです。