В вычислениях , cp
является команда в различных Unix и Unix-подобных операционных систем для копирования файлов и каталогов . Команда имеет три основных режима работы, выраженных типами аргументов, представленных программе для копирования файла в другой файл, одного или нескольких файлов в каталог или для копирования целых каталогов в другой каталог.
Автор (ы) оригинала | AT&T Bell Laboratories |
---|---|
Разработчики) | Различные разработчики с открытым исходным кодом и коммерческие разработчики |
Первый выпуск | 3 ноября 1971 г . |
Операционная система | Unix , Unix-подобный , Plan 9 , Inferno , KolibriOS |
Платформа | Кроссплатформенность |
Тип | Командование |
Лицензия | coreutils : GPLv3 |
Утилита также принимает различные флаги параметров командной строки для детализации выполняемых операций. Две основные спецификации - это POSIX cp и GNU cp . GNU cp имеет много дополнительных опций по сравнению с версией POSIX. [1]
Команда также доступна в оболочке EFI . [2]
История
cp был частью Unix версии 1 . [3]cp
Встроенная в GNU coreutils версия была написана Торбьорном Гранлундом, Дэвидом Маккензи и Джимом Мейерингом. [4]
Режимы работы
cp имеет три основных режима работы. Эти режимы выводятся из типа и количества аргументов, представленных программе при вызове.
- Когда программа имеет два аргумента пути к файлам, программа копирует содержимое первого файла во второй файл, при необходимости создавая второй файл.
- Когда программа имеет один или несколько аргументов в виде имен путей к файлам и после них аргумент пути к каталогу, тогда программа копирует каждый исходный файл в целевой каталог, создавая любые файлы, которые еще не существуют.
- Когда аргументами программы являются имена путей к двум каталогам, cp копирует все файлы из исходного каталога в целевой каталог, создавая любые необходимые файлы или каталоги. Этот режим работы требует дополнительного флага опции, обычно r , чтобы указать рекурсивное копирование каталогов. Если целевой каталог уже существует, источник копируется в место назначения, а новый каталог создается, если место назначения не существует.
Применение
Копирование файла в другой файл:
cp [-fHip] [-] исходный файл целевой файл
Копирование файла (ов) в каталог
cp [-fHip] [-] исходный файл ... целевой каталог
Копирование каталога в каталог (необходимо использовать -r или -R)
cp -r | -R [-fHip] [-] каталог источника ... целевой каталог
Флаги опций
- f (force) - указывает удаление целевого файла, если он не может быть открыт для операций записи. Удаление предшествует любому копированию, выполняемому командой cp.
- H (разыменование) - заставляет команду cp следовать символическим ссылкам ( символическим ссылкам ), чтобы в месте назначения был целевой файл, а не символическая ссылка на цель.
- i (интерактивный) - запрашивает имя файла, который нужно перезаписать. Это происходит, если параметр TargetDirectory или TargetFile содержит файл с тем же именем, что и файл, указанный в параметре SourceFile или SourceDirectory. Если ввести y (или эквивалент y для локали ), команда cp продолжится. Любой другой ответ не позволяет команде cp перезаписать файл.
- p (сохранить) - флаг p сохраняет следующие характеристики каждого исходного пути в соответствующей цели: время последней модификации данных и время последнего доступа , владение (только если у него есть разрешения на это) и биты прав доступа к файлу.
- R или r (рекурсивный) - рекурсивно копировать каталоги
Примеры
Создание копии файла в текущем каталоге:
cp prog.c prog.bak
Это копирует prog.c в prog.bak. Если файл prog.bak еще не существует, команда cp создает его. Если он существует, команда cp заменяет его содержимое содержимым файла prog.c.
Скопируйте два файла из текущего каталога в другой каталог:
cp jones smith / главная / ник / клиенты
Это копирует файлы 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
- прогресс, [5] [6] Инструмент Linux для отображения прогресса для cp, mv, dd.
Смотрите также
Рекомендации
- ^ "GNU Coreutils: вызов cp" . www.gnu.org .
- ^ «Оболочки EFI и сценарии» . Intel . Проверено 25 сентября 2013 .
- ^ Макилрой, доктор медицины (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (технический отчет). CSTR. Bell Labs. 139.
- ^ https://linux.die.net/man/1/cp
- ^ https://linux.die.net/man/1/progress
- ^ https://github.com/Xfennec/progress
Внешние ссылки
- - Справочник по командам и утилитам, спецификация Single UNIX , выпуск 7 от The Open Group
- - Руководство по основным командам FreeBSD
- - Руководство по основным командам NetBSD
- - Руководство по основным командам OpenBSD
- - Справочное руководство по командам пользователя Solaris 10
- - Руководство по командам пользователя Linux
- - Руководство программиста Plan 9 , том 1