Wenn Sie mit kopieren, kopieren cp -a source/* target/Sie die meisten Dateien und Verzeichnisse von sourcenach target. Insbesondere handelt es sich bei den ausgeschlossenen Elementen wahrscheinlich um Dateien, die mit einem Punkt ( .) in der obersten Ebene von beginnen source.
Betrachten Sie diese Dateien (oder Verzeichnisse) in source
apple # will be copied
banana/ # will be copied, as will all its contents
.cherry # will not be copied
Wenn Sie mit kopieren, cp -a source/. target/kopieren Sie den gesamten Inhalt von source, einschließlich aller Elemente, die mit einem Punkt ( .) beginnen, nachtarget
Betrachten Sie diese Dateien (oder Verzeichnisse) in source
apple # will be copied
banana/ # will be copied, as will all its contents
.cherry # will be copied
Wenn Sie verwenden bash, zshkönnen Sie die verwenden dotglobOption , die Bedeutung zu ändern , *so dass sie beginnen , Dateien und Verzeichnisse mit einem Punkt enthält ( yashhat auch eine dotglobOption, aber es schließt dann .und ... In glob Erweiterungen , die ihre Verwendbarkeit einschränkt Siehe auch FIGNORE='@(.|..)'in ksh93).
Interessanterweise cp -a source/. target/wird garantiert nie die Komponente erstellt target/source. (Auf der anderen Seite cp -a source target/wird eines von zwei Dingen ausgeführt, je nachdem, ob es targetbereits vorhanden ist oder nicht . Weitere Informationen finden Sie unter Kopieren eines Ordners auf idempotente Weise mit cp .)
Wenn Sie mit löschen, löschen rm -rf source/*Sie die Dateien und Verzeichnisse source, die nicht mit einem Punkt ( .) beginnen. Vorbehaltlich der dotglobbereits erwähnten Einstellung. Das Verzeichnis sourceselbst wird nicht gelöscht .
Wenn Sie versuchen, mit zu löschen, schlägt rm -rf source/.dies fehl - wie andere bereits erklärt haben -, da POSIX das Löschen eines Pfads verbietet, dessen letzte Komponente .oder ist ... Das nächste Äquivalent ist rm -rf source, das das sourceVerzeichnis und seinen gesamten Inhalt löscht, unabhängig davon, ob sie mit einem Punkt ( .) beginnen oder nicht .
It's up to the command whether that trailing dot makes any senseÄhm, der Punkt ist immer mit dem enthaltenen Verzeichnis selbst verknüpft,../foldersource/.sollte sich also nicht von der Angabe unterscheiden./foldersource/und ist in der Tat nur eine redundante Möglichkeit, dasselbe anzugeben. Kein Befehl versucht, einen Punkt oder einen Doppelpunkt zu "verstehen", da diese unter Linux / Unix-Dateisystemen Standard sind.rmlehnt es einfach ab, das aktuelle Arbeitsverzeichnis zu entfernen, wiejimmijin der Antwort angegeben. Beachten Sie außerdem, dass Sie./in all Ihren Beispielen OP verwenden../. Ein etwas großer Unterschied.