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ış dir1dosyayı yeni bir dosyaya kopyalamak anlamına gelir copyDir1. Dosya sistemi söz konusu olduğunda, dir1yine de bir dosya; Bunun bir “dizin” olduğu gerçeği, yalnızca dosya sistemi gerçekte dir1o bit yığınının ne olduğunu görmek için kontrol ettiğinde ortaya çıkar .
-rBayrak 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 ~/bindışarı sol yanlışlıkla kopyalamak istiyorum ama ev dizinine ~sen -çünkü bir insan ve marka hataları-so onun sadece /binböyle:
cp /bin/ ~/copy_of_bin
Bayrağa /binduyulan ihtiyaçla birleştirilmiş bir dizin olmanın “güvenlik ağı” ile, -rbulunduğ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 -rbayrağı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 777izin ve sudohaklara sahip olmaması ve bir kullanıcı 777izin verdiğinde veya herkesin sudohakları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.