"Cp: dizin atlanıyor" ne anlama geliyor?

Aşağıdaki komutu verdim:

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

Bunu yaptığımda, aşağıdaki mesajları almaya başlıyorum:

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' 

ve benzeri...

Neden bu mesajları alıyorum?

Varsayılan olarak, cp dizindeki alt dizinleri değil, yalnızca doğrudan dosyaları kopyalar. İleti cp: omitting directory 'directory' belirtilen dizinin kopyalanmadığı konusunda sizi uyarır.

Bunu yapmak için aşağıdakileri belirtin: -r (veya --recursive) seçenek:

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

Bu kullanım kılavuzu sayfası (komut: man cp) kullanılabilir seçeneklere genel bir bakış içerir.

Mesaj şu anlama geliyor cp listelenen dizinleri kopyalamadı. Bu varsayılan davranıştır cp - açık bir şekilde belirtip belirtmediğinize veya kullanıp kullanmadığınıza bakılmaksızın, yalnızca dosyalar normal şekilde kopyalanır *. Dizinleri kopyalamak istiyorsanız -r "özyinelemeli" anlamına gelen anahtar.

Burada kontrol edilmesi gereken birkaç şey var:

  1. Kullanma sudo. Buna ihtiyacınız yok, zaten kendi giriş dizininizde bir şeyler yazma izniniz var.

  2. Menüden Gizli Dosyaları Görüntüle / Göster'i seçerek grafik dosya yöneticisinde gizli dosyaları ve dizinleri kolayca görüntüleyebilirsiniz. Veya tuşuna basarak Ctrl - H.

  3. Kullanmanız gereken -R seçeneği cp bir dizini ve içeriğini kopyalamak için komut.

  4. /home giriş dizininiz değil. /home / kullanıcı adıdır. Yani muhtemelen yanlış yerden kopyalamaya çalışıyorsunuz.

  5. Kabuk büyük / küçük harf duyarlıdır, bu nedenle ~/downloads ve ~/Downloads iki farklı şeydir.

Gibi bir dizini kopyalarken:

cp dir1 copy_of_dir1

Sen sadece ve tam olarak kopyalıyorsun dir1 içindeki dosyaların kendisi değil, sonunda yapı mevcut değilken yeni bir dizin yapısıyla sonuçlanacaksınız.

Başka bir deyişle, kopyalandıktan sonra içeriğimin file1, file2 ancak bu dosyalar kopyalanmamıştır ve bu nedenle içinde mevcut değildir.

Bu yüzden ortaya çıkabilecek bu sorunu düzeltmek için cp varsayılan olarak dizinleri kopyalamaz ve siz belirtmediğiniz sürece bunları atlar -r tüm dosyaları da yinelemeli olarak kopyalayan seçenek.

Yazmasının sebebi omitting directory çünkü cp ve bildiğim tüm kopyalama yardımcı programları, dosyaları kopyalamaya başlamadan önce kopyalanacak dosyaların ve alt dizinlerin bir listesini oluşturur. Ne zaman --recursive seçenekler eksik, alt dizinler bu listeden çıkarılıyor. Bu nedenle, atlama, kaynak medyanızdan değil, kopya listesinden kaldırmayı ifade eder. Bunun mesajın anlamını ele aldığına inanıyorum.

Bu kp komut, iç içe geçmiş dizinleri kopyalamak istiyorsanız, iç içe geçmiş dizinleri değil, dosyaları ve dizini kopyalamak için kullanılır -r Harfi bundan sonra, -r özyinelemeli anlamına gelir.

İzleyebileceğiniz sözdizimi (root olarak çalışıyor):

cp -r /source/dir/* /destination/ 

veya

cp --recursive /source/dir/* /destination/

İki dizininiz olduğunu varsayalım 'Tag' & 'Test'

'Etiket' dizinini 'Test' dizinine kopyalamak istiyorsanız komutu kullanın

$ : cp -r Tag Test (case sensitive)

Temel olarak, Sorun yukarıdaki kodla çözülecek ve aşağıdaki gibi bir mesaj alacaksınız

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

ardından 'Etiket' dizinine bazı dosyalar ekleyin ve bunları 'Test' e kopyalayın. Aslında ben de aynı sorunu yaşadım ama ikinci dediğim gibi çözdüm.