Ответы:
Точка ( .) - это просто .каталог внутри каталога, который совпадает с самим каталогом ( ls -la /fooпокажет его вам). Поэтому, если вы копируете в foo/.другое место, вы фактически копируете все дерево ниже, fooне копируя fooсебя (вы копируете его в foo2/.то же самое, что и foo2).
/foo/*расширяется оболочки в список не-скрытые файлы и каталоги в /foo, так что это будет копировать ту же структуру каталогов под /fooв , /foo2а также, для точечных файлов / dotdirs исключением. Эффективно, cpполучит (потенциально) много аргументов. Если список слишком большой, это может даже привести cpк сбою выполнения.
set -xили, echo cp -pr /foo/* /foo2чтобы увидеть, что происходит. Важно понимать, что это оболочка, которая расширяет подстановочные знаки. cpне видит звезду
cp -r /foo/*делает то же самое, что иcp /foo/*?