Cette réponse révèle que l'on peut copier tous les fichiers - y compris ceux cachés - d'un répertoire srcà l'autre destcomme ceci:
mkdir dest
cp -r src/. dest
Il n'y a aucune explication dans la réponse ou ses commentaires pour expliquer pourquoi cela fonctionne réellement, et personne ne semble trouver non plus de documentation à ce sujet.
J'ai essayé quelques trucs. Tout d'abord, le cas normal:
$ mkdir src src/src_dir dest && touch src/src_file src/.dotfile dest/dest_file
$ cp -r src dest
$ ls -A dest
dest_file src
Puis, avec /.à la fin:
$ mkdir src src/src_dir dest && touch src/src_file src/.dotfile dest/dest_file
$ cp -r src/. dest
$ ls -A dest
dest_file .dotfile src_dir src_file
Ainsi, cela se comporte de la même manière *, mais copie également les fichiers cachés.
$ mkdir src src/src_dir dest && touch src/src_file src/.dotfile dest/dest_file
$ cp -r src/* dest
$ ls -A dest
dest_file src_dir src_file
.et ..sont des liens physiques appropriés, comme expliqué ici , tout comme l'entrée de répertoire elle-même.
D'où vient ce comportement et où est-il documenté?
.et ..ne se comportent pas comme les autres répertoires.
cpréférence explique clairement commentcp -Rfonctionne..et..sont des répertoires comme tous les autres répertoires, ils n'ont rien de magique ou de mystérieux.