Có gì đặc biệt về các thư mục có tên bắt đầu bằng dấu chấm?


25

Tôi đã tự hỏi sự khác biệt giữa hai là gì:

~/somedirectory/file.txt

~/.somedirectory/file.txt

Thật sự rất khó để hỏi điều này trên Google vì tôi không biết phải giải thích thế .nào khi tôi thậm chí không biết nên gọi nó là gì. Nhưng ai đó có thể mô tả sự khác biệt giữa bao gồm dấu chấm và loại trừ nó?

Câu trả lời:


18

Trong các hệ thống giống như unix, tất cả các thư mục chứa hai mục nhập ... tương ứng với chính thư mục đó. Các mục này hầu như không thú vị trong hầu hết thời gian, vì vậy hãy lsẩn chúng và các ký tự đại diện như *không bao gồm chúng. Nói chung, lsvà ký tự đại diện ẩn tất cả các tệp có tên bắt đầu bằng a .; đây là một cách đơn giản để loại trừ ...và cho phép người dùng ẩn các tập tin khác từ danh sách. Ngoài việc bị loại khỏi danh sách, không có gì đặc biệt về các tệp này.

Unix lưu trữ các tệp cấu hình trên mỗi người dùng trong thư mục chính của người dùng. Nếu tất cả các tệp cấu hình xuất hiện trong danh sách tệp, thư mục chính sẽ bị lộn xộn với các tệp mà người dùng không quan tâm hàng ngày. Vì vậy, các tệp cấu hình luôn bắt đầu bằng .: thông thường, tệp cấu hình cho ứng dụng Foo được gọi là một cái gì đó như .foohoặc .foorc. Vì lý do này, các tệp cấu hình người dùng thường được gọi là các tệp chấm .


1
"Tổng quát hơn, lsvà các kí hiệu ẩn tất cả các file có tên bắt đầu với một ., đây là một cách đơn giản để loại trừ ...và cho phép người dùng ẩn các tập tin khác từ danh sách." Điều này nghe có vẻ như sau: Khái niệm ẩn tập tin / thư mục bắt đầu bằng dấu chấm đã thực sự xuất hiện để ẩn . ... Nhưng sau đó, mọi người nhận ra rằng việc có thể ẩn một số tệp / thư mục có giá trị trong đó và do đó, họ bắt đầu đặt dấu chấm ở đầu tệp mà họ muốn ẩn. Đó thực sự là trường hợp hay chỉ là một suy đoán?
Utku

3
@Utku Trên thực tế, đó là cách khác, ít nhất là lúc đầu: nhà phát triển ban đầu chỉ có ý định che giấu ...đã phạm sai lầm . Tuy nhiên, có thể anh ta đã không được phép sửa nó vì một số người dùng thấy nó hữu ích và lý do tại sao các tệp cấu hình người dùng bắt đầu .chắc chắn là do họ không làm lộn xộn đầu ra lstrong thư mục chính. Tôi nghĩ rằng chúng tôi có một câu hỏi về điều này ở đây nhưng tôi không thể tìm thấy nó, nó có thể đã bị nhầm lẫn.
Gilles 'SO- ngừng trở nên xấu xa'

15

Thư mục bắt đầu bằng một dấu chấm .được coi là bị ẩn. Điêu đo co nghia la:

  • ~/somedirectory~/.somedirectorylà các thư mục khác nhau. Đó là nếu ~/somedirectorytồn tại và bạn đã làm mkdir ~/.somedirectory, bạn sẽ không thất bại với một File Existstin nhắn.

  • Các lslệnh sẽ không hiển thị những thư mục bắt đầu với.

  • Các ls -asẽ hiển thị cả danh bạ


6
ls -A hiển thị các tập tin và thư mục bắt đầu bằng. nhưng không bao gồm. và .. mục.
Julian

7

Để biết chi tiết về hệ thống tệp Unix, hãy kiểm tra tiêu chuẩn . Cụ thể, các tệp chấm được sử dụng cho các tệp cấu hình trong thư mục người dùng và nếu một chương trình có nhiều hơn một, thì nên đặt chúng vào một thư mục dấu chấm.

Điều này ẩn các tập tin từ người dùng, trừ khi họ muốn tìm thấy chúng . Bằng cách đó, họ không cản trở và các công cụ không vô tình làm phiền họ.


4

Sự lãnh đạo "." trong một thư mục hoặc tên tệp làm cho thư mục hoặc tệp đó bị ẩn khi thực hiện một lslệnh.


1
Bạn có thể xem tất cả các tệp bắt đầu bằng "." với ls -a.
Sardathrion - Phục hồi Monica

1

Giống như @DaveNay đã nói, khoảng thời gian đó sẽ khiến tệp hoặc thư mục bị ẩn.

Đối với câu hỏi ngầm thứ hai của bạn, đây là cách bạn tìm kiếm câu hỏi đó trong google:

Chỉ cần gõ vào hộp tìm kiếm: giai đoạn linux trước tên

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.