cpakan selalu menyalin file pada awal perintah ke file atau direktori pada akhir perintah. Slash tidak terlalu berpengaruh pada argumen, kecuali argumennya adalah symlink ke direktori. Kemudian memiliki garis miring akan memperlakukannya seperti direktori sementara menghilangkan garis miring akan menyalin tautan itu sendiri.
Dengan asumsi Anda ingin menyalin secara berulang subdirektori dalam contoh Anda, Anda akan menyukainya seperti:
cp -r /home/src/somedir /dest
dan
cp -r /home/src/somedir/* /dest
Yang pertama mendapatkan direktori /home/src/somedirdan akan menyalin argumen itu, direktori itu sendiri dan semua isinya, ke argumen terakhir /dest,. Ini akan membuat somedirdirektori /destjika diperlukan dan menggunakannya jika sudah ada.
The addes kedua *sampai akhir argumen pertama, yang shell akan memperluas untuk menjadi setiap file yang tidak dimulai dengan .di /home/src/somedirdan akan menyalin semua file-file dan direktori untuk /desttanpa memperhatikan apa yang sudah ada (kecuali beberapa bendera untuk cpakan membuatnya meminta untuk menimpa file yang akan memiliki yang sama di dalam tujuan sebagai file yang ada).
Seperti komentar yang ditunjukkan oleh jawaban ini, ada masalah dalam menggunakan *untuk mengambil semua file di direktori. Salah satu alternatif adalah menggunakan tarsalinan untuk Anda
tar -c -C /home/src/somedir . | tar -x -C /dest
ini akan membuat file tar somedirtanpa lintasan terkemuka dengan menggunakan -Cuntuk beralih ke direktori itu terlebih dahulu. Secara default tarakan mencetak stdoutyang kemudian kami pipa ke yang lain taruntuk mengekstraknya beralih ke /destdirektori yang diinginkan terlebih dahulu. Ini juga akan mempertahankan banyak atribut file, yang cpdapat melakukannya juga.
cp -r /home/src/somedir /dest/harus mengatasi kedua situasi, baik membuat atau menggabungkan ke folder yang ada