cp (Unix) - cp (Unix)
Автор (ы) оригинала | AT&T Bell Laboratories |
---|---|
Разработчики) | Различные разработчики с открытым исходным кодом и коммерческие разработчики |
Первый выпуск | 3 ноября 1971 г . |
Операционная система | 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.
Смотрите также
использованная литература
внешние ссылки
- спецификация Single UNIX , выпуск 7 от The Open Group - Справочник по командам и утилитам,
- Руководство по основным командам FreeBSD -
- Руководство по основным командам NetBSD -
- Руководство по основным командам OpenBSD -
- руководство по командам пользователя Solaris 10 - Справочное
- пользователя Linux - Руководство по командам
- Plan 9 , том 1 - Руководство программиста