Sous OS X et dans les anciennes versions de FreeBSD, -r
vous -R -L --copy-contents
faites comme dans Coreutils, ou suivez les liens symboliques et lisez le contenu des fichiers spéciaux et des FIFO.
mkdir a;touch b;ln -s $PWD/b a;cp -r a c
remplace le lien symbolique par le fichier cible sous OS X, mkdir a;mkfifo a/b;cp -r a c
est bloqué lors de la lecture de la FIFO et mkdir a;ln -s /dev/zero a;cp -r a b
commence à se remplir b/zero
de zéros.
Depuis la cp
page de manuel sous OS X et les anciennes versions de FreeBSD:
Historic versions of the cp utility had a -r option. This implementation
supports that option; however, its use is strongly discouraged, as it
does not correctly copy special files, symbolic links, or fifo's.
Dans les nouvelles versions de FreeBSD -r
est équivalent à -RL
:
Historic versions of the cp utility had a -r option. This implementation
supports that option, however, its behavior is different from historical
FreeBSD behavior. Use of this option is strongly discouraged as the
behavior is implementation-dependent. In FreeBSD, -r is a synonym for
-RL and works the same unless modified by other flags. Historical imple-
mentations of -r differ as they copy special files as normal files while
recreating a hierarchy.
http://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html :
--copy-contents
Si vous copiez de manière récursive, copiez le contenu de tous les fichiers spéciaux (par exemple, des fichiers FIFO et des fichiers de périphérique) comme s'il s'agissait de fichiers normaux. Cela signifie essayer de lire les données dans chaque fichier source et de les écrire dans la destination. C'est généralement une erreur d'utiliser cette option, car elle a normalement des effets indésirables sur des fichiers spéciaux tels que les FIFO et ceux généralement présents dans le /dev
répertoire. Dans la plupart des cas, cp -R --copy-contents
bloquera indéfiniment en essayant de lire à partir de fichiers FIFO et spéciaux /dev/console
, et remplira votre disque de destination si vous l'utilisez pour copier /dev/zero
. Cette option n'a d'effet que sur la copie récursive et n'affecte pas la copie de liens symboliques.