Cp (Unix)

CP
Cp-example-command-gimp.gif
Beispiel Verwendung von CP Befehl
Originalautor (en) AT & T Bell Laboratories
Entwickler (en) Verschiedene Open Source und kommerziell Entwickler
Erstveröffentlichung 3. November 1971; vor 50 Jahren
Geschrieben in Plan 9: C
Betriebssystem Unix, Unix-artig, Plan 9, Inferno, Kolibrios
Plattform Plattformübergreifend
Typ Befehl
Lizenz CoreUtils: GPLV3
Plan 9: MIT -Lizenz

Im Computer, CP ist ein Befehl in verschiedenen Unix und Unix-artig Betriebssysteme zum Kopieren Dateien und Verzeichnisse. Der Befehl verfügt über drei Hauptbetriebsmodi, die nach den Argumenten zum Kopieren einer Datei in eine andere Datei, eine oder mehrere Dateien in ein Verzeichnis oder für das Kopieren von ganzen Verzeichnissen in ein anderes Verzeichnis geäußert werden.[1]

Das Dienstprogramm akzeptiert ferner verschiedene Flags für die Befehlszeilenoption, um die ausgeführten Vorgänge zu detaillieren. Die beiden Hauptspezifikationen sind Posix CP und GNU CP. GNU CP hat viele zusätzliche Optionen über die POSIX -Version.[2]

Der Befehl ist auch in der erhältlich EFI -Hülle.[3]

Geschichte

CP war Teil von Version 1 Unix.[4] Die Version von CP gebündelt GNU CoreUtils wurde von Torbjorn Granlund, David Mackenzie und Jim Meyering geschrieben.[5]

Betriebsmodi

CP hat drei Hauptbetriebsmodi. Diese Modi werden aus dem Typ und der Anzahl der Argumente abgeleitet, die dem Programm beim Aufrufen vorgelegt wurden.

  • Wenn das Programm zwei Argumente von Pfadnamen für Dateien enthält, kopiert das Programm den Inhalt der ersten Datei in die zweite Datei und erstellt gegebenenfalls die zweite Datei.
  • Wenn das Programm ein oder mehrere Argumente für Pfadnamen von Dateien enthält und denen ein Argument eines Pfades zu einem Verzeichnis folgt, kopiert das Programm jede Quelldatei in das Zielverzeichnis, wobei die nicht bereits vorhandenen Dateien erstellt werden.
  • Wenn die Argumente des Programms die Pfadnamen für zwei Verzeichnisse sind, kopiert CP alle Dateien im Quellverzeichnis zum Zielverzeichnis und erstellt alle erforderlichen Dateien oder Verzeichnisse. Diese Betriebsart erfordert in der Regel ein zusätzliches Optionsflag r, um das rekursive Kopieren von Verzeichnissen anzuzeigen. Wenn das Zielverzeichnis bereits vorhanden ist, wird die Quelle in das Ziel kopiert, während ein neues Verzeichnis erstellt wird, wenn das Ziel nicht existiert.

Verwendungszweck

Kopieren einer Datei in eine andere Datei:

CP [-fhip] [-] SourceFile TargetFile

Kopieren von Dateien (en) in ein Verzeichnis

CP [-fhip] [-] SourceFile ... targetDirectory

Kopieren eines Verzeichnisses in ein Verzeichnis (-R oder -r muss verwendet werden)

cp -r | -r [-fhip] [-] Sourcedirectory ... targetDirectory

Option Flags

  • -f (Kraft) - Gibt die Entfernung der Zieldatei an, wenn sie nicht für Schreibvorgänge geöffnet werden kann. Die Entfernung geht jedem Kopieren voraus, der von der durchgeführt wird CP Befehl.
  • -H (Dereference) - macht das CP Befehl folgen Symbolische Links (Symlinks), so dass das Ziel die Zieldatei und eher einen Symlink für das Ziel hat.
  • -ich (Interaktiv) - Aufforderungen mit dem Namen einer Datei, die überschrieben werden soll. Dies geschieht, wenn die Zielverzeichnis oder Zieldatei Der Parameter enthält eine Datei mit demselben Namen wie eine in der angegebene Datei SourceFile oder Quarkuse Parameter. Wenn man eintritt y (oder das Äquivalent des Gebietsschemas von y), das CP Befehl geht weiter. Jede andere Antwort verhindert die CP Befehl vom Überschreiben der Datei.
  • -n (nein kuscheln) - verhindert versehentlich Überschreiben von Dateien
  • -p (Erhaltung) - die -p FLAGS bewahrt die folgenden Eigenschaften jedes Quellpfads im entsprechenden Ziel: die Zeit der Zeit der Letzte Datenänderung und die Zeit des letzten Zugangs, das Eigentum (nur wenn es die Berechtigungen hat) und die Datei-Berechtigungsbits.
  • -R oder -r (rekursiv) - Kopienverzeichnisse rekursiv

