Co jest takiego specjalnego w katalogach, których nazwy zaczynają się od kropki?


25

Zastanawiałem się, jaka była różnica między tymi dwoma:

~/somedirectory/file.txt

i

~/.somedirectory/file.txt

Naprawdę trudno jest o to zapytać w Google, ponieważ nie wiedziałem, jak wyjaśnić, .kiedy nawet nie wiedziałem, jak to nazwać. Ale czy ktoś może opisać różnicę między włączeniem kropki a jej wykluczeniem?

Odpowiedzi:


18

Pod uniksopodobnego systemów, wszystkie katalogi zawierają dwa wpisy, .i.. , które stoją na samym katalogu i jego rodzica odpowiednio. Wpisy te zwykle nie są interesujące, więc lsje ukrywa, a symbole wieloznaczne powłoki, jak *ich nie uwzględniają. Mówiąc bardziej ogólnie, lssymbole wieloznaczne ukrywają wszystkie pliki, których nazwa zaczyna się od .; Jest to prosty sposób, aby wykluczyć .i ..i pozwalają użytkownikom ukryć inne pliki z ofert. Poza wykluczeniem z listy, w tych plikach nie ma nic specjalnego.

Unix przechowuje pliki konfiguracyjne dla poszczególnych użytkowników w katalogu osobistym użytkownika. Gdyby wszystkie pliki konfiguracyjne pojawiły się na listach plików, katalog domowy byłby zaśmiecony plikami, o których użytkownicy nie dbają każdego dnia. Tak więc pliki konfiguracyjne zawsze zaczynają się od .: zazwyczaj plik konfiguracyjny dla aplikacji Foo nazywa się coś w rodzaju .foolub .foorc. Z tego powodu pliki konfiguracyjne użytkownika są często nazywane plikami kropkowymi .


1
„Mówiąc ogólnie, lsi symbole wieloznaczne ukryć wszystkie pliki, których nazwa zaczyna się ., jest to prosty sposób, aby wykluczyć .i ..i pozwalają użytkownikom ukryć inne pliki z ofert”. Brzmi to następująco: koncepcja ukrywania plików / katalogów, które zaczynają się od kropki, faktycznie się ukrywała . ... Ale później ludzie zdali sobie sprawę, że możliwość ukrycia niektórych plików / katalogów ma w sobie wartość, i dlatego zaczęli umieszczać kropkę na początku plików, które chcą ukryć. Czy tak jest naprawdę, czy tylko spekulacje?
Utku

3
@Utku Faktycznie, to było na odwrót, a przynajmniej na początku: oryginalny deweloper przeznaczone tylko do ukrycia ., a ..jednak się pomylił . Możliwe jest jednak, że odradzono mu naprawę, ponieważ niektórzy użytkownicy uznali to za przydatne, a powodem, dla którego pliki konfiguracyjne użytkownika zaczynają się od tego .jest zdecydowanie, aby nie zaśmiecały danych wyjściowych lsw katalogu domowym. Myślę, że mamy tutaj pytanie na ten temat, ale nie mogę go znaleźć, być może zostało pomylone.
Gilles „SO- przestań być zły”

15

Katalogi zaczynające się od kropki .są uważane za ukryte. To znaczy:

  • ~/somedirectoryi ~/.somedirectorysą różnymi katalogami. To znaczy, jeśli ~/somedirectoryistniałeś, a ty tak mkdir ~/.somedirectory, nie powiedzie się File Existskomunikat.

  • lsPolecenia nie pokaże im katalogi, począwszy od.

  • ls -aPokaże oba katalogi


6
ls -A wyświetla pliki i katalogi zaczynające się od. ale nie obejmuje. i .. wpisy.
Julian

7

Aby uzyskać szczegółowe informacje na temat systemu plików Unix, sprawdź standard . W szczególności pliki kropkowe są używane do plików konfiguracyjnych w katalogu użytkowników, a jeśli program ma więcej niż jeden, powinien umieścić je w katalogu kropkowym.

Ukrywa pliki przed użytkownikiem, chyba że chce je znaleźć . W ten sposób nie przeszkadzają, a narzędzia nie psują się przypadkowo.


4

Prowadzenie "." w nazwie katalogu lub pliku powoduje ukrycie tego katalogu lub pliku podczas wykonywania lspolecenia.


1
Możesz wyświetlić wszystkie pliki zaczynające się od „.” z ls -a.
Sardathrion

1

Jak już wspomniano @DaveNay, ten okres spowoduje ukrycie pliku lub katalogu.

W przypadku drugiego niejawnego pytania możesz to znaleźć w Google:

Wystarczy wpisać w polu wyszukiwania: okres linux przed nazwą

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.