Відповіді:
Dot ( .) - це лише .каталог всередині каталогу, який такий самий, як і сам каталог ( 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/*?