cp (Unix) - cp (Unix)

cp
Автор (ы) оригинала AT&T Bell Laboratories
Разработчики) Различные разработчики с открытым исходным кодом и коммерческие разработчики
Первый выпуск 3 ноября 1971 г . ; 49 лет назад ( 1971-11-03 )
Операционная система Unix , Unix-подобный , Plan 9 , Inferno , KolibriOS
Платформа Кроссплатформенность
Тип Командование
Лицензия coreutils : GPLv3

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

Утилита также принимает различные флаги параметров командной строки для детализации выполняемых операций. Две основные спецификации - это POSIX cp и GNU cp . GNU cp имеет много дополнительных опций по сравнению с версией POSIX.

Команда также доступна в оболочке EFI .

История

cp был частью Unix версии 1 . cpВстроенная в GNU coreutils версия была написана Торбьорном Гранлундом, Дэвидом Маккензи и Джимом Мейерингом.

Режимы работы

cp имеет три основных режима работы. Эти режимы выводятся из типа и количества аргументов, представленных программе при вызове.

  • Когда программа имеет два аргумента пути к файлам, программа копирует содержимое первого файла во второй файл, при необходимости создавая второй файл.
  • Когда программа имеет один или несколько аргументов в виде имен путей к файлам и следующих за ними аргумент пути к каталогу, тогда программа копирует каждый исходный файл в целевой каталог, создавая любые файлы, которые еще не существуют.
  • Когда аргументами программы являются имена путей к двум каталогам, cp копирует все файлы из исходного каталога в целевой каталог, создавая любые необходимые файлы или каталоги. Этот режим работы требует дополнительного флага опции, обычно r , чтобы указать рекурсивное копирование каталогов. Если целевой каталог уже существует, источник копируется в место назначения, а новый каталог создается, если место назначения не существует.

использование

Копирование файла в другой файл:

cp [-fHip][--] sourcefile targetfile

Копирование файла (ов) в каталог

cp [-fHip] [--] sourcefile... targetdirectory

Копирование каталога в каталог (необходимо использовать -r или -R)

cp -r|-R [-fHip] [--]  sourcedirectory... targetdirectory

Флаги опций

  • -f(force) - указывает удаление целевого файла, если он не может быть открыт для операций записи. Удаление предшествует любому копированию, выполняемому cpкомандой.
  • -H(разыменование) - заставляет cpкоманду следовать символическим ссылкам ( символическим ссылкам ), чтобы в месте назначения был целевой файл, а не символическая ссылка на цель.
  • -i(интерактивно) - запрашивает имя файла, который нужно перезаписать. Это происходит, если параметр TargetDirectory или TargetFile содержит файл с тем же именем, что и файл, указанный в параметре SourceFile или SourceDirectory . Если кто-то входит y(или эквивалент локали y), cpкоманда продолжается. Любой другой ответ предотвращает cpперезапись файла командой.
  • -n(без затирания ) - предотвращает случайную перезапись любых файлов
  • -p(сохранить) - -pфлаг сохраняет следующие характеристики каждого исходного пути в соответствующей цели: время последней модификации данных и время последнего доступа , владение (только если у него есть разрешения на это) и файл биты разрешений.
  • -Rили -r(рекурсивно) - рекурсивно копировать каталоги

Примеры

Создание копии файла в текущем каталоге:

cp prog.c prog.bak

Это копирует prog.c в prog.bak. Если файл prog.bak еще не существует, команда cp создает его. Если он существует, команда cp заменяет его содержимое содержимым файла prog.c.

Скопируйте два файла из текущего каталога в другой каталог:

cp jones smith /home/nick/clients

Это копирует файлы jones в / home / nick / clients / jones и smith в / home / nick / clients / smith.

Скопируйте файл в новый файл и сохраните дату изменения, время и список управления доступом, связанный с исходным файлом:

cp -p smith smith.jr

Это скопирует файл smith в файл smith.jr. Вместо создания файла с текущей датой и отметкой времени система присваивает файлу smith.jr ту же дату и время, что и файлу smith. Файл smith.jr также наследует защиту управления доступом к файлу smith.

Скопируйте каталог, включая все его файлы и подкаталоги, в другой каталог:

cp -R /home/nick/clients /home/nick/customers

Это копирует каталог клиентов , включая все его файлы, подкаталоги и файлы в этих подкаталогах, в каталог клиентов / клиентов . Некоторые системы Unix ведут себя в этом режиме по-разному, в зависимости от завершения путей к каталогам. При использовании cp -R /home/nick/clients/ /home/nick/customersв системе GNU он ведет себя так, как ожидалось; однако в системе BSD он копирует все содержимое каталога «клиенты», а не самого каталога клиентов . То же самое происходит как в системах GNU, так и в BSD, если путь к исходному каталогу заканчивается на. или .. (с косой чертой в конце или без).

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

Связанные команды Unix

  • cpio - скопировать всю структуру каталогов из одного места в другое
  • tar - создать архив файлов
  • link - системный вызов для создания ссылки на файл или каталог
  • ln - создать ссылку на файл или каталог
  • mv - переместить файл или каталог
  • rm - удалить файл или каталог
  • unlink - системный вызов для удаления файла или каталога
  • chmod - изменить режим (или разрешения) для файла или каталога
  • chown - сменить владельца файла или каталога
  • chgrp - изменить группу в файле или каталоге
  • uucp - копирование из unix в unix
  • scp - безопасное копирование через SSH
  • progress, инструмент Linux для отображения прогресса для cp, mv, dd.

Смотрите также

использованная литература

внешние ссылки