Tại sao đã '.' được chọn để đại diện cho thư mục hiện tại và '..' cho thư mục mẹ?


32

Sau khi đọc câu hỏi này Tại sao '~' được chọn để đại diện cho thư mục chính? , câu hỏi rõ ràng tiếp theo trong tâm trí của tôi là tại sao '.' và '..' đã được sử dụng để thể hiện thư mục hiện tại và thư mục mẹ.

Bây giờ có vẻ rất trực quan, nhưng lý do cụ thể nào?


10
Câu hỏi đó đã được hỏi và trả lời trên SO
Stéphane Chazelas

Câu trả lời:


16

Tôi nghi ngờ bạn sẽ tìm thấy một câu trả lời thú vị như câu hỏi dấu ngã!

Tôi đã không ở đó, nhưng .. giống như một dấu chấm lửng (...), có ý nghĩa trong bối cảnh như thế nào cd ../../../there. Ngoài ra, và đặc biệt là nhìn vào bàn phím thiết bị đầu cuối của bạn từ trường hợp dấu ngã, không có nhiều ký tự đủ điều kiện cho mục đích này. Bạn cũng không cần phải thay đổi .. Thật hoàn hảo.

Việc một tiền tố dấu chấm được sử dụng cho các tệp ẩn có thể là một lý do khác. Các tệp ẩn không được liệt kê theo mặc định bởi các công cụ như ls, vì vậy về cơ bản không phải là dự phòng .... Dự phòng theo nghĩa là không có điểm nào xem xét chúng cùng với các tệp khác - chúng chắc chắn hữu ích nếu không.

Hóa ra tôi có thể có nó ngược ... từ wikipedia :

Khái niệm tên tập tin đi trước một '.' nên được ẩn là kết quả của một lỗi phần mềm trong những ngày đầu của Unix. Khi đặc biệt '.' và các mục thư mục '..' đã được thêm vào hệ thống tập tin, người ta đã quyết định rằng lệnh ls không nên hiển thị chúng. Tuy nhiên, chương trình ls đã bị ghi nhầm để loại trừ bất kỳ tệp nào có tên bắt đầu bằng '.', Thay vì chỉ các tệp có tên '.' hoặc là '..'.

Điều này hóa ra lại hữu ích khi lập trình; kể từ khi hệ thống bao gồm. và .. để đáp ứng với readdir()các lệnh loại (và các khối vỏ), bỏ qua chúng và các tệp ẩn có thể được thực hiện theo cùng một cách.

Một ý kiến ​​khác về giá trị sử dụng đó là trong tài liệu tham khảo cho trích dẫn wikipedia. Tất nhiên, toàn bộ câu chuyện có thể là ngày tận thế ... hơi khó tin rằng, ví dụ, Dennis Ritchie cho rằng chỉ cần kiểm tra nhân vật đầu tiên sẽ ổn.

Tôi không đồng ý với vis của tác giả, sẽ tốt hơn nếu đặt các tệp cấu hình ẩn trong thư mục riêng của họ thay vì cung cấp cho họ một tiền tố phổ quát. Tiền tố linh hoạt hơn nhiều, cho phép các lệnh trong cây như .gitignore.htaccess. Chứng kiến ​​rằng các tệp thuộc loại đó cũng xuất hiện cùng nhau khi được sắp xếp theo từ vựng - vì vậy có lẽ đây là mục đích .


2

Chủ yếu là cùng một câu trả lời như @Panos 'trên stackoverflow :

Nói tóm lại, nó đã phát triển từ ddd( directory và directory directory) được tạo bởi người dùng bằng tay. dtrở thành dấu chấm , và những thứ đó ...được tạo ra đầu tiên bởi mkdirtiện ích (setuid sau khi liên kết các thư mục không còn được cho phép bởi người dùng đơn thuần) và sau đó bởi mkdir cuộc gọi hệ thống.

Trích từ một cuộc phỏng vấn với Ken Thompson (1989-09-06):

MSM : Nhưng đối với người dùng, nó sẽ trông giống như một hệ thống phân cấp của các thư mục.

Thompson : Không, người đầu tiên là một DG. Trong thực tế, nó thậm chí không phải là chu kỳ. Nếu bạn hiểu hệ thống tệp UNIX, thì đó là .... có danh sách I, là định nghĩa của tất cả các tệp trên hệ thống. Và sau đó một số tệp, là các thư mục chỉ chứa tên và số I. Không có gì trong đó ràng buộc nó với một cái cây. Vì vậy, nó không thực sự, không phân cấp.

MSM : Tôi hiểu rồi.

Thompson : Và chúng tôi đã không kiềm chế nó trên cây. Chúng tôi đã thử nghiệm với các cấu trúc liên kết khác nhau. Những gì chúng tôi đã kết thúc là biến thành cụ thể và buộc các cấu trúc liên kết mà trên thực tế là các cấu trúc liên kết đến từ quy ước từ hệ thống đó. ... Mỗi lần chúng tôi tạo một thư mục, theo quy ước, chúng tôi đặt nó vào một thư mục khác gọi là thư mục - thư mục , đó là dd. Tên của nó là dd và tất cả các thư mục người dùng và trên thực tế hầu hết các thư mục khác, người dùng duy trì hệ thống thư mục riêng của họ, đã quay lại dd và dd được rút ngắn thành dấu chấmvà dd là cho thư mục-thư mục. Đó là nơi trở lại nơi bạn có thể đến tất cả các thư mục khác trong hệ thống để duy trì bát mì spaghetti này. Vì vậy, ý tôi là tuff này dưới nhiều hình thức khác nhau, đó là quy ước nghiêm ngặt trong việc thực hiện DG này chỉ là một tập hợp các thư mục và tập tin ngẫu nhiên bị ép buộc vào một kiểu chữ mà chúng tôi duy trì. Khi chúng tôi bắt đầu viết những thứ như hệ thống tập tin kiểm tra các chương trình và công cụ, việc khóa các thư mục bát mì spaghetti và tìm thấy những thứ rời rạc, ý tôi là bạn sẽ không tiết lộ thứ gì đó và không bao giờ lấy lại được, vì bạn biết bạn đã mất nó. Những vấn đề đó trở nên gần như không thể vượt qua, và vì vậy trong lần thực hiện tiếp theo, chúng tôi đã buộc một kiểu chữ mạnh hơn thế.

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.