Klasör adının nokta (.) İçermesi kötü bir uygulama mıdır? Birden çok noktalı dosya adı ne durumda?


28

Bazen bir klasör adının nokta içermesi pratik bir anlam ifade eder (.). Örneğin, L = 0.5'te yapılan bir deney için veri saklıyorsunuz. Yani klasörün adı olabilir:

experiment_L0.5

Benzer bir sorun dosya adları için de ortaya çıkabilir. Örneğin:

file_L0.5.txt

Ubuntu'da çalışmak bu kötü bir uygulama mı? Bu dizinleri bir Windows kullanıcısıyla paylaşmaya ne dersiniz?

Teşekkürler!


5
Nokta ilk karakterse, klasör gizlenir. Bunun dışında önemli olduğunu sanmıyorum.
user3121023

Yanıtlar:


37

Bildiğim kadarıyla, klasörleri ve dosyaları tek veya çok noktalı içeren adlandırmada bir sorun yok.

Ubuntu genellikle dosya tipini tanımlamak için nokta ve üç karakter (.txt gibi) kullanmaz. Yani bunun Ubuntu bağlamında özel bir anlamı yoktur. Bu, dosyaları Windows ile paylaşırken kullanışlıdır. Ubuntu , dosya türünü tanımlamak için dosyanın ilk birkaç baytında Sihirli Numaraları kullanır . Ancak, Nautilus. Dosya türünü tanımlamak için nokta ve üç karakterli uzantılar varsa, sihirli sayıları yoksayar. Bu ayar değiştirilebilir. Bkz. Uzantıları görmezden gelmek için nautilus zorlamak

Ubuntu'da dosya veya klasör adlarını nokta gibi başlatmak .experiment_L0.5, dosyayı veya klasörü gizli kılar. Nautilus'ta Ctrl+ düğmesine basarak gizli dosyaların görüntüsünü değiştirebilirsiniz H. Windows'ta bir ile başlayan bir dosya adı. gizli değil. Bu nedenle .experiment_L0.5, bir Windows sistemine adlandırılmış gizli bir dosyayı aktarırsanız, açıkça görülebilir.

Ubuntu'da bir dosya adı, sonunda özel bir anlamı olmayan bir nokta ile bitebilir. Bununla birlikte, Windows'da bir nokta dosya adını ve uzantısını ayırır ve noktayla biten ancak uzantıya izin verilmeyen bir dosya adını ayırır. Windows'ta böyle bir dosya oluşturmaya çalıştığımda sadece adı olan, nokta olmayan, uzantı olmayan bir dosya aldım.

Kaynak: Dosya Adlarındaki Wiki

Bu yardımcı olur umarım.


4
Doğru. Dosyaları Windows'la paylaşıyorsanız :, Windows dosya adlarında yasadışı olan ve sorun yaratabilecek ( ve bunu yapan ) sütun karakterlerinden kaçınmanız gerekir . Ayrıca buraya bakınız .
Rmano

@Rmano teşekkürler. Cevabımdaki wiki'ye bir link ekledim.
user68186

1
Uyumluluktan bahsetmişken fname., Windows'da da takip eden bir noktaya (benzeri ) izin verilmediğini düşünüyorum .
Rmano

@Rmano tekrar teşekkürler. Birkaç hızlı test yaptım ve test.Windows'ta bir dosya oluşturamadım . Cevabımı güncelleyeceğim.
user68186

1
Rmano'nun yorumuna eklemek için - VirtualBox ile monte edilmiş bir Windows sürücünüz varsa, Ubuntu'da bir sorun olabilir. Sondaki nokta olan bir ismi mkdir yapmayı denemek 'Protokol hatası' ile başarısız olur.
bvanlew

11

Kısa cevap

  • Windows aşağıdaki karakterlere izin vermiyor: <>:"/\|?*( kaynak )
  • Cesareti kırılan diğer karakterler şunlardır: boşluk ve nokta .( kaynak )
    • Komut satırı araçlarının adlarda boşluk varken kullanımı daha zordur (daha zor, imkansız değil)
    • Noktalar RegEx'te kullanılır (örneğin kullanmak istediğinizde grep). Önde gelen bir nokta, Linux'ta kongre tarafından gizlenen bir dosya yapar. Windows'ta, dosya türü tespiti için kullanılan dosya uzantısında noktalar kullanılır.
  • Windows ayrıca izin vermez dosya adları CON, PRN, AUX, CLOCK$, NUL COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, ve LPT9. ( kaynak )
  • Unix dosya sistemlerinde izin verilen tek karakter /, null ve null (null byte \0).
  • Ayrıca bkz: Dosya sistemi sınırları (Hangi Windows ile uyumlu olmak istediğinizi bilmiyorum).

Uzun cevap

Teknik arka plan: Dosya sistemi

Ubuntu ext4dosya sistemini kullanır. Bir dosya sistemi, dosyaların temel alınan depoda nerede depolandığını izler (disk veya SSD veya her neyse), sahip / grup / diğer biçimindeki izinler okuyabilir / yazabilir / çalıştırılabilir, zaman damgaları, ad.

Dosya sistemi kullanılabilir depolamayı yapılandırır. İlk bloğa "süper blok" denir. Bu blok bir dosya sistemini monte etmek için kullanılır. Bildiğim kadarıyla her modern dosya sistemi, alanını bloklar halinde ayırıyor. Dosya sistemi oluşturulduğunda blok boyutu yapılandırılabilse de, çoğu dosya sisteminin de sabit bir blok boyutuna sahip olduğunu düşünüyorum (ve bundan pek emin değilim). ext4 (ve ayrıca ext2 ve ext3), dosyalar ve dizinler için "inodes" den yararlanır. Bu inode'lar diğer bloklara yönelik işaretçiler içerir (bu aynı zamanda inode'lar olabilir veya "data blokları" olabilir). Ve bir dosyanın "ilk" inode yukarıda bahsettiğim tüm bilgileri içerir.

