КП (Unix)
Оригинальный автор(ы) | AT&T Bell Laboratories |
---|---|
Разработчик(и) | Различные с открытым исходным кодом и коммерческие разработчики разработчики |
Первоначальный выпуск | 3 ноября 1971 г |
Написано в | План 9: С |
Операционная система | Unix , Unix-подобные , Plan 9 , Inferno , KolibriOS |
Платформа | Кросс-платформенный |
Тип | Команда |
Лицензия | основные утилиты : GPLv3 План 9: МОЯ лицензия |
В вычислениях , cp
— команда в различных Unix и Unix-подобных операционных системах для копирования файлов и каталогов . Команда имеет три основных режима работы, выраженных типами аргументов, предоставляемых программе для копирования файла в другой файл, одного или нескольких файлов в каталог или для копирования целых каталогов в другой каталог. [1]
Утилита также принимает различные флаги опций командной строки для детализации выполняемых операций. Двумя основными спецификациями являются POSIX cp и GNU cp . GNU cp имеет множество дополнительных опций по сравнению с версией POSIX. [2]
Команда также доступна в оболочке EFI . [3]
История
[ редактировать ]cp был частью Unix версии 1 . [4] Версия cp
пакет GNU coreutils был написан Торбьёрном Гранлундом, Дэвидом Маккензи и Джимом Мейерингом. [5]
Режимы работы
[ редактировать ]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
- прогресс, [6] [7] Инструмент Linux для отображения прогресса cp, mv, dd.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Cp(1) — страница руководства Linux» .
- ^ «GNU Coreutils: вызов cp» . ГНУ .
- ^ «Оболочки EFI и сценарии» . Интел . Проверено 25 сентября 2013 г.
- ^ Макилрой, доктор медицины (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). CSTR. Лаборатории Белла. 139.
- ^ «Cp(1): Копировать файлы/каталоги — справочная страница Linux» .
- ^ «Прогресс(1) — справочная страница Linux» .
- ^ «Прогресс — средство просмотра прогресса Coreutils» . Гитхаб . 14 ноября 2021 г.
Внешние ссылки
[ редактировать ]- Единая спецификация UNIX , версия 4 от Open Group. – Справочник по оболочке и утилитам,
- FreeBSD по основным командам Руководство –
- NetBSD по общим командам Руководство –
- OpenBSD по общим командам Руководство –
- Solaris 11.4 по пользовательским командам Справочное руководство –
- Linux пользователя по командам Руководство –
- Plan 9 , том 1 Руководство программиста –