ryg

Команда cp скопировать файл Mac OS X

Синтаксис:

 cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] исходный_файл конечный_файл
 cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] исходный_файл ... папка_получатель

Описание:

cp - скопировать файлы. В первом варианте синтаксиса утилита копирует содержимое исходного_файла в конечный_файл.  А во втором случая содержимое каждого из указанных файлов копируется из исходного_файла в папку_получатель, при этом имена самих файлов не изменятся и останутся прежними. Если cp обнаружит попытку скопировать файл в самого себя будет выдано сообщение об ошибке.

Для копирования деревьев каталогов и для копирования файлов между компьютерами можно использовать другие программы: например rsync

Параметры:

-a Аналогично параметрам -pPR. Сохранение структуры и атрибутов файлов, но не дерево папок
 -f Если файл " назначения" невозможно открыть тогда удалить его и создать новый без предупреждения не обращая внимания на права доступа к  файлу." Данный парметр отменяет все параметры -n написанные раньше. При этом файл "назначения" не отцепляется от системы и все права доступа к нему будут сохранены.
 
-H Если указан парметр -R, то обрабатываеются и символьные ссылки в командной строке. Символьные ссылки встречаемые в дереве папок игнорируются)
-i Получать подтверждение на перезапись файла в случае если конечный_файл  уже существует. Стандартный ответ на перезапись символ 'y' или 'Y'.  (Отменяет парметр -n, если он встретился раньше)
-L Если указан парметр -R, то обрабатываеются все символьные ссылки.
-n Не перезаписывать конечный_файл, если он существует. (Данный параметр отменяет действие параметров -f или -i, если они были встречены раньше)
-P Если указан парметр -R, то обрабатываются все символьные ссылки НЕ обрабатываются (данный парметр установлен по умолчанию)
-p

Параметр указывает утилите на необходимость сохранения в конечном_файле  равных значениям в  исходном_файле  следующих атрибутов:
  дата и время последнего изменения

  • дата и время последнего открытия
  • флаги файла. (команда chflags)
  • режим файла (file mode)
  • ID пользователя
  • ID группы
  • права доступа.
  • Access Control Lists (ACLs)
  • Extended Attributes (EAs)

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

Если исходный файл имеет бит set-user-ID и ID пользователя не может быть перенесен, то и бит set-user-ID не переносится.
Если исходный файл имеет бит set-group-ID и ID группы не может быть перенесен, то и бит set-group-ID не переносится.
Если исходный файл имеет бит set-group-ID и бит  set-user-ID и один из ID пользователя или ID группы не может быть перенесен, то никакой из признаков  set-group-ID и бит  set-user-ID не переносятся

<
-R

Если исходный_файл является папкой, cp копирует папку и все дерево входящее в эту папку.

С параметром -К cp будет продолжать копировать даже если во время копирования будут происходить ошибки

-v Показать список всех скопированных файлов
-x Не копировать расширенные атрибуты (Extended Attributes (EAs)) или связанные ресурсы

Для каждого конечного_файла, что уже существует, то по умолчанию будут перезаписаны права доступа. Для отмены копирования свойств используйте -p

В случае использования второго варианта написания команды папка_получатель должна существовать, если только один из исходных файлов не является папкой и не указан параметр -R

В режиме наследования параметр -f отменяет -i. Также с параметром -f всегда происходит отлинковка перед копированием и устанавливаются новые права доступа.
При копировании с параметром -R в случае возникновения ошибки копирование прерывается.

 

Возвращаемое значение

В случае успешного выполнения утилита возвращает 0, в случае ошибки возвращается число > 0

 
Совместимость
Параметры -v и -n не являются стандартными и их лучше не использовать в скриптах.
 

 

Близкие команды:

pwd - вывести имя текущей папки
cd - сменить рабочую папку
ls - вывести список файлов в папке
mkdir -создать папку
chflags - изменить атрибуты файла
chmod - изменить права доступа к файлу или папке
rm - удалить файл
rmdir -удалить папку (папки)
Весь список команд terminal Mac OS X