Antworten:
Der Punkt ( .) ist nur das .Verzeichnis in einem Verzeichnis, das mit dem Verzeichnis selbst identisch ist (es ls -la /foowird Ihnen angezeigt). Wenn Sie also an eine foo/.andere Stelle kopieren , kopieren Sie effektiv den gesamten folgenden Baum, fooohne sich fooselbst zu kopieren (Sie kopieren ihn in foo2/.den gleichen wie foo2).
/foo/*wird von der Shell in der Liste der nicht-versteckten Dateien und Verzeichnisse in erweitert /foo, so dass es die gleiche Verzeichnisstruktur unter kopieren würde /fooin /foo2so gut, mit Ausnahme der dotfiles / dotdirs. Effektiv cpwird (möglicherweise) viele Argumente erhalten. Wenn die Liste zu groß ist, kann die Ausführung sogar cpfehlschlagen.
set -xoder, um echo cp -pr /foo/* /foo2zu sehen, was los ist. Es ist wichtig zu erkennen, dass es die Shell ist, die die Platzhalter erweitert. cpsieht den Stern nicht.
cp -r /foo/*macht das Gleiche wiecp /foo/*?