Alors que -R
est posix bien défini, -r
n'est pas portable !
Sous Linux, dans les implémentations GNU et BusyBox de cp
, -r
et -R
sont équivalents.
D'autre part, comme vous pouvez le lire dans la page de manuel POSIX de cp
, -r
le comportement est défini par la mise en œuvre .
* 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.
Minuscule -r
était une option plus ancienne, introduite dans 4.1BSD, qui copierait simplement tous les non-répertoires sous forme de fichiers. Autrement dit, s'il rencontrait un périphérique ou un FIFO, il l'ouvrirait, lirait le contenu et créerait un fichier à la destination avec le contenu.
Majuscule -R
était une option standardisée (introduite dans BSD dans 4.4BSD, même si les versions antérieures l'avaient comme synonyme de -r
) qui, en rencontrant un périphérique, une FIFO ou un autre fichier spécial, créerait un fichier spécial équivalent à la destination.
De nombreuses implémentations maintiennent toujours cette distinction, mais certaines (y compris la version GNU typique de Linux) ne fournissent que le -R
sémantique, avec -r
comme synonyme.
La différence est que l'un utilise un "R" minuscule et l'autre utilise un "R" majuscule. Au-delà, aucune différence. Même chose si vous utilisez le --recursive
option longue.