Відповіді:
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/*
?