cp (Unix)
Originalförfattare | AT&T Bell Laboratories |
---|---|
Utvecklare | Olika öppen källkod och kommersiella utvecklare |
Initial release | 3 november 1971 |
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 kommandotcp .
-
-H
(dereference) – gör attcp
-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 angery
(eller lokalens motsvarighet tilly
), fortsättercp- kommandot.
Alla andra svar hindrarcp
-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
- The Single UNIX Specification , version 4 från The Open Group – Shell and Utilities Reference,
- FreeBSD General Commands Manual –
- Handbok för allmänna kommandon för NetBSD –
- OpenBSD General Commands Manual –
- Referenshandbok för Solaris 10 User Commands –
- Linux User Commands Manual –
- Plan 9 Programmerarmanual, volym 1 –