Current (.) Ve parent (..) dizini için teknik terim nedir?


20

Aktarılan dosya adının .veya olup olmadığını kontrol eden bir işlev var ... Ama nasıl düzgün adlandırılacağını bilmiyorum. IsCurrentOrParentDirectory()İşlev tam bir yol değil, bir dosya adı alır çünkü belirsiz bir şey belirsizdir. (Sezgisel bir adam programcı geçen beklenebilir /usr/ben olduğum sürece /usr/dönecekti truebu aslında böyle değil iken,.)

Bu dizin girişleri için teknik bir terim var mı? Eğer varsa, nedir?


1
. ve .. dosya adları değil, klasörlerdir. Neden yalnızca girişin geçerli bir dosya olup olmadığını kontrol etmiyorsunuz (stat () 'e göre tür IF_REG)? PS Bu muhtemelen StackOverflow için daha uygundur
Tonny

7
@Tonny .ve .. vardır POSIX standardına göre dosya adları. Aşağıdaki alıntıma bakın. Genel bilgi işlem kavramlarıyla ilgili olduğu için burada iyi olduğunu söyleyebilirim.
slhck

İfademin tekrar belirsiz olduğunu itiraf etmeliyim. Fonksiyon tek bir dosya ya da dizin adını (sürer foo.bar, foo...) ancak bir yol ( foo/bar, /foo/, ...). Ancak dizinler, bağlantılar, vb. Dosyalar olduğundan, onu böyle bırakacağım.
Max Truxa

@slhck POSIX bir dosya olarak adlandırır, ancak bunu HERHANGİ bir dosya sistemi nesnesi için yapar. POSIX terminolojisindeki dosya genellikle "dosya sistemi nesnesinin" kısaltması olarak okunmalıdır. Erken Unix ve gerçekten gerçekten nerede dosyaları tüm FSO türetir, ancak bazı modern uygulamalar için doğru değildir ve kesinlikle Unix olmayan, ancak POSIX uyumlu İşletim Sistemleri (en açık örnek olarak Windows NT) için bu doğru değildir. - Muhtemelen benim yorumumda "geçerli dosya" yerine "normal bir dosya" yazmış olmalıydım, ama Max Truxa'nın yorumu zaten tartışmalı bir nokta yapar.
Tonny

Yanıtlar:


23

Gönderen POSIX standardı :

Özel dosya adı noktası, selefi tarafından belirtilen dizine atıfta bulunacaktır. Özel dosya adı nokta-noktası, önceki dizinin üst dizinine başvurmalıdır. Özel bir durum olarak, kök dizinde, dot-dot kök dizinin kendisine atıfta bulunabilir.

Yani, gerçekten, dosya adının olup olmadığını kontrol etmek isterseniz .veya ..çağırmanız gerekecekse IsDotOrDotDot()veya yol adı çözümlemesinin POSIX terminolojisini kullanarak, IsPredecessorOrParentOfPredecessor()hatta belki de PointsToPredecessorOrParentOfPrecedessor()... fikri anlayabilirsiniz . Sorun, son terminolojinin sadece tam yol adlarına bakıldığında mantıklı olmasıdır. Ama kimse bunu anlayamaz zaten.

Bunu göz önünde bulundurarak .ve ..geçerli dosya adları olduklarını (sadece farklı yorumlanırlar), dahili olarak nasıl adlandırıldıklarından ziyade anlamınıza güvenerek sahip olduklarınıza sadık kalmalısınız .


.bash_historydot nokta veya olmasın? Bu işlev adının önerilen OP'yi açmaktan daha açıklayıcı olup olmadığından emin değilim.
Jens Erat

@JensErat Bu sorunla alakasız. Soru dosya adı bileşeni olup olmadığı idi .ya ..ve sadece bir ile başladı olmasın .. Elbette OP'nin işlev adı daha açıklayıcıdır; Onu teknik olarak nasıl atıfta bulunduğuna işaret ediyordum.
slhck

2
Elbette öyle, ama IsDotOrDotDot()fonksiyonun ne yaptığı hakkında neredeyse hiçbir şey söylemiyor.
Jens Erat

"selefi", yol belirtimindeki yol öğesinden hemen önceki yol öğesini ifade eder. Bir dizindeki girdilerin adlarına bakıyorsanız, "geçerli" veya "üst" daha iyi bir terminolojidir.
Simon Richter

2
@JensErat kullanırım IsDotOrDotDot. Dosya sistemi kavramlarını bilen herkes bunu anında anlayacaktır. .bash_history“Nokta” olup olmadığı tartışmalıdır , çünkü “nokta” anlamında bir bağlam sağlanmamıştır, ancak kesinlikle “nokta veya nokta nokta” DEĞİLDİR.
kinokijuf

4

.ve ..genellikle mutlak olanlara karşı göreli yolları tarif etmek için kullanılır /usr. Bu farkı kullanır ve işlevi olarak bildiririm IsRelativeCurrentOrParentDirectory().

Nokta referanslarının yolun herhangi bir yerinde olabileceğini unutmayın. Ne olmuş /usr/local/..?


Ben işlev sadece bir yol adı değil tam bir yol almak olduğunu işaret başarısız oldu. Soruyu buna göre güncelledim.
Max Truxa

2

Faydalı alıntı yapılan ♦ POSIX Standardı,

Özel dosya adı noktasının …  Özel dosya adı nokta-nokta … ifadesini kullanmalıdır.

(vurgu eklendi). Yani, tam olarak teknik olmasa da , “özel dosya adı” gibi görünüyor sadece resmi ad olabilir . Kişisel kullanıcılar muhtemelen size fonksiyon aşağıdakilerden herhangi denilen eğer bunu anlamak olacaktır: IsSpecialDirectory(), IsSpecialFilename()ya da sadece IsSpecialName().

Yoksa ile gidebiliriz IsStandardDirectory(), IsStandardFilename()ya IsStandardName(). Bu (tarafından, bu durumda sizin için otomatik kurulur şeyler için Unix adlandırma kuralı (standart girdi, standart çıktı) izler mkfsve mkdir).  IsAutomatic…()ya IsDefault…()da öte yandan, muhtemelen yeterince sezgisel değildir.


Aslında aldığım ilk isim buna IsMagicDirectory()oldukça yakındı, ancak bence ifadeniz çok daha sezgisel ve uygun (özellikle yerleşik adlandırma kurallarını kullandığı için). Kullanmak IsSpecialFileName, işlevin bir yol değil, tek bir dosya (veya dizin, bağlantı vb.) Adı almadığını bile netleştirir.
Max Truxa

İyi öneri. "Özel" ancak bağlantılar, FIFO'lar vb. De içerebilir.
slhck

@slhck: Evet, aygıtlara (ör. diskler ve tty'ler) “özel dosyalar” denir. Ve evet, terim sembolik bağlara, FIFO'lara ve dosya sisteminin diğer egzotik sakinlerine - “normal dosya” dışındaki herhangi bir dosya türüne (i-düğüm) gevşek bir şekilde uygulanabilir. (Evet, dizinler de bu gruba girer.) Bu yüzden IsSpecialFile()kötü bir öneri olurdu. Ama ben bunu önermedim; Ben önerdim IsSpecialFilename(). İsimler ise sda1, console, kmem, myfifove urandomimalı, onlar rezerve edilmemiş ve doğal olarak özel değildir. Ancak .ve ..doğası gereği özel dosya adlarıdır .
Scott

1

* Nix dünyasından bildiğim tek terim CWDGeçerli Çalışma Dizini içindir. Bu aslında oldukça sık kullanılır. Örneğin /proc/$$/cwd, komutu çalıştırdığınız dizine bir bağlantı olan örneğe bakın .

Bunun ..dışında herhangi bir standart isim bilmiyorum dot-dotve @slhck bunun iyi bir seçim olmadığını belirtti.


0

Posix, üst-alt dizin ilişkileri hakkında konuşma konusunda oldukça belirsizdir. Diğerlerinin söylediği gibi, diğer insanlarla konuşurken veya iletişim kurarken ./ ..yardımcı olmaz.

Dosya yapıları bir ağaç veri yapısı olarak düşünülebilir. Burada genellikle "ebeveyn" ve "çocuk" ya da "kız çocuk" anlam ifade etmek için yeterlidir. Veri yapısı ders kitaplarının bu kuralı taşıdığını göreceksiniz

Alternatif olarak, ağaçların ağaçtan “yukarı” ve “aşağı” olarak bahsedilebileceği anlaşılmaktadır. Kural olarak, "yukarı" kök dizine daha yakın anlamına gelir ve "aşağı" alt (ren) anlamına gelir.

Bence ya IsCurrentOrUp()da IsCurrentOrParent()isimlendirme fonksiyonları için iyi bir uygulama olduğu söylenebilir.

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.