Nokta ile başlayan dosya adları neden gizlidir? İlk karakter olarak nokta kullanmadan dosyaları gizleyebilir miyim?


15

Başlangıçta bunun bir tesadüf olduğunu düşündüm, ama şimdi bunun için bir etiket bile olduğunu görüyorum : tüm gizli dosya adları bir nokta ile başlar. Bu bir konvansiyon mu? Neden seçildi? Değiştirilebilir mi? Ya da başka bir deyişle (ilgili bir soru olarak @evilsoup, başka bir grubun cevabını ima ettiğini öne sürdü): Dosyaları yeniden adlandırmadan gizleyebilir miyim ( .adlarının ilk karakteri olarak)?


İsterseniz "gizli dosya adları neden bir nokta ile başlar?"
JMCF125

2
Evet, neden bilenin seçildiğine ilişkin bir kongre UNIX öncülerine sor, eski bir kongre.
terdon


Linux'un tamamen özelleştirilebilir olduğunu düşündüm ...
JMCF125

1
@ JMCF125 aslında bu yorum istediğimden biraz daha alaycı çıktı, üzgünüm. Aslında şunu soruyor musunuz: 'Dosyaları yeniden adlandırmadan gizleyebilir miyim?' - durum buysa, bunu sorunuzda düzenlemelisiniz.
evilsoup

Yanıtlar:


26

Wikipedia'ya göre ,

Dosya adlarından önce gelen a. Unix'in ilk günlerinde bir yazılım hatasının sonucudur. Özel .ve ..dizin girdileri dosya sistemine eklendiğinde, ls komutunun bunları görüntülememesi gerektiğine karar verildi. Ancak program yanlışlıkla ismi bir ile başladı herhangi bir dosyayı dışlamak için yazılmıştır .karakteri yerine tam adlar .veya ...

... bu yüzden bir hata olarak başladı ve sonra bir özellik olarak kabul edildi (kayıt .için, geçerli dizine ..bir bağlantı ve üstündeki dizine bir bağlantı, ama eminim zaten biliyorsun ). Dosyaları saklamanın bu yöntemi aslında çoğu zaman yeterince iyi olduğundan, hiç kimse Windows tarzı dosya gizleme uygulamak için hiç rahatsız etmedi.

Ayrıca, farklı davranışların uygulanmasının, * nix dünyasına, herkesin istediği son şey olan çok daha fazla parçalanma üreteceği gerçeği de vardır.

Orada dosyaları saklamak için diğer bir yöntemdir gelmez isimlerinin değiştirilmesi dahil, ancak yalnızca GUI dosya yöneticileri için çalışıyor (ve o kişiler arasından evrensel değil - büyük Linux olanlar kullanabilir, ama OSX en Bulucu durumda olmaz ve daha fazla niş Linux dosya yöneticilerinin bu davranışı destekleme olasılığı daha düşüktür): adlı bir dosya oluşturabilir .hiddenve gizlemek istediğiniz dosya adlarını her satıra bir tane koyabilirsiniz. lsve kabuk globları buna saygı göstermez, ama yine de sizin için yararlı olabilir.


Bu saklanma Birlik üzerinde çalışmaz. Ancak tüm soruları doğrudan ele aldığınızda, bunu kabul edilen cevap olarak işaretleyeceğim (her iki yanıtı da iptal etsem de).
JMCF125

3
Wikipedia sayfası artık bu konuda bilgi içermiyor. Ancak Rob Pike, Bell Labs'ta UNIX üzerinde çalıştı ve şu konu hakkında kısa bir mesaj gönderdi
Alexander

" OS X ", "OSX" değil.
Peter Mortensen

14

Nokta ile başlayan dosyalar , varsayılan olarak "gizli" dosyaların etkisinin aşağı yukarı aynı etkisine sahip olan ancak aynı olmayan "ls" komutu tarafından yoksayılır . Nokta ile başlayan dosyalar "gizli" değildir, çünkü "gizli" özniteliklerinden biri değildir. DOS / Windows'tan farklı olarak, "gizli" Unix'te bir özellik değildir. Unix'te birçok özellik var ("man chattr" size hepsini söyleyecek) ama gizli onlardan biri değil.

Nokta dosyaları "ls" tarafından göz ardı neden aslında oldukça komik / utanç verici. Bu bir tasarım kararı değil , Unix'in ilk günlerindeki bir yazılım hatasının sonucuydu . Ne zaman özel. ve .. dizin girişleri dosya sistemine eklendi, ls komutunun yoluna girdikleri için onları görüntülememesi gerektiğine karar verildi. Ancak, program aceleyle adı bir ile başlayan dosyaları hariç tutmak için yazılmıştır. tam isimler yerine "." veya "..". Ve o zamandan beri Unix'te takip edilen bir emsal oluşturdu. Tuhaf bir şekilde, Unix adamları Plan 9'u oluşturmak için harekete geçtiklerinde, amaçlarına nokta dosyaları koymadılar .


Denedim man chattr, belki de diğer gizli dosyaları mümkün kılmak için bazı paket veya belirli bir programa ihtiyacım olacağını düşündüm.
JMCF125

0

Dosyaları gizleyip gizleyemeyeceğiniz ve hangi koşullara bağlı olarak kullandığınız dosya sistemine ve sürücüsüne bağlıdır. Geleneksel Unix dosya sistemlerinde dosyalar için "gizle" özelliği yoktur.

Bir dosya sistemi sürücüsü, bir dizin listesi almak için kullanılan sistem çağrılarına sonuç verirken adlarını atlayarak istediği dosyaları gizleyebilir. Sergut'un cevabında açıklandığı gibi, bir nokta ile başlayan dosyalar gerçekten gizlenmez.

(Aynı zamanda rootkit'ler dosyalarını nasıl gizleyebilir: dizin listeleri üreten sistem çağrılarına bağlanır ve gizlemek istedikleri dosyaları filtreler.)

Örneğin, Oracle ACFS küme dosya sistemlerinde, dizin <filesystem mountpoint>/.ACFS/gerçekten gizlidir: ile birlikte listelenmeyecektir ls -a. Ama orada olduğunu biliyorsanız, ona iyi erişebilirsiniz.

ACFS dosya sisteminin anlık görüntü özelliğini kullanıyorsanız, söz konusu dosya sisteminin varolan herhangi bir dosya sistemi anlık görüntüsüne bu dizinden erişebilirsiniz .ACFS. Gizli değilse, bir yedekleme programı hem dosya sisteminin mevcut içeriğini hem de var olan anlık görüntülerin içeriğini yedekleyebilir ve bu da istenmeyen bir durumdur; normalde geçerli durumu veya belirli bir anlık görüntünün durumunu yedeklemek istersiniz.

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.