saya bertanya-tanya mengapa perintah yang tepat ini di dockerfile menyalin semua file direktori sumber ke tujuan, daripada menyalin hanya seluruh direktori.
holms
4
Saya percaya '/' pada akhirnya membuat perbedaan dan itu mungkin menjelaskan pengalaman Anda. Jika sumber menyertakan trailing slash, ia akan menyalin apa yang ada di direktori saja. Jika tidak termasuk garis miring, itu akan menyalin direktori juga dan kemudian isi di dalamnya. Ingatan saya adalah perilaku ini bervariasi berdasarkan perintah dan mungkin acara oleh OS sedikit. Ini referensi dengan info lebih lanjut.
OllieBrown
23
Saya akan mengatakan jika Anda tidak ingin menyertakan sumber dan Anda ingin memastikan semuanya disalin (symlink, file tersembunyi) tanpa menyalin folder induk sumber adalah dengan menggunakan -ra sumber /. tujuan. Ini akan memastikan konten folder disalin, tetapi bukan folder induk itu sendiri, yang terkadang berguna. Dan perbedaannya adalah /.
muni764
Ini juga tampaknya berfungsi dengan benar jika direktori yang akan disalin adalah tautan simbolik, yang merupakan kasus penggunaan saya.
Gdalya
3
Perhatikan pentingnya "Slash dot" pada sumber Anda di cp -r src/. destSaya tahu itu disebutkan tetapi saya sepertinya masih melewatkannya setiap waktu.
bbeecher
368
Anda mencari cpperintah. Anda perlu mengubah direktori sehingga Anda berada di luar direktori yang Anda coba salin.
Jika direktori yang Anda salin dipanggil dir1dan Anda ingin menyalinnya ke /home/Picturesfolder Anda :
cp -r dir1/ ~/Pictures/
Linux peka terhadap huruf besar-kecil dan juga perlu /setelah setiap direktori untuk mengetahui bahwa itu bukan file. ~adalah karakter khusus di terminal yang secara otomatis mengevaluasi ke direktori home pengguna saat ini. Jika Anda perlu tahu direktori apa yang Anda gunakan, gunakan perintahpwd .
Ketika Anda tidak tahu cara menggunakan perintah Linux, ada halaman manual yang bisa Anda rujuk dengan mengetik:
man [insert command here]
di terminal prompt.
Juga, untuk secara otomatis menyelesaikan jalur file panjang ketika mengetik di terminal, Anda dapat menekan Tabsetelah Anda mulai mengetik jalur dan Anda akan disajikan dengan pilihan, atau itu akan memasukkan bagian yang tersisa dari jalur.
Untuk memperjelas lebih lanjut, -ropsi dalam hal ini akan menyalin direktori secara rekursif.
TVann
5
Apakah OP tidak menentukan bahwa ia telah menggunakan cp -rperintah, tetapi itu tidak bekerja dengan benar?
MD XF
4
Alasan saya memasukkan info tentang halaman manual adalah flag-flag ini dapat bergantung pada distribusi. Namun, untuk sebagian besar, tampaknya -r, --recursivedan -Rsetara. Itu juga akan memberikan perangkap umum, dll. Yang bagus.
Alex W
6
Jika Anda ingin menyalin DIRECTORY dengan mudah dan bukan hanya isinya, tinggalkan tanda hubung di folder sumber. cp -r dir1 ~/Pictures/
Jawaban:
Opsi yang Anda cari adalah
-R
.destination
tidak ada, itu akan dibuat.-R
berarticopy directories recursively
. Anda juga dapat menggunakan-r
karena case-insensitive./
sesuai komentar @ muni764 .sumber
cp -r src/. dest
Saya tahu itu disebutkan tetapi saya sepertinya masih melewatkannya setiap waktu.Anda mencari
cp
perintah. Anda perlu mengubah direktori sehingga Anda berada di luar direktori yang Anda coba salin.Jika direktori yang Anda salin dipanggil
dir1
dan Anda ingin menyalinnya ke/home/Pictures
folder Anda :Linux peka terhadap huruf besar-kecil dan juga perlu
/
setelah setiap direktori untuk mengetahui bahwa itu bukan file.~
adalah karakter khusus di terminal yang secara otomatis mengevaluasi ke direktori home pengguna saat ini. Jika Anda perlu tahu direktori apa yang Anda gunakan, gunakan perintahpwd
.Ketika Anda tidak tahu cara menggunakan perintah Linux, ada halaman manual yang bisa Anda rujuk dengan mengetik:
di terminal prompt.
Juga, untuk secara otomatis menyelesaikan jalur file panjang ketika mengetik di terminal, Anda dapat menekan Tabsetelah Anda mulai mengetik jalur dan Anda akan disajikan dengan pilihan, atau itu akan memasukkan bagian yang tersisa dari jalur.
sumber
-r
opsi dalam hal ini akan menyalin direktori secara rekursif.cp -r
perintah, tetapi itu tidak bekerja dengan benar?-r
,--recursive
dan-R
setara. Itu juga akan memberikan perangkap umum, dll. Yang bagus.cp -r dir1 ~/Pictures/
Menggunakan:
sumber
demo1_copy
belum ada$ ls demo1 demo3 README.md $ cp -R demo1/ demo1_copy/