Antworten:
Der Punkt ( .
) ist nur das .
Verzeichnis in einem Verzeichnis, das mit dem Verzeichnis selbst identisch ist (es ls -la /foo
wird Ihnen angezeigt). Wenn Sie also an eine foo/.
andere Stelle kopieren , kopieren Sie effektiv den gesamten folgenden Baum, foo
ohne sich foo
selbst 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 /foo
in /foo2
so gut, mit Ausnahme der dotfiles / dotdirs. Effektiv cp
wird (möglicherweise) viele Argumente erhalten. Wenn die Liste zu groß ist, kann die Ausführung sogar cp
fehlschlagen.
set -x
oder, um echo cp -pr /foo/* /foo2
zu sehen, was los ist. Es ist wichtig zu erkennen, dass es die Shell ist, die die Platzhalter erweitert. cp
sieht den Stern nicht.
cp -r /foo/*
macht das Gleiche wiecp /foo/*
?