Standardmäßig wird cpgeprüft, ob das letzte Argument ein vorhandenes Verzeichnis ist. In diesem Fall cpwird in diesem Verzeichnis ein Link mit dem Basisnamen der Quelle erstellt. Das heißt, den Befehl gegeben
cp foo/bar wibble
Wenn wibblees sich um ein vorhandenes Verzeichnis handelt, wird cpdie Quelle in dieses Verzeichnis kopiert wibble/bar. Wenn wibblenicht vorhanden, wird cpdie Quelle mit verknüpft wibble.
Wenn Sie sicherstellen möchten, dass die Kopie immer vorhanden ist wibble, können Sie die Option --no-target-directory(Alias -T) angeben . Auf diese Weise können Sie bei cpErfolg sicher sein, dass die Kopie aufgerufen wird wibble. Wenn wibblebereits als Verzeichnis vorhanden, cpschlägt dies fehl.
In tabellarischer Form:
The target is … Without -T With -T
existing directory copy in the directory error
existing file (not dir) overwrite overwrite
does not exist create create
Der einzige Unterschied besteht darin, dass -Tder Befehl einen Fehler zurückgibt, falls das Ziel ein vorhandenes Verzeichnis ist. Dies ist nützlich, wenn Sie erwarten, dass das Verzeichnis nicht vorhanden ist: Sie erhalten eine Fehlermeldung, anstatt dass etwas Unvorhergesehenes passiert.
Gleiches gilt für mvund ln. Wenn das Ziel ein vorhandenes Verzeichnis ist -T, signalisieren sie einen Fehler, anstatt stillschweigend etwas anderes zu tun.
Bei cpgibt es einen anderen Fall. Wenn Sie eine rekursive Kopie erstellen und die Quelle ein Verzeichnis ist, cp -Tkopiert sie den Inhalt der Quelle in das Ziel, anstatt die Quelle selbst zu kopieren. Das heißt, gegeben
$ tree source destination
source
└── foo
destination
└── bar
dann
$ cp -rv source destination
`source' -> `destination/source'
`source/foo' -> `destination/source/foo'
wohingegen
% cp -rvT source destination
`source/foo' -> `destination/foo'
--no-target-directoryOption [out] : Solange ich --recursive verwende, ist alles in Ordnung [mitcoreutils 8.12unter GNU / Linux]. Der Hauptunterschied scheint zu sein, dass mit--no-target-directorydem Inhalt, aber nicht dem Verzeichnis selbst kopiert wird [Forschung noch im Gange]