Neden Windows'taki bazı dosya / klasör adlarının önünde nokta var?


34

Örneğin, içinde My Documents, aşağıdaki klasörler vardır:

.ssh
.subversion

Bu, bilmediğim bir tür adlandırma kuralı mı?

Yanıtlar:


94

Bu adlandırma kuralı, "gizli" bir dosya veya dizin anlamına gelen Unix benzeri işletim sistemlerinden (Linux veya OS X gibi) gelir. Her yerde çalışır, ancak birincil kullanımı ana dizininizdeki yapılandırma dosyalarını gizlemektir (örneğin ~/.cache/veya ~/.plan- sık sık "dotfiles" olarak adlandırılır).

Dotfiles, bir şekilde Windows'taki "AppData" dizinine eşdeğer olan geleneksel Unix olarak adlandırılabilir. (Birçok Linux programları izleyin değiştirilmeye çalışılmaktadır XDG taban dizin şartname kendi yapılandırmasını hareketli, ~/.config/ve diğer veri ~/.cache/& ~/.local/share/- Bu biraz daha benzer hale getirir AppData\Roamingve AppData\Local.)

Bunları .sshve .subversiondizinleri Windows'ta kullanıyorsunuz, çünkü POSIX'lerden ziyade Windows sistem API'lerini kullanmak için yerleştirilmiş bazı programlar (özellikle de OpenSSH ve Subversion) kullandınız, ancak bazı Windows sözleşmeleri için ayarlanmadı.

Bazen bu uyarlama, Windows sistemlerinde Cygwin gibi Unix benzeri ortamlar kullanan insanlar için hayatı kolaylaştırmak amacıyla kasıtlı olarak atlanır. Örneğin, Cygwin ls, Windows "gizli" bayrağını yok sayan ve yalnızca .dotfileadları alan standart Unix benzeri araçlar grubunu yükler . Ayrıca, aynı konumun kullanılması (örneğin <home>/.ssh), birinin Windows ve Linux / BSD / OSX bilgisayarları arasındaki yapılandırmayı senkronize etmeyi kolaylaştırabilir.

Ayrıca: Genelde bu dosyalar kullanıcının ev dizininde bulunur , örneğin Linux'ta veya Windows 7+'da. "Belgeler" veya "Belgelerim" alt dizinlerine konmaları oldukça nadirdir./home/name/.sshC:\Users\name\.ssh


Rob Pike Google + 'da yazarken , bu yanlışlıkla bir özellik oldu:

Uzun zaman önce, Unix dosya sisteminin tasarımı yapıldığı için, gezinmeyi kolaylaştırmak için girişler .ve ..çıktı. Emin değilim ama ..dosya sistemi hiyerarşik hale geldiğinde 2. versiyonun yeniden yazılması sırasında girdiğine inanıyorum (daha önceleri çok farklı bir yapıya sahipti). Ancak, ls yazıldığında, bu dosyalar göründüğü için, Ken ya da Dennis programa basit bir test ekledi. O zaman assembler'deydi, fakat söz konusu kod bunun gibi bir şeye denkti:

if (name[0] == '.') continue;

Bu ifade, olması gerekenden biraz daha kısaydı.

if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;

ama hey, kolaydı.

İki şey sonuçlandı.

İlk önce kötü bir emsal belirlendi. Diğer tembel programcıların çoğu, aynı sadeleştirmeyi yaparak hatalar ortaya koydu. Periyotlarla başlayan gerçek dosyalar genellikle sayılması gerektiğinde atlanır.

İkincisi ve daha da kötüsü, "gizli" veya "nokta" dosyası fikri yaratıldı. Sonuç olarak, daha tembel programcılar dosyaları herkesin ana dizinine bırakmaya başladı. Makinede yüklü bu kadar çok şey yok, bunu yazmak için kullanıyorum, ancak ana dizimde yaklaşık yüz nokta dosya var ve bunların çoğunun ne olduğunu veya hala ihtiyaç duyup duymadıklarını bile bilmiyorum . Ana dizinime giren her dosya adı değerlendirmesi, bu biriken çamur yüzünden yavaşlar.


Teşekkür ederim! Çok kapsamlı. "C: \ users \ <kullanıcı adı> \" klasörümde, Windows PowerShell'de ve yine Cygwin Terminalinde "ls" komutunu kullanmayı denedim. PowerShell, nokta dosyalarını listeler ve AppData'yı gizler; Cygwin Terminali ise tam tersini yapar. İlginç! Cygwin, Unix kurallarını kullanıyor.
Niko Belliç

@NikoBellic: Unix / Cygwin tüm dosyaları listeleme seçeneğine lssahiptir -a.
Grawity

1
@Ruslan: Örneğin: VMS hiç gizli dosyalara sahip değildi; Sadece gibi şeyler ile bitirmek istiyorum LOGIN.COMya DECW$MAIL.DAT ev dizininde . (O sırada başka hangi sistemlerin popüler olduğundan emin değilim.) Unix daha yeni oluşturulmuştu; hiç bir sözleşmesi yoktu.
Grawity

2
@grawity MS-DOS 1.0, Digital Research tarafından yapılan ve o zamanlar Unix işinde olan Microsoft tarafından satın alınan bir DEC tarzı O / S idi . MS-DOS 2.0 ve sonraki sürümleri .., "up dir" dahil olmak üzere hiyerarşik bir dosya sistemi ve Unix kurallarından bazılarını ekledi ; Microsoft aslında bu "gelişmiş Unix özelliklerinin" reklamını yaptı.
Fred Foo

1
@grawity Ah haklı, DRI’nın CP / M'sini klonlayan Seattle Computer Products'dı. Üzgünüm. Ancak benim açımdan Microsoft'un 80'lerin başında bir Unix mağazası olduğu ve DEC sistemlerinin tek çıkış noktası olmadığıydı. (Unix aslen DEC donanımını kullanıyordu, ama CTSS ve Multics'ten DEC OS'lerden daha fazla etkilendiğini düşünmüştüm.)
Fred Foo
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.