Dosya sistemlerinin çalışma şekli, bir dizin aslında dosyaları içeren bir klasör değildir, bunun yerine bir dizin ona bağlı “alt” dosyaları içeren inode işaretçiler içeren bir dosyadır . Yani, bir dosya sistemi açısından, bir dosya bir dosyadır, fakat bir dizin sadece bağlı dosyaların listesini içeren bir dosyadır.
Öyleyse, komut satırı açısından bakıldığında:
$ cp dir1 copyDir1
Temel olarak, adlandırılmış dir1
dosyayı yeni bir dosyaya kopyalamak anlamına gelir copyDir1
. Dosya sistemi söz konusu olduğunda, dir1
yine de bir dosya; Bunun bir “dizin” olduğu gerçeği, yalnızca dosya sistemi gerçekte dir1
o bit yığınının ne olduğunu görmek için kontrol ettiğinde ortaya çıkar .
-r
Bayrak dosya / dizin ağacının aşağı yinelemeli rulo dosya sistemini anlatır ve yeni bir yere bu dosyanın bir “çocuk” olabilecek ve tüm içeriğini kopyalamak.
Bunun neden gereksiz veya gereksiz göründüğüne gelince, bu gerçekten dosya sistemleriyle uğraşmanın tarihi yöntemlerine dayanıyor. Kullanıcı ile ilgili her türlü hatadan güvenli bir sistem oluşturmanın yanı sıra; kasten olduğu kadar kazara da olabilir.
Anlamı, hadi bir müşteriniz ~/bin
dışarı sol yanlışlıkla kopyalamak istiyorum ama ev dizinine ~
sen -çünkü bir insan ve marka hataları-so onun sadece /bin
böyle:
cp /bin/ ~/copy_of_bin
Bayrağa /bin
duyulan ihtiyaçla birleştirilmiş bir dizin olmanın “güvenlik ağı” ile, -r
bulunduğunuz sistemin bütün ikili kökünü yanlışlıkla ana dizininize kopyalamaktan kaçınacaksınız. Bu güvenlik ağı olmasaydı, küçük ya da büyük olasılıkla büyük bir felaket olur.
Buradaki mantık GUI (grafik kullanıcı arayüzleri) öncesi günlerde kullanıcının potansiyel olarak bir sistemi öldürebilecek şekilde yanlış bir şekilde yaratılmasını önlemek için mantıksal / davranışsal sözleşmelerin ayarlanması gerektiğidir. Ve -r
bayrağını kullanmak şimdi onlardan biri.
Bu gereksiz görünüyorsa, Linux dosya sistemlerinin üzerine yerleştirilen modern GUI sisteminden başka bir yere bakmanıza gerek yok. Bir GUI, bunun gibi temel kullanıcı sorunlarını, dosyaları ve dizinleri kolaylıkla sürükleyip bırakma olanağı vererek giderir.
Ancak, metin tabanlı arayüzler alanında, o dünyadaki “kullanıcı deneyiminin” birçoğu, temelde, kullanıcının potansiyel olarak felaketi önleyebilmesi için kontrol altında tutmasına yardımcı olan mantıklı ve hueristik temelli yol darbeleridir.
Benzer şekilde, Linux / Unix dosya sistemlerinin varsayılan olarak belirlenen 777
izin ve sudo
haklara sahip olmaması ve bir kullanıcı 777
izin verdiğinde veya herkesin sudo
haklarını verdiğinde gerçek sistem yöneticilerinin nasıl ayrıldığının nedeni de budur . Bunlar sistemin istikrarlı ve mümkün olduğu kadar “kullanıcı kanıtı” olmasını sağlamak için yapılan temel şeylerdir; Bu sözleşmeleri kısa devre yapmak için acele eden herkes büyük olasılıkla bilmeden sistemlerine zarar verecektir.
EK BİLGİLER: Buradaki Unix Yığın Değişim sitesindeki bir başka cevap , bir dizinin özyinelemeli olmayan bir kopyasının neden sorunlu olduğu konusunda iyi bir açıklama sunar; vurgu benimdir.
Eh, -R bayrağı olmadan, sadece dosyaları kopyalamak mümkündür, çünkü birisinin bir dizini özyinelemesiz olarak kopyalamak istemesi alışılmadık bir durum değildir: Özyinelemeli olmayan bir kopya, doğrudan dizine işaret eden ikinci bir adla sonuçlanır. aynı dizin yapısı.
Çünkü insanların istedikleri nadiren olur ve bunu yapan ayrı bir program vardır (ln), özyinelemeli olmayan bir dizin kopyasına izin verilmez.
Bu nedenle, bir dizin gerçekten içinde içinde inode öğeleri olan bir dosyaysa, o dosyanın düz bir kopyasını almak, bir hard linkin nasıl çalışacağına eşdeğer olacaktır. Kimsenin istediği bu değil.