Dlaczego niektóre nazwy plików / folderów w systemie Windows mają przed sobą kropkę?

34

Na przykład w My Documentsznajdują się następujące foldery:

.ssh
.subversion

Czy to jakaś konwencja nazewnictwa, której nie znam?

Niko Bellic
źródło

Odpowiedzi:

94

Ta konwencja nazewnictwa pochodzi z systemów operacyjnych typu Unix (takich jak Linux lub OS X), gdzie oznacza „ukryty” plik lub katalog. Działa w dowolnym miejscu, ale jego głównym zastosowaniem jest ukrywanie plików konfiguracyjnych w katalogu domowym (np. ~/.cache/Lub ~/.plan- często nazywane są „plikami kropkowymi”).

Dotfiles można by nazwać tradycyjnym uniksowym odpowiednikiem katalogu „AppData” w systemie Windows. (Wiele programów Linux jest zmienianych zgodnie ze specyfikacją katalogu podstawowego XDG , przenosząc ich konfigurację ~/.config/i inne dane do ~/.cache/& ~/.local/share/- dzięki temu jest trochę bardziej podobny do AppData\Roamingi AppData\Local.)

Masz te .sshi .subversionkatalogi w systemie Windows, ponieważ korzystałeś z niektórych programów - w szczególności OpenSSH i Subversion - które zostały przeniesione do używania interfejsów API systemu Windows zamiast POSIX, ale nie zostały dostosowane do niektórych innych konwencji Windows.

Czasami ta adaptacja jest celowo pomijana, aby ułatwić życie osobom używającym środowisk uniksowych, takich jak Cygwin w swoich systemach Windows. Na przykład Cygwin instaluje standardowy zestaw narzędzi uniksowych, takich jak ls, który ignoruje „ukrytą” flagę systemu Windows i honoruje tylko .dotfilenazwy. Ponadto użycie tej samej lokalizacji (np. <home>/.ssh) Może ułatwić synchronizację konfiguracji między komputerami z systemem Windows i Linux / BSD / OSX.

Ponadto: Zazwyczaj pliki te znajdują się w katalogu domowym użytkownika , np. W systemie Linux lub w systemie Windows 7+. Bardzo rzadko są umieszczane w podkatalogach „Dokumenty” lub „Moje dokumenty”./home/name/.sshC:\Users\name\.ssh


Jak pisze Rob Pike w Google+ , była to przypadkowa funkcja:

Dawno temu, gdy opracowywano projekt systemu plików Unix, wpisy .i ..pojawiały się, aby ułatwić nawigację. Nie jestem pewien, ale wydaje mi się, że ..wszedłem podczas przepisywania wersji 2, kiedy system plików stał się hierarchiczny (na początku miał zupełnie inną strukturę). Jednak po wpisaniu ls pojawiły się te pliki, więc Ken lub Dennis dodali do programu prosty test. Był wtedy w asemblerze, ale kod, o którym mowa, odpowiadał mniej więcej tak:

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

To stwierdzenie było nieco krótsze niż powinno być

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

ale hej, to było łatwe.

Powstały dwie rzeczy.

Po pierwsze, ustanowiono zły precedens. Wielu innych leniwych programistów wprowadziło błędy, wprowadzając takie samo uproszczenie. Rzeczywiste pliki zaczynające się od kropek są często pomijane, kiedy należy je policzyć.

Po drugie, i znacznie gorzej, stworzono pomysł pliku „ukrytego” lub „kropkowego”. W rezultacie bardziej leniwi programiści zaczęli upuszczać pliki do katalogu domowego każdego. Nie mam zainstalowanych tak wielu rzeczy na komputerze, którego używam do pisania, ale mój katalog domowy ma około stu plików z kropkami i nawet nie wiem, co to większość lub czy nadal są potrzebne . Każda ocena nazwy pliku, która przechodzi przez mój katalog domowy, jest spowalniana przez nagromadzony osad.

grawitacja
źródło
Dziękuję Ci! Bardzo dokładny. W moim folderze „C: \ users \ <nazwa użytkownika> \” próbowałem użyć polecenia „ls” w programie Windows PowerShell i ponownie w terminalu Cygwin. PowerShell wyświetla pliki kropek i ukrywa AppData, podczas gdy Cygwin Terminal robi dokładnie odwrotnie. Ciekawy! Cygwin korzysta z konwencji uniksowej.
Niko Bellic
@NikoBellic: Unix / Cygwin lsma -aopcję wyświetlania listy wszystkich plików.
grawitacja
1
@ Ruslan: Na przykład: VMS w ogóle nie miał ukrytych plików; chcesz po prostu skończyć z rzeczy, jak LOGIN.COMi DECW$MAIL.DAT w swoim katalogu domowym . (Nie jestem pewien, które inne systemy były popularne w tym czasie). Unix został niedawno stworzony; w ogóle nie miał żadnych konwencji.
grawitacja
2
@grawity MS-DOS 1.0 był systemem operacyjnym w stylu DEC wykonanym przez Digital Research i kupionym przez Microsoft, który wtedy działał w branży Uniksa . MS-DOS 2.0 i nowsze wersje dodały hierarchiczny system plików i niektóre konwencje uniksowe, w tym ..dla „up dir”; Microsoft reklamował te „zaawansowane funkcje uniksowe”.
Fred Foo
1
@grawity Ach tak, to Seattle Computer Products klonowało CP / M DRI. Przepraszam. Ale chodziło mi o to, że Microsoft był sklepem uniksowym na początku lat 80., a systemy DEC nie były jedynym punktem wyjścia. (Unix pierwotnie działał na sprzęcie DEC, ale myślę, że był bardziej pod wpływem CTSS i Multics niż DEC OS).
Fred Foo