Beispiele

Erstellen einer Kopie einer Datei im aktuellen Verzeichnis:

cp prog.c prog.bak

Dies kopiert Prog.c an Prog.bak. Wenn die Datei prog.bak noch nicht vorhanden ist, erstellt der CP -Befehl sie. Wenn es vorhanden ist, ersetzt der CP -Befehl seinen Inhalt durch den Inhalt der Prog.c -Datei.

Kopieren Sie zwei Dateien im aktuellen Verzeichnis in ein anderes Verzeichnis:

CP Jones Smith/Home/Nick/Clients

Dies kopiert die Dateien Jones zu/home/nick/clients/jones und Schmied an/home/nick/clients/smith.

Kopieren Sie eine Datei in eine neue Datei und bewahren Sie die mit der Quelldatei zugeordnete Änderungsdatum, Uhrzeit und Zugriffskontrollliste auf:

CP -P Smith.jr

Dies kopiert die Smith -Datei in die Smith.jr -Datei. Anstatt die Datei mit dem aktuellen Datum und der Zeitstempel zu erstellen, gibt das System der Smith.jr -Datei gleich Datum und Uhrzeit wie die Smith -Datei. Die Smith.jr -Datei erbt auch den Zugriffsschutzschutz der Smith -Datei.

Kopieren Sie ein Verzeichnis, einschließlich aller Dateien und Unterverzeichnisse, in ein anderes Verzeichnis:

CP -r/Home/Nick/Clients/Home/Nick/Kunden

Dies kopiert das Verzeichnis Kunden, einschließlich aller Dateien, Unterverzeichnisse und der Dateien in diesen Unterverzeichnissen zum Verzeichnis Kunden/Kunden. Einige Unix -Systeme verhalten sich in diesem Modus je nach Beendigung von Verzeichnispfaden unterschiedlich. Verwendung cp -r/home/nick/clients//home/nick/cunden Auf einem GNU -System verhält es sich wie erwartet; Auf einem BSD -System kopiert es jedoch alle Inhalt des Verzeichnisses "Kunden" anstelle des Verzeichnisses Kunden selbst. Gleiches gilt sowohl für GNU- als auch in BSD -Systemen, wenn der Pfad des Quellverzeichnisses eingeht. oder .. (mit oder ohne nachfolgende Schrägstrich).

Das Kopieren einer Datei in eine vorhandene Datei wird durchgeführt, indem die vorhandene Datei im Aktualisierungsmodus geöffnet wird, wodurch der Inode der Dateien aufrechterhalten wird, für die Schreibzugriff erforderlich ist und in der Zieldatei die Berechtigungen beibehält, die sie ursprünglich hatte.

Verwandte Unix -Befehle

  • CPIO - Kopieren Sie eine ganze Verzeichnisstruktur von einem Ort zum anderen
  • Teer - Erstellen Sie ein Archiv von Dateien
  • Verknüpfung - Systemaufruf, um einen Link zu einer Datei oder einem Verzeichnis zu erstellen
  • ln - Erstellen Sie einen Link zu einer Datei oder einem Verzeichnis
  • MV - Verschieben Sie eine Datei oder ein Verzeichnis
  • rm - Entfernen Sie eine Datei oder ein Verzeichnis
  • Verknüpfen - Systemanruf, um eine Datei oder ein Verzeichnis zu entfernen
  • Chmod - Ändern Sie den Modus (AKA -Berechtigungen) in einer Datei oder einem Verzeichnis
  • Chown - Ändern Sie das Eigentum an einer Datei oder einem Verzeichnis
  • chgrp - Ändern Sie die Gruppe in einer Datei oder einem Verzeichnis
  • UUCP - UNIX to UNIX -Kopie
  • SCP - sichere Kopie über SSH
  • Fortschritt,[6][7] Linux -Tool, um den Fortschritt für CP, MV, DD zu zeigen.

Siehe auch

Verweise

  1. ^ "CP (1) - Linux Manual Page".
  2. ^ "GNU CoreUtils: CP -Aufruf". www.gnu.org.
  3. ^ "EFI -Muscheln und Skripten". Intel. Abgerufen 2013-09-25.
  4. ^ McIlroy, M. D. (1987). A Research Unix Reader: Annotierte Auszüge aus dem Programmierhandbuch, 1971–1986 (PDF) (Technischer Bericht).Cstr.Bell Labs.139.
  5. ^ "CP (1): Dateien/Verzeichnisse kopieren - Linux Man Page".
  6. ^ "Fortschritt (1) - Linux Man Page".
  7. ^ "Fortschritt - CoreUtils Fortschritt der Betrachter". GitHub. 14. November 2021.

Externe Links