Я ввел следующую команду:
sudo cp ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/
Когда я это делаю, я получаю следующие сообщения:
cp: omitting directory `Tag'
cp: omitting directory `Test'
cp: omitting directory `Text'
cp: omitting directory `TimeSync'
cp: omitting directory `Tool'
cp: omitting directory `Translate'
cp: omitting directory `Uri'
cp: omitting directory `Validate'
и т. Д.
Почему я получаю эти сообщения?
Пара вещей, которые необходимо проверить:
Не используйте sudo
. Вам это не нужно, у вас уже есть права на запись чего-либо в вашем собственном домашнем каталоге.
Вы можете легко просматривать скрытые файлы и каталоги в графическом файловом менеджере, выбрав «Просмотр / Показать скрытые файлы» в меню. Или нажав Ctrl kbd> - H kbd>.
Вам необходимо использовать опцию -R
в команде cp
, чтобы скопировать каталог и его содержимое.
/ home не является вашим домашним каталогом. / home / имя пользователя Так что вы, вероятно, пытаетесь скопировать не с того места.
Оболочка чувствительна к регистру, поэтому ~ / downloads и ~ / Downloads - это две разные вещи.
Сообщение означает, что cp
не скопировал перечисленные каталоги. Это поведение по умолчанию для cp
- только файлы копируются нормально, независимо от того, явно ли вы их указали или используете *
. Если вы хотите копировать каталоги, используйте переключатель -r
, что означает «рекурсивный».
Когда вы копируете каталог, например:
cp dir1 copy_of_dir1
Вы только и точно копируете сам dir1
, а не файлы внутри него, так что в конце вы получите новый структура каталогов, пока структура не существует.
Другими словами, после того, как он будет скопирован, он скажет, что мое содержание - file1
, file2
и т. Д .; Однако эти файлы не были скопированы и, следовательно, не существует в нем.
Поэтому, чтобы исправить эту проблему, которая может возникнуть cp
по умолчанию, не копирует каталоги и пропускает их, если вы не укажете опцию -r
, которая также копирует все файлы рекурсивно.
Предположим, у вас есть две директории 'Tag' & amp; 'Test'
Если вы хотите скопировать каталог 'Tag' в каталог 'Test', используйте команду
$ : cp -r Tag Test (case sensitive)
В большинстве случаев проблема будет решена с помощью вышеуказанного кода, если нет, и вы получите сообщение ниже
cp: omitting directory `Tag'
cp: omitting directory `Test'
затем добавьте некоторые файлы в каталог «Tag» и скопируйте их в «Test». На самом деле, у меня та же проблема, но она решается так, как я сказал во-вторых.
Причина, по которой он говорит omitting directory
, заключается в том, что cp
и все известные мне утилиты копирования создают список файлов и подкаталогов, которые нужно скопировать, прежде чем начать копирование файлов. Когда опции --recursive
отсутствуют, подкаталоги удаляются из этого списка. Таким образом, пропуск относится к удалению из списка копий, а не с исходного носителя. Я считаю, что это касается смысла сообщения.
По умолчанию cp
копирует только прямые файлы в каталог, а не подкаталоги в каталоге. Сообщение cp: omitting directory 'directory'
предупреждает вас, что указанный каталог не скопирован.
Для этого укажите параметр -r
(или --recursive
):
sudo cp -r ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/
Страница руководства (команда: man cp
) содержит обзор доступные варианты.
Команда CP используется для копирования файлов и каталога, не вложенные каталоги, если Вы хотите скопировать вложенные каталоги затем, можно добавить-r после этого, где рекурсивные средства-r.
Синтаксис, за которым можно следовать (работающий как корень):
cp -r /source/dir/* /destination/
или
cp --recursive /source/dir/* /destination/