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 dest
comme 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.
cp
référence explique clairement commentcp -R
fonctionne..
et..
sont des répertoires comme tous les autres répertoires, ils n'ont rien de magique ou de mystérieux.