Ta odpowiedź pokazuje, że można skopiować wszystkie pliki - w tym ukryte - z katalogu src
do katalogu w następujący dest
sposób:
mkdir dest
cp -r src/. dest
W odpowiedzi ani w komentarzach nie ma wyjaśnienia, dlaczego tak naprawdę działa, i nikt nie wydaje się na to znaleźć dokumentacji.
Wypróbowałem kilka rzeczy. Po pierwsze, normalny przypadek:
$ 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
Następnie /.
na końcu:
$ 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
Zachowuje się to podobnie *
, ale także kopiuje ukryte pliki.
$ 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
.
i ..
są odpowiednimi linkami, jak wyjaśniono tutaj , podobnie jak sam wpis katalogu.
Skąd się bierze to zachowanie i gdzie jest to udokumentowane?
.
i ..
nie zachowuj się jak inne katalogi.
cp
Odniesienia wyraźnie wyjaśnia, jakcp -R
działa..
i..
są katalogami, tak jak wszystkie inne katalogi, nie ma w nich nic magicznego lub tajemniczego.