Ví dụ: trong My Documents
, có các thư mục sau:
.ssh
.subversion
Đây có phải là một số loại quy ước đặt tên mà tôi không biết?
Ví dụ: trong My Documents
, có các thư mục sau:
.ssh
.subversion
Đây có phải là một số loại quy ước đặt tên mà tôi không biết?
Câu trả lời:
Quy ước đặt tên này xuất phát từ các hệ điều hành giống Unix (như Linux hoặc OS X), trong đó nó có nghĩa là một tệp hoặc thư mục "ẩn". Nó hoạt động ở bất cứ đâu, nhưng nó chính sử dụng là các file cấu hình ẩn trong thư mục chính của bạn (ví dụ ~/.cache/
hoặc ~/.plan
- chúng thường được gọi là "chấm").
Theo một cách nào đó, Dotfiles có thể được gọi là Unix truyền thống tương đương với thư mục "AppData" trên Windows. (Nhiều chương trình Linux đang được thay đổi để tuân theo đặc tả thư mục cơ sở XDG , chuyển cấu hình của chúng sang ~/.config/
và dữ liệu khác sang ~/.cache/
& ~/.local/share/
- điều này làm cho nó giống với một chút AppData\Roaming
và AppData\Local
.)
Bạn có những thư mục .ssh
và .subversion
thư mục này trên Windows vì bạn đã sử dụng một số chương trình - cụ thể là OpenSSH và Subversion - đã được chuyển sang sử dụng API hệ thống Windows thay vì POSIX, nhưng chưa được điều chỉnh cho một số quy ước khác của Windows.
Đôi khi sự thích ứng này bị bỏ qua một cách có chủ ý, để làm cho cuộc sống dễ dàng hơn đối với những người sử dụng các môi trường giống như Unix như Cygwin trên các hệ thống Windows của họ. Ví dụ, Cygwin cài đặt bộ công cụ tiêu chuẩn giống như Unix ls
, bỏ qua cờ "ẩn" của Windows và chỉ tôn vinh các .dotfile
tên. Ngoài ra, sử dụng cùng một vị trí (ví dụ <home>/.ssh
) có thể giúp đồng bộ hóa cấu hình giữa các máy tính Windows và Linux / BSD / OSX dễ dàng hơn.
Ngoài ra: Thông thường các tệp này nằm trong người dùng thư mục chính , ví dụ như trên Linux, hoặc trên Windows 7 trở lên. Rất hiếm khi chúng được đưa vào các thư mục con "Tài liệu" hoặc "Tài liệu của tôi"./home/name/.ssh
C:\Users\name\.ssh
Như Rob Pike viết trên Google+ , đây là một tính năng tình cờ:
Từ lâu, khi thiết kế hệ thống tệp Unix đã được thực hiện, các mục
.
và..
xuất hiện, để giúp điều hướng dễ dàng hơn. Tôi không chắc nhưng tôi tin rằng..
đã viết lại trong Phiên bản 2, khi hệ thống tập tin trở thành phân cấp (nó có cấu trúc rất khác từ rất sớm). Tuy nhiên, khi một người gõ ls, các tệp này xuất hiện, do đó, Ken hoặc Dennis đã thêm một bài kiểm tra đơn giản vào chương trình. Sau đó, nó đã ở trong trình biên dịch chương trình, nhưng mã được đề cập tương đương với mã như thế này:
if (name[0] == '.') continue;
Tuyên bố này ngắn hơn một chút so với những gì nó cần phải có, đó là
if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;
nhưng này, nó thật dễ dàng
Hai điều kết quả.
Đầu tiên, một tiền lệ xấu đã được thiết lập. Rất nhiều lập trình viên lười biếng khác đã giới thiệu các lỗi bằng cách đơn giản hóa tương tự. Các tập tin thực tế bắt đầu bằng dấu chấm thường được bỏ qua khi chúng cần được tính.
Thứ hai, và tệ hơn nhiều, ý tưởng về một tập tin "ẩn" hoặc "dấu chấm" đã được tạo ra. Kết quả là, nhiều lập trình viên lười biếng hơn bắt đầu thả các tập tin vào thư mục nhà của mọi người. Tôi không có nhiều thứ được cài đặt trên máy tôi đang sử dụng để nhập cái này, nhưng thư mục nhà của tôi có khoảng một trăm tệp chấm và tôi thậm chí không biết hầu hết chúng là gì hoặc liệu chúng có còn cần thiết không . Mỗi đánh giá tên tệp đi qua thư mục nhà của tôi bị làm chậm bởi bùn tích lũy này.
ls
có -a
tùy chọn liệt kê tất cả các tệp.
LOGIN.COM
hoặc DECW$MAIL.DAT
trong thư mục nhà của bạn . (Tôi không chắc những hệ thống nào khác phổ biến tại thời điểm đó.) Unix vừa mới được tạo ra; nó không có bất kỳ quy ước nào cả.
..
"up dir"; Microsoft thực sự đã quảng cáo những "tính năng Unix tiên tiến" này.