Pertanyaan Apa artinya "cp: menghilangkan direktori"?


Saya telah mengeluarkan perintah berikut:

sudo cp ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/

Ketika saya melakukan ini, saya mulai mendapatkan pesan-pesan berikut:

cp: omitting directory `Tag' 
cp: omitting directory `Test' 
cp: omitting directory `Text' 
cp: omitting directory `TimeSync' 
cp: omitting directory `Tool' 
cp: omitting directory `Translate' 
cp: omitting directory `Uri' 
cp: omitting directory `Validate' 

dan seterusnya...

Mengapa saya menerima pesan-pesan ini?


365
2018-04-18 15:11


asal




Jawaban:


Secara default, cp hanya menyalin file langsung dalam, dan bukan subdirektori di direktori. Pesan cp: omitting directory 'directory' memperingatkan Anda bahwa direktori yang disebutkan tidak disalin.

Untuk melakukannya, tentukan -r (atau --recursive) pilihan:

sudo cp -r ~/Transfers/ZendFramework-1.11.4-minimal/library/Zend/* ~/public_html/cmsk.dev/library/

Itu halaman manual (perintah: man cp) berisi ikhtisar dari opsi yang tersedia.


476
2018-04-18 15:15



Terima kasih banyak. Saya berpikir bahwa * akan menghadapinya secara rekursif. Tapi tidak. : D Terima kasih lagi. :) - MEM
@MEM: * diperluas oleh Bash, bukan oleh cp. Uji sendiri dengan menempatkan echo  di depan komando Anda. Ketika diperluas, itu cocok dengan segala sesuatu dengan sebelumnya ...library/Zend/ (file dan direktori di dalamnya). - Lekensteyn
Kabar baiknya adalah itu omitting directory 'directory' bukan berarti menghapus direktori itu. - Bishwas Mishra
@Lekensteyn saya mencoba menyalin konten dari satu pengguna ke yang lain. Jadi saya mendapatkan izin dari pengguna dengan chmod a+rx ~/ setelah saya mencoba untuk menyalin cp /home/2110/* /home/2111/ itu menghasilkan kesalahan yang menyatakan izin ditolak. dimana saya salah. maaf untuk berkomentar karena saya tidak bisa mengajukan pertanyaan duplikat. saya berharap untuk balasan cepat :) - jasinth premkumar
@jasinthpremkumar File di /home/2110 dimiliki oleh pengguna 2110 sementara file dalam /home/2111 seharusnya dimiliki oleh 2111. Untuk mengatur pemilik, gunakan sesuatu seperti sudo chown -R 2111 /home/2111. - Lekensteyn


Pesan itu berarti itu cp belum menyalin direktori yang terdaftar. Ini adalah perilaku default untuk cp - hanya file yang disalin secara normal, terlepas dari apakah Anda menentukannya secara eksplisit atau menggunakan *. Jika Anda ingin menyalin direktori menggunakan -r switch yang berarti "rekursif".


34
2018-04-18 15:15





Beberapa hal di sini yang perlu diperiksa:

  1. Jangan gunakan sudo. Anda tidak membutuhkannya, Anda sudah memiliki izin untuk menulis sesuatu di direktori home Anda sendiri.

  2. Anda dapat dengan mudah melihat file dan direktori tersembunyi di file manager grafis dengan memilih Lihat / Tampilkan File Tersembunyi dari menu. Atau dengan menekan Ctrl - H.

  3. Anda perlu menggunakan -R opsi dalam cp perintah untuk menyalin direktori dan isinya.

  4. / home bukan direktori home Anda. / home / nama pengguna adalah. Jadi Anda mungkin mencoba menyalin dari tempat yang salah.

  5. Shell bersifat case sensitive, jadi ~ / downloads dan ~ / Downloads adalah dua hal yang berbeda.


14
2017-10-04 07:02





Ketika Anda menyalin direktori seperti:

cp dir1 copy_of_dir1

Anda hanya dan persis menyalin dir1 itu sendiri dan bukan file di dalamnya, jadi pada akhirnya Anda akan berakhir dengan struktur direktori baru sementara struktur tidak ada.

Dengan kata lain setelah disalin itu akan mengatakan bahwa isi saya adalah file1, file2, dll; Namun file-file ini belum disalin dan dengan demikian tidak ada di dalamnya.

Jadi untuk memperbaiki masalah ini yang mungkin muncul cp secara default tidak menyalin direktori dan melompati mereka kecuali Anda menentukan -r opsi yang menyalin semua file secara rekursif juga.


2
2017-07-03 07:47





Alasannya mengatakan omitting directory karena cp dan semua utilitas salin, yang saya tahu, membuat daftar file dan sub-direktori yang akan disalin sebelum mulai menyalin file. Ketika --recursive pilihan tidak ada, sub-direktori terhenti dari daftar ini. Dengan demikian, penghapusan mengacu pada penghapusan dari daftar salinan, bukan dari media sumber Anda. Saya percaya ini membahas arti dari pesan itu.


1
2017-07-24 08:32





Misalkan Anda memiliki dua direktori 'Tag' & 'Test'

Jika Anda ingin menyalin direktori 'Tag' ke 'Test' gunakan perintah direktori

$ : cp -r Tag Test (case sensitive)

Sebagian besar Masalah akan diselesaikan dengan kode di atas jika tidak dan Anda mendapatkan pesan di bawah seperti

cp: omitting directory `Tag' 
cp: omitting directory `Test'

kemudian tambahkan beberapa file di direktori 'Tag' dan kemudian salin ke 'Test'. Sebenarnya saya memiliki masalah yang sama tetapi dipecahkan seperti yang saya katakan kedua.


-1
2017-07-03 07:14