MyTetra Share
Делитесь знаниями!
Как в Linux скопировать содержимое каталога (не каталога, а его содежимого)?
Время создания: 10.01.2025 14:13
Текстовые метки: linux, bash, команда, копирование, скопировать, каталог, содержимое, вложенность
Раздел: Компьютер - Linux - Bash - Команды и скрипты
Запись: xintrea/mytetra_syncro/master/base/17365075899hxiqbp7l9/text.html на raw.github.com

В Linux имеется команда cp, которая позволяет копировать файлы и каталоги. Касательно копирования каталогов, у этой команды имеется различное поведение относительно того, с чем ей приходится работать. Эти особенности надо учитывать.


Главная особенность состоит в том, что будет разный результат в зависимости от того, существует ли уже каталог назначения, или нет.



Пример 1:


Есть каталог dirFrom, а каталог dirTo не существует. В каталоге dirFrom так же есть подкаталог dirSub. Что сделает следующая команда?



cp -r /dirFrom /dirTo



Ответ: в результате копирования будет создан каталог dirTo. В dirTo будет лежать содержимое dirFrom. То есть, будет еще создан каталог /dirTo/dirSub.



Пример 2:


А что произойдет, если выполнить ту же самую команду, если каталог dirTo уже существует (и он пустой)?


Ответ: в результате копирования появятся каталоги /dirTo/dirFrom и /dirTo/dirFrom/dirSub. То есть, каталог dirFrom будет полностью помещен вовнутрь dirTo.



Как при любых условиях копировать каталоги одинаково?


Выше указанные примеры говорят о том, что пользоваться командой cp надо предельно осмотрительно. То, что в зависимости от наличия/отсутсвия каталога назначения изменяется вложенность результата, это очень сомнительное решение авторов утилиты cp.


Поэтому есть специальный синтаксис, позволяющий одинаково копировать содержимое каталога, независимо от того, существует ли каталог назначение или нет. Выглядит такая команда так:



cp -r /dirFrom/. /dirTo



То есть, к пути каталога-источника надо добавить "/.". В результате будет скопирование содержимое каталога, так как это происходит в примере №1. И это будет происходить независимо от того, есть ли каталог назначения в системе или нет его.


Осталось только разобраться, каким именно образом добавление "/." влияет на работу команды. В официальной документации man нет никаких подробностей по этой теме.


Так же в этом разделе:
 
MyTetra Share v.0.67
Яндекс индекс цитирования