WikiDer > Cp (Unix)

Cp (Unix)

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

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

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

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

История

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

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

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

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

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

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

cp [-fHip] [-] исходный файл целевой файл

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

cp [-fHip] [-] исходный файл ... целевой каталог

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

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

Флаги опций

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

Примеры

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

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 / 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 - копировать всю структуру каталогов из одного места в другое
  • деготь - создать архив файлов
  • связь - системный вызов для создания ссылки на файл или каталог
  • пер - создать ссылку на файл или каталог
  • мв - переместить файл или каталог
  • rm - удалить файл или каталог
  • разорвать связь - системный вызов для удаления файла или каталога
  • chmod - изменить режим (или разрешения) для файла или каталога
  • Chown - сменить владельца файла или каталога
  • chgrp - изменить группу в файле или каталоге
  • uucp - unix в unix копировать
  • scp - безопасное копирование по SSH
  • прогресс,[5][6] Инструмент Linux для отображения прогресса по cp, mv, dd.

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

Рекомендации

  1. ^ "GNU Coreutils: вызов cp". www.gnu.org.
  2. ^ «Оболочки EFI и сценарии». Intel. Получено 2013-09-25.
  3. ^ Макилрой, М.Д. (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). CSTR. Bell Labs. 139.
  4. ^ https://linux.die.net/man/1/cp
  5. ^ https://linux.die.net/man/1/progress
  6. ^ https://github.com/Xfennec/progress

внешняя ссылка