“Cp: dizini atlamak” ne anlama geliyor?


408

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şladım:

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 bunun gibi...

Bu mesajları neden alıyorum?

Yanıtlar:


536

Varsayılan olarak, cpdizindeki alt dizinleri değil, doğrudan dosyaları kopyalar. Mesaj cp: omitting directory 'directory', söz konusu dizinin kopyalanmadığı konusunda sizi uyarır.

Bunu yapmak için -r(veya --recursive) seçeneğini belirtin :

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

Manuel sayfa (komut: man cp) kullanılabilir seçeneklerden bir bakış içerir.


2
Çok teşekkürler. Bir şekilde özyineyle başa çıkacağını * düşündüm. Ama hayır. : D Tekrar teşekkürler. :)
MEM

11
@MEM: *tarafından değil, Bash tarafından genişletilir cp. echo Komuta önüne koyarak kendiniz sınayın . Genişletildiğinde, önceki her şeyle eşleşir ...library/Zend/(içindeki dosyalar ve dizinler).
Lekensteyn

İyi haber şu ki omitting directory 'directory', bu dizini sildiği anlamına gelmez.
Bishwas Mishra

@Lekensteyn bir kullanıcının içeriğini diğerine kopyalamaya çalışıyordu. Bu nedenle chmod a+rx ~/, kopyalamayı denediğimde cp /home/2110/* /home/2111/izin verilmeyen bir hata ürettiğinden sonra kullanıcıdan izin aldım . yanılmışım. yorum yapmak için üzgünüm, çünkü tekrarlanan sorular soramam. hızlı cevap bekliyorum :)
jasinth premkumar

@ jasinthpremkumar Dosyalar /home/21102110 kullanıcısına aittir, dosyaları 2111'e aittir /home/2111. Sahibini ayarlamak için benzer bir şey kullanın sudo chown -R 2111 /home/2111.
Lekensteyn

40

Mesaj, cplistelenen dizinleri kopyalamadığı anlamına gelir . Bu, varsayılan davranıştır cp- yalnızca dosyaları açıkça belirtiyorsanız veya kullanıyor olsanız da, normalde kopyalanır *. Dizinlerin kopyalanmasını istiyorsanız -r, "özyinelemeli" anlamına gelen anahtarı kullanın .


16

Kontrol etmesi gereken birkaç şey var:

  1. Kullanmayın sudo. İhtiyacınız yok, kendi ana dizininize bir şeyler yazmak için zaten izniniz var.

  2. Menüden Gizli Dosyaları Göster / Göster'i seçerek, gizli dosyaları ve dizinleri grafik dosya yöneticisinde kolayca görüntüleyebilirsiniz. Veya tarafından basılarak Ctrl- H.

  3. Bir dizini ve içeriğini kopyalamak için komuttaki -Rseçeneği kullanmanız gerekir cp.

  4. / home, ana dizininiz değil. / home / kullanici adi. Yani muhtemelen yanlış yerden kopyalamaya çalışıyorsunuzdur.

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


2

Bir dizini kopyalarken:

cp dir1 copy_of_dir1

Siz yalnızca ve tam olarak dir1kendisini ve içindeki dosyaları kopyalamıyorsunuz , bu nedenle en sonunda yapı yokken yeni bir dizin yapısına sahip olacaksınız.

Kopyalanmış sonra başka deyişle bu benim içeriği olduğunu diyecekler file1, file2vb; Ancak bu dosyalar kopyalanmamıştır ve bu nedenle içinde yoktur.

Bu nedenle, cpvarsayılan olarak ortaya çıkabilecek bu sorunu gidermek , dizinleri kopyalamaz ve -rtüm dosyaları yinelemeli olarak kopyalayan bir seçenek belirtmezseniz, bunları atlar .


1

Diyor nedeni omitting directoryçünkü cpve tüm yardımcı programları kopyalamak Dosyaları kopyalamaya başlamadan önce kopyalanacak dosyalar ve alt dizinleri bir listesini oluşturmak, Bildiğim kadarıyla,. Ne zaman --recursiveseçenekleri eksik, alt dizinleri bu listeyi çarpıyordu. Bu nedenle, ihmal etmek kaynak medyanızdan değil, kopya listesinden çıkarılması anlamına gelir. Bunun mesajın anlamını ele aldığına inanıyorum.


0

Cp o zaman ekleyebilir yuvalama dizinleri kopyalamak istiyorsanız komut, dosya ve dizin değil, iç içe dizinleri kopyalamak için kullanılır -r -r özyinelemeli anlamına gelirken, ondan sonra.

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

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

veya

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

-1

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

'Tag' dizinini 'Test' dizinine kopyalamak istiyorsanız komut kullanın.

$ : cp -r Tag Test (case sensitive)

Çoğunlukla sorun değilse ve yukarıdaki gibi bir mesajla çözülürseniz yukarıdaki kodla çözülecektir.

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

daha sonra bazı dosyaları 'Tag' dizinine ekleyin ve sonra 'Test' kısmına kopyalayın. Aslında aynı sorunu yaşıyorum ancak ikinci söylediğim gibi çözüldü.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.