скажем, то, что у меня есть следующая файловая структура:
~/DIR1
-fileA
-DIR2
--fileB
Затем будучи в ~, я запускаю этот скрипт:
cp DIR1 NEWDIR2
И просто ошибка происходит:
cp: omitting directory ‘DIR1’
Я понимаю, почему ничто от DIR1 не копируется (потому что я не использовал переключатель-r, который осуществит рекурсию), но я ожидал бы саму папку DIR1, скопированную в NEWDIR2 (так практически создание нового "NEWDIR2" в ~ или создание ~/NEWDIR2/DIR1).
Кто-то мог объяснить мне, почему мое ожидание неправильно?
От страницы информации о GNU для CP:
По умолчанию, 'CP' не копирует каталоги. Однако '-R', '-a' и '-r' опции заставляют 'CP' копировать рекурсивно путем убывания в исходные каталоги и копирования файлов в соответствующие целевые каталоги.
https://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html#cp-invocation
CP не может скопировать каталоги, если оно не используется с переключателями как-R,-r или-a.
cp -r src dest #(OOPS!!)
Вышеупомянутое ведет себя по-другому, если dest существует или нет. это не является немым, если Вы думаете об этом.
, Если Вы хотите скопировать по одному dir в другого, используйте, просто копируют каждый dir и файл в исходном dir к dest.
cp -r src/* dest
Вышеупомянутое делает то, что Вы хотите сделать (используйте-a по мере необходимости), но необходимо будет использовать "полуночного командующего" или GLOBIGNORE (слишком технический) для копирования скрытых файлов также. (потому что * игнорирует скрытые файлы)