Secara default, cpmenguji apakah argumen terakhirnya adalah direktori yang ada. Jika ini terjadi, cpbuat tautan di dalam direktori itu, dengan nama dasar sumber. Artinya, diberi perintah
cp foo/bar wibble
jika wibbledirektori yang ada maka cpsalin sumber ke wibble/bar. Jika wibbletidak ada maka cptautkan sumber ke wibble.
Jika Anda ingin memastikan bahwa salinannya selalu wibble, maka Anda dapat menentukan opsi --no-target-directory(alias -T). Dengan begitu, jika cpberhasil, Anda dapat yakin bahwa salinannya dipanggil wibble. Jika wibblesudah ada sebagai direktori, maka cpakan gagal.
Dalam bentuk tabel:
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
Satu-satunya perbedaan adalah bahwa dengan -T, jika targetnya adalah direktori yang ada, perintah mengembalikan kesalahan. Ini berguna ketika Anda mengharapkan direktori tidak ada: Anda mendapatkan pesan kesalahan alih-alih sesuatu yang tidak terduga terjadi.
Hal yang sama berlaku untuk mvdan ln. Jika targetnya adalah direktori yang sudah ada, dengan -T, mereka menandakan kesalahan daripada diam-diam melakukan sesuatu yang berbeda.
Dengan cp, ada kasus berbeda. Jika Anda melakukan salinan rekursif dan sumbernya adalah direktori, maka cp -Tsalin konten sumber ke tujuan, daripada menyalin sumber itu sendiri. Itu, diberikan
$ tree source destination
source
└── foo
destination
└── bar
kemudian
$ cp -rv source destination
`source' -> `destination/source'
`source/foo' -> `destination/source/foo'
sedangkan
% cp -rvT source destination
`source/foo' -> `destination/foo'
--no-target-directoryopsi [keluar] : selama saya menggunakan --recursive, semuanya baik-baik saja [dengancoreutils 8.12GNU / Linux]. Perbedaan utama tampaknya adalah bahwa dengan--no-target-directorykonten tetapi tidak direktori itu sendiri disalin [penelitian masih berlangsung]