Standardmäßig wird cp
geprüft, ob das letzte Argument ein vorhandenes Verzeichnis ist. In diesem Fall cp
wird in diesem Verzeichnis ein Link mit dem Basisnamen der Quelle erstellt. Das heißt, den Befehl gegeben
cp foo/bar wibble
Wenn wibble
es sich um ein vorhandenes Verzeichnis handelt, wird cp
die Quelle in dieses Verzeichnis kopiert wibble/bar
. Wenn wibble
nicht vorhanden, wird cp
die 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 cp
Erfolg sicher sein, dass die Kopie aufgerufen wird wibble
. Wenn wibble
bereits als Verzeichnis vorhanden, cp
schlä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 -T
der 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 mv
und ln
. Wenn das Ziel ein vorhandenes Verzeichnis ist -T
, signalisieren sie einen Fehler, anstatt stillschweigend etwas anderes zu tun.
Bei cp
gibt es einen anderen Fall. Wenn Sie eine rekursive Kopie erstellen und die Quelle ein Verzeichnis ist, cp -T
kopiert 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-directory
Option [out] : Solange ich --recursive verwende, ist alles in Ordnung [mitcoreutils 8.12
unter GNU / Linux]. Der Hauptunterschied scheint zu sein, dass mit--no-target-directory
dem Inhalt, aber nicht dem Verzeichnis selbst kopiert wird [Forschung noch im Gange]