Làm thế nào để tìm kiếm một tập tin (định vị) hoặc tự động hoàn thành hoạt động?


8

Tôi là người dùng Windows và đến từ Windows với tất cả thời gian chờ lập chỉ mục và chờ đợi vĩnh viễn khi tìm kiếm tệp, tôi thấy thật ngạc nhiên khi định vị hoạt động nhanh hoặc tự động hoàn thành (mà tôi biết) hoạt động trong linux.

Có bất kỳ lập chỉ mục đang được thực hiện trong nền hoặc làm thế nào đạt được điều này? Tôi vẫn có một bản cài đặt khá sạch sẽ, vì vậy có thể điều này rất tệ với thời gian, nhưng trong Windows thời điểm bạn muốn tìm kiếm trên một thư mục không được lập chỉ mục, bạn phải chờ vài giây.

Câu trả lời:


18

Tôi thấy thật ngạc nhiên khi định vị hoạt động nhanh hoặc tự động hoàn thành (mà tôi biết) hoạt động trong linux. ... Có bất kỳ lập chỉ mục đang được thực hiện trong nền hoặc làm thế nào đạt được điều này?

Đây thực sự là hai câu hỏi hoàn toàn khác biệt.

locatesử dụng một chỉ mục (slocate lưu nó vào /var/lib/slocate/), được cập nhật bởi một croncông việc hàng đêm . Công việc hàng đêm này thường chạy vào khoảng 1 hoặc 2 giờ sáng giờ địa phương và quét toàn bộ hệ thống của bạn (bao gồm tất cả các ổ đĩa được kết nối). Chỉ số kết quả chỉ đơn giản là một danh sách tên tệp.

Tự động hoàn thành được xử lý bởi vỏ của bạn. Hầu hết các hệ thống sử dụng bash, bash-completiontập hợp các tập lệnh quản lý cách thức hoạt động của nó. ( zshcó một bộ sưu tập có tên tương tự và hầu hết các shell khác đều có sẵn một số hình thức hoàn thành.) Khi Tabđược nhấn, shell sẽ chạy một tập lệnh quyết định, dựa trên những gì bạn đã nhập, chính xác, cần gì được hoàn thành Tập lệnh sau đó tạo một danh sách các hoàn thành có thể, có thể hoặc không phải là danh sách các tệp trong thư mục hiện tại hoặc danh sách các tệp thực thi trong của bạn $PATH. Các locatelệnh thường không sử dụng cho việc này.


1
Cảm ơn! Tôi hiểu rồi, vậy nó không "kỳ diệu" lắm đâu :)
oli206

greyfade đã hủy hoại ma thuật mãi mãi -_-
Michael Mrozek

@Michael Mrozek: Xin lỗi. :(
greyfade

Shell chạy một đoạn script nghe có vẻ không chính xác 100%, khi thực hiện shell mọi người không nên nhầm lẫn khi nghĩ rằng họ nên viết các script bên ngoài. Nó chỉ đơn giản là một thói quen trong chính mã, nó có thể hoặc không truy cập các tệp bên ngoài để thuận tiện cho cấu hình, nhưng hoàn thành tích hợp đơn giản hoạt động tốt.
Aki

1
@NabinKhadka Vì câu trả lời của tôi đã được viết, tôi nghĩ Ubuntu đã đổi sang một locatedịch vụ khác . Tôi không biết cái nào - tôi không sử dụng Ubuntu - nhưng xuất hiện trong tâm trí. Kiểm tra /etc/updatedb.conf. Nó có thể có đường dẫn mặc định cho bất kỳ locatecông cụ nào bạn có.
greyfade

5

Thông thường, định vị sử dụng một chỉ mục được tạo một lần một ngày thông qua một cron-job (ví dụ /etc/cron.daily/mlocate trên hệ thống của tôi). Nó không có gì lạ mắt, về cơ bản là một hệ thống tập tin hoàn chỉnh đi qua với một số tối ưu hóa và xây dựng cấu trúc dữ liệu chỉ mục.

Shell có thể sử dụng một số bộ nhớ đệm nội bộ để hoàn thành lệnh, nhưng không sử dụng tệp chỉ mục chung. Bên cạnh đó, thông thường, các hạt nhân Unix duy trì bộ đệm-bộ đệm, tức là \ chúng lưu thông tin thư mục tệp được sử dụng bởi danh sách thư mục, v.v. trong bộ nhớ (bao gồm cả việc thống kê các tệp không tồn tại - còn được gọi là bộ đệm ẩ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.