Diğer bir bilgi de dosyanın "tipi" dir. "Tip" olabilir:

  • normal dosya
  • rehber
  • cihaz dosyası (blok veya karakter cihazı)
  • ...

Aslında, dizinleri bir editörle de açabilirsiniz:

vim /home

Dizin tam yolu içermediğinden, yalnızca içeriğin adları, dosyaların neden bulunamamasına sebep göremiyorum /. Sanırım kolaylık olabilir. (Neden /izin verilmediğini bilen var mı ?)

Ancak, diğer dosya sistemleri için işler farklıdır. FAT16 ve FAT32 "dosya ayırma tablosu" olarak adlandırılır. Bu, dosyanızda depolanan tüm dosyaları içeren, hangi "küme" nin başladığı ve hangi kümede tek bir bağlantılı liste olarak sonlandıkları bir tablo olduğu anlamına gelir.

Size söylemek istediğim önemli şey, izin verilmeyen karakterlerin de dosya sistemine bağlı olabileceğidir.

Teknik arka plan: Dosya Türleri

  • Windows dosya türlerini algılamak için dosya uzantılarını kullanır
  • Linux dosya türlerini tespit etmek için "Magic Bytes" kullanır. Magic Bytes , dosyanın içeriğinin bir parçasıdır ve bu nedenle adından tamamen bağımsızdır. Bu bayt, dosya türünün belirtiminin bir parçasıdır ( örnek olarak png belirtimine bakın ). Ayrıca dosya adı uzantılarını, .txtveya gibi .htmlher ikisi de metin dosyaları olan aynı sihirli baytlık dosyalar için kullanır .

İlgili


FAT'in dosya adlarının nasıl depolandığına ilişkin tahmininiz doğru değildir: en.wikipedia.org/wiki/FAT32#File_Allocation_Table - gerçek "FAT" kümelerin listesini gösterirken , dizinler ilk kümeye işaretçi içeren bir dosya listesi listesi saklar ext4'ü tarif ettiğinize benzer bir dosya. :) Ayrıca .txtve .htmldosyalar aslında farklı "sihirli değerler" var - bir html dosyası yeniden adlandırmayı deneyin test.txtve çalışır file test.txt. Orijinal soru ile pek ilgisi yok, ama yine de :)
Sergey

1
Teşekkürler, FAT ile ilgili yanlış kısmı kaldırdım. Sihir değerleri hakkında ve file: fileBir dosyanın türünü belirlemek için sadece sihir değerlerini kullanmaz. Her geçerli HTML dosyası bir metin dosyasıdır (okunabilir karakterler içermesi anlamındadır), ancak her geçerli metin dosyası geçerli bir HTML dosyası değildir (W3C doğrulayıcılarına karşı geçerli olması anlamında). Yani oldukça fazla dosya tipi (html, xml, csv, js, php, c, h, cpp, ...) aslında metin dosyalarıdır. Yalnızca ikili dosyalarda iyi tanımlanmış konumlardaki sihirli baytlar bulunur. Yukarıda adlandırdığım tüm dosyaların içeriğinden önce isteğe bağlı beyaz boşluklar olabilir.
Martin Thoma

5

Bütünlük uğruna, sadece tek bir nokta .veya iki noktadan oluşan isimler ..özeldir:

  • . geçerli dizini ifade eder
  • .. üst dizine atıfta bulunur

Bu girişler otomatik olarak eklenir ve her zaman var olur, bu nedenle .veya adlı bir dosyaya sahip olamazsınız ...


İyi bir nokta. Bu hem Windows hem de Ubuntu için geçerlidir.
user68186

1

Bu önemli değil, linux veya pencerelerde.

Bir programın konfigürasyonunu ve programlarını kaydetmek için "program.d" isimli bir klasöre sahip olmak yaygın bir uygulamadır (/ etc dizinine bakınız)


0

Unix, Linux dosya sistemlerinde dosya adlandırma çok esnektir. Sahip olamayacağınız tek dosya ismi boş bir karakter veya /adında bir tane içeren addır. Ancak, kesinlikle yasaklanmış / başka sistemlerde ayrılmış karakterleri isim taşınabilirliği açısından kullanmaktan kaçınmak iyi bir uygulama olacaktır; " * : < > ? \ / |Windows sisteminde bir dosyaya erişmek istiyorsanız, dosya adınızdaki karakterleri (NTFS tarafından kısıtlanmış) kullanmamalısınız .

Ve bir kullanmayla ilgili .dosya adını (bir dönem) , bunun olmasını görünmüyor gibi sorun olmaması gerektiğini düşünüyorum "ayrılmış" OpenVMS hariç sistemlerin herhangi biri (karakteri, MS-DOS ve Windows nerede kullanımı içinde dosya / dizin adına izin verilir, ancak son durum aşağıdaki Vikipedi bağlantısında belirtildiği gibi VMS, MS-DOS ve Windows'taki uzantı ayırıcı olarak yorumlanır:

Diğer sistemlerde, genellikle dosya adının bir parçası olarak kabul edilir ve birden fazla süreye izin verilebilir. Unix'te, öncü bir dönem dosya veya klasörün normalde gizli olduğu anlamına gelir.

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.