cp (Unix)

cp
Originalförfattare AT&T Bell Laboratories
Utvecklare Olika öppen källkod och kommersiella utvecklare
Initial release 3 november 1971 ; 51 år sedan ( 1971-11-03 )
Skrivet i Plan 9: C
Operativ system Unix , Unix-like , Plan 9 , Inferno , KolibriOS
Plattform Cross-plattform
Typ Kommando
Licens
coreutils : GPLv3 Plan 9: MIT-licens

Inom datorer är cp ett kommando i olika Unix- och Unix-liknande operativsystem för att kopiera filer och kataloger . Kommandot har tre huvudsakliga driftlägen, uttryckta av de typer av argument som presenteras för programmet för att kopiera en fil till en annan fil, en eller flera filer till en katalog eller för att kopiera hela kataloger till en annan katalog.

Verktyget accepterar vidare olika kommandoradsalternativflaggor för att detaljera de utförda operationerna. De två huvudspecifikationerna är POSIX cp och GNU cp . GNU cp har många ytterligare alternativ jämfört med POSIX-versionen.

Kommandot är också tillgängligt i EFI-skalet .

Historia

cp var en del av version 1 Unix . Versionen av cp som är paketerad i GNU coreutils skrevs av Torbjorn Granlund, David MacKenzie och Jim Meyering.

Driftlägen

cp har tre huvudsakliga driftlägen. Dessa lägen härleds från typen och antalet argument som presenteras för programmet vid anrop.

  • När programmet har två argument för sökvägsnamn till filer, kopierar programmet innehållet i den första filen till den andra filen och skapar den andra filen om det behövs.
  • När programmet har ett eller flera argument för sökvägsnamn för filer och efter dessa ett argument för en sökväg till en katalog, kopierar programmet varje källfil till målkatalogen och skapar filer som inte redan finns.
  • När programmets argument är sökvägsnamnen till två kataloger, kopierar cp alla filer i källkatalogen till målkatalogen och skapar alla filer eller kataloger som behövs. Detta driftsätt kräver en ytterligare alternativflagga, typiskt r , för att indikera den rekursiva kopieringen av kataloger. Om destinationskatalogen redan finns, kopieras källan till destinationen, medan en ny katalog skapas om destinationen inte finns.

Användande

Kopiera en fil till en annan fil:

cp [-fHip][--] målfil för källfil

Kopiera fil(er) till en katalog

cp [-fHip] [--] källfil... målkatalog

Kopiera en katalog till en katalog (-r eller -R måste användas)

cp -r|-R [-fHip] [--] källkatalog... målkatalog

Alternativ flaggor

  • -f (force) – anger borttagning av målfilen om den inte kan öppnas för skrivoperationer. Borttagningen föregår all kopiering som utförs av kommandot cp .
  • -H (dereference) – gör att cp -kommandot följer symboliska länkar (symlänkar) så att destinationen har målfilen snarare än en symbolisk länk till målet.
  • -i (interaktiv) – uppmaningar med namnet på en fil som ska skrivas över. Detta inträffar om TargetDirectory eller TargetFile innehåller en fil med samma namn som en fil som anges i parametern SourceFile eller SourceDirectory . Om man anger y (eller lokalens motsvarighet till y ), fortsätter cp- kommandot. Alla andra svar hindrar cp -kommandot från att skriva över filen.
  • -n (ingen clobbering ) – förhindrar att filer skrivs över av misstag
  • -p (bevara) – flaggan -p bevarar följande egenskaper för varje källsökväg i motsvarande mål: tidpunkten för den senaste dataändringen och tiden för den senaste åtkomsten, äganderätten (endast om den har behörighet att göra detta) , och filbehörighetsbitarna.
  • -R eller -r (rekursiv) – kopiera kataloger rekursivt

Exempel

Skapa en kopia av en fil i den aktuella katalogen:

cp prog.c prog.bak

Detta kopierar prog.c till prog.bak. Om filen prog.bak inte redan finns skapar kommandot cp den. Om det finns ersätter kommandot cp dess innehåll med innehållet i filen prog.c.

Kopiera två filer i den aktuella katalogen till en annan katalog:

cp jones smith /home/nick/klienter

Detta kopierar filerna jones till /home/nick/clients/jones och smith till /home/nick/clients/smith.

Kopiera en fil till en ny fil och bevara ändringsdatum, tid och åtkomstkontrolllista som är kopplade till källfilen:

cp -p smith smith.jr

Detta kopierar smith-filen till smith.jr-filen. Istället för att skapa filen med aktuell datum- och tidsstämpel, ger systemet filen smith.jr samma datum och tid som smith-filen. Filen smith.jr ärver även smith-filens åtkomstkontrollskydd.

Kopiera en katalog, inklusive alla dess filer och underkataloger, till en annan katalog:

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

Detta kopierar katalogklienterna , inklusive alla dess filer, underkataloger och filerna i dessa underkataloger, till katalogkunderna / klienterna . Vissa Unix-system beter sig annorlunda i det här läget, beroende på avslutningen av katalogsökvägar. Genom att använda cp -R /home/nick/clients/ /home/nick/customers på ett GNU-system fungerar det som förväntat; på ett BSD-system kopierar det dock allt innehåll i katalogen "klienter", istället för själva katalogklienten . Samma sak händer i både GNU- och BSD-system om sökvägen till källkatalogen slutar på . eller .. (med eller utan snedstreck).

Kopieringen av en fil till en befintlig fil utförs genom att den befintliga filen öppnas i uppdateringsläge, och därigenom bevaras filerna inod, vilket kräver skrivåtkomst och resulterar i att målfilen behåller de behörigheter den hade ursprungligen.

Relaterade Unix-kommandon

  • cpio – kopiera en hel katalogstruktur från en plats till en annan
  • tar – skapa ett arkiv med filer
  • länk – systemanrop för att skapa en länk till en fil eller katalog
  • ln – skapa en länk till en fil eller katalog
  • mv – flytta en fil eller katalog
  • rm – ta bort en fil eller katalog
  • unlink – systemanrop för att ta bort en fil eller katalog
  • chmod – ändra läge (alias behörigheter) på en fil eller katalog
  • chown – ändra äganderätt för en fil eller katalog
  • chgrp – ändra grupp på en fil eller katalog
  • uucp – unix till unix kopia
  • scp – säker kopia över SSH
  • progress, Linux-verktyg för att visa framsteg för cp, mv, dd.

Se även

externa länkar