cp (Unix) - cp (Unix)

cp
Autor (es) original (is) AT&T Bell Laboratories
Desenvolvedor (s) Vários open-source e comerciais desenvolvedores
lançamento inicial 3 de novembro de 1971 ; 49 anos atrás ( 1971-11-03 )
Sistema operacional Unix , semelhante ao Unix , Plan 9 , Inferno , KolibriOS
Plataforma Plataforma cruzada
Modelo Comando
Licença coreutils : GPLv3

Em computação , cpé um comando em vários Unix e Unix-like sistemas operacionais para copiar arquivos e diretórios . O comando tem três modos principais de operação, expressos pelos tipos de argumentos apresentados ao programa para copiar um arquivo para outro arquivo, um ou mais arquivos para um diretório, ou para copiar diretórios inteiros para outro diretório.

O utilitário ainda aceita vários sinalizadores de opção de linha de comando para detalhar as operações realizadas. As duas especificações principais são POSIX cp e GNU cp . GNU cp tem muitas opções adicionais sobre a versão POSIX.

O comando também está disponível no shell EFI .

História

cp fazia parte da versão 1 do Unix . A versão do cppacote GNU coreutils foi escrita por Torbjorn Granlund, David MacKenzie e Jim Meyering.

Modos de operação

cp tem três modos principais de operação. Esses modos são inferidos do tipo e contagem de argumentos apresentados ao programa na chamada.

  • Quando o programa tem dois argumentos de nomes de caminho para arquivos, o programa copia o conteúdo do primeiro arquivo para o segundo arquivo, criando o segundo arquivo se necessário.
  • Quando o programa tem um ou mais argumentos de nomes de caminho de arquivos e, em seguida, um argumento de um caminho para um diretório, o programa copia cada arquivo de origem para o diretório de destino, criando quaisquer arquivos ainda não existentes.
  • Quando os argumentos do programa são os nomes de caminho para dois diretórios, cp copia todos os arquivos do diretório de origem para o diretório de destino, criando quaisquer arquivos ou diretórios necessários. Este modo de operação requer um sinalizador de opção adicional, normalmente r , para indicar a cópia recursiva de diretórios. Se o diretório de destino já existe, a origem é copiada para o destino, enquanto um novo diretório é criado se o destino não existir.

Uso

Copiar um arquivo para outro arquivo:

cp [-fHip][--] sourcefile targetfile

Copiando arquivo (s) para um diretório

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

Copiar um diretório para um diretório (-r ou -R deve ser usado)

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

Sinalizadores de opção

  • -f(forçar) - especifica a remoção do arquivo de destino se ele não puder ser aberto para operações de gravação. A remoção precede qualquer cópia realizada pelo cpcomando.
  • -H(desreferência) - faz com que o cpcomando siga links simbólicos (links simbólicos) para que o destino tenha o arquivo de destino ao invés de um link simbólico para o destino.
  • -i(interativo) - solicita o nome de um arquivo a ser sobrescrito. Isso ocorre se o TargetDirectory ou TargetFile parâmetro contém um arquivo com o mesmo nome de um arquivo especificado no SourceFile ou sourcedirectory parâmetro. Se inserir y(ou o equivalente do local y), o cpcomando continua. Qualquer outra resposta impede que o cpcomando sobrescreva o arquivo.
  • -n(sem clobbering ) - evita a substituição acidental de qualquer arquivo
  • -p(preservar) - o -psinalizador preserva as seguintes características de cada caminho de origem no destino correspondente: a hora da última modificação de dados e a hora do último acesso , a propriedade (apenas se tiver permissão para fazer isso) e o arquivo bits de permissão.
  • -Rou -r(recursivo) - copia diretórios recursivamente

Exemplos

Criar uma cópia de um arquivo no diretório atual:

cp prog.c prog.bak

Isso copia prog.c para prog.bak. Se o arquivo prog.bak ainda não existir, o comando cp o criará. Se ele existir, o comando cp substituirá seu conteúdo pelo conteúdo do arquivo prog.c.

Copie dois arquivos do diretório atual para outro diretório:

cp jones smith /home/nick/clients

Isto copia os arquivos jones para / home / nick / clients / jones e smith para / home / nick / clients / smith.

Copie um arquivo para um novo arquivo e preserve a data de modificação, hora e lista de controle de acesso associada ao arquivo de origem:

cp -p smith smith.jr

Isso copia o arquivo smith para o arquivo smith.jr. Em vez de criar o arquivo com a data e hora atuais, o sistema fornece ao arquivo smith.jr a mesma data e hora do arquivo smith. O arquivo smith.jr também herda a proteção de controle de acesso do arquivo smith.

Copie um diretório, incluindo todos os seus arquivos e subdiretórios, para outro diretório:

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

Isso copia os clientes do diretório , incluindo todos os seus arquivos, subdiretórios e os arquivos nesses subdiretórios, para o diretório clientes / clientes . Alguns sistemas Unix se comportam de maneira diferente neste modo, dependendo do término dos caminhos de diretório. Usando cp -R /home/nick/clients/ /home/nick/customersem um sistema GNU, ele se comporta conforme o esperado; entretanto, em um sistema BSD, ele copia todo o conteúdo do diretório "clientes", ao invés do próprio diretório clientes . O mesmo acontece nos sistemas GNU e BSD se o caminho do diretório de origem termina em. ou .. (com ou sem barra final).

A cópia de um arquivo para um arquivo existente é realizada abrindo o arquivo existente no modo de atualização, preservando assim o inode dos arquivos, que requer acesso de gravação e faz com que o arquivo de destino retenha as permissões que tinha originalmente.

Comandos Unix relacionados

  • cpio - copia uma estrutura de diretório inteira de um lugar para outro
  • tar - cria um arquivo de arquivos
  • link - chamada de sistema para criar um link para um arquivo ou diretório
  • ln - cria um link para um arquivo ou diretório
  • mv - move um arquivo ou diretório
  • rm - remove um arquivo ou diretório
  • unlink - chamada de sistema para remover um arquivo ou diretório
  • chmod - altera o modo (também conhecido como permissões) em um arquivo ou diretório
  • chown - altera a propriedade de um arquivo ou diretório
  • chgrp - altera o grupo em um arquivo ou diretório
  • uucp - cópia unix para unix
  • scp - cópia segura sobre SSH
  • progresso, ferramenta Linux para mostrar o progresso para cp, mv, dd.

Veja também

Referências

links externos