Tại sao xóa khỏi dòng lệnh mất ít thời gian hơn đáng kể so với GUI?


26

Một cái gì đó tôi tự hỏi khi tôi đang xóa hàng tá hình ảnh từ máy tính của mình: Với một rm -rflệnh nhanh chóng về nội dung của thư mục, tất cả các hình ảnh đã biến mất trong tích tắc. Khi tôi kéo hàng tá hình ảnh tương tự vào thùng rác / lệnh tái chế, đôi khi phải mất 10 giây trở lên.

Bây giờ tôi chắc chắn một số phần mềm đến từ phần trên của GUI và như vậy, và một số phần có thể là tệp vẫn "tồn tại" ở dạng nào đó nếu được đưa vào thùng rác, nhưng có gì khác không chiếm một khoảng thời gian lớn như vậy ? Có phải "rm" và "xóa" chỉ là những lệnh khác nhau cơ bản như vậy nên tôi đang cố so sánh táo và cam?


1
Điều đó cũng đúng trên các cửa sổ, có lẽ vì những lý do tương tự được đưa ra dưới đây.
Chris H

Câu trả lời:


38

Như bạn đã nhận thấy, GUI thực hiện nhiều hơn là chỉ "xóa" các tệp.

$ rm -rf 

chỉ cần đệ quy vào các thư mục xóa các tệp và thư mục mà nó tìm thấy trong đó.

GUI trước tiên quét toàn bộ cây để tìm ra những gì có ở đó (vì vậy nó biết nó phải làm bao nhiêu để vẽ thanh đẹp), sau đó nó lặp lại qua cây một lần nữa để di chuyển các tệp từ vị trí hiện tại đến vị trí của thùng rác có thể tập tin cho GUI cụ thể của bạn. Việc di chuyển đó mất nhiều thời gian hơn, vì trước tiên nó phải tạo một tên tệp duy nhất mới, liên kết tệp trong thư mục thùng rác, sau đó hủy liên kết tệp khỏi thư mục hiện tại và cập nhật chỉ mục nơi các tệp đến từ đó để chúng có thể "hoàn tác" - nhiều hoạt động thay vì chỉ một.

Chẳng hạn, trên Gnome 3, các tệp được chuyển đến vị trí:

~/.local/share/Trash/files/<filename>[.<version>]

filenameTên tệp gốc ở đâu và versionlà số phiên bản tăng dần để đảm bảo tệp là duy nhất (phiên bản tệp đầu tiên không có số phiên bản). Liên kết với đó là một .trashinfotập tin được lưu trữ trong thư mục:

~/.local/share/Trash/info/<filename>[.<version>].trashinfo

Tệp này chứa đường dẫn gốc của tệp trước khi xóa, cũng như ngày và giờ tệp này đã bị xóa.

Tất cả các thao tác bổ sung này, phải được thực hiện trên từng tệp riêng lẻ trong cây bạn đang xóa, đảm bảo rằng bạn có thể khôi phục bất kỳ tệp nào từ thùng rác và bạn có thể xóa các tệp có cùng tên từ cùng một vị trí và vẫn khôi phục các phiên bản trước đó.

Không ai trong số đó được thực hiện với một đơn giản rmhoặc mvlệnh.


1
Hey, ai đã xóa tất cả các ý kiến? Chúng tôi chỉ đang tìm ra rằng câu trả lời này có thể sai. Ít nhất là trash-clidường như không làm điều đó một cách đệ quy. Khi xóa một thư mục, Gnome 3 có thực sự đặt một .trashinfotệp đệ quy cho mỗi thư mục con và tất cả các tệp chứa không?
mb21

Đoán nó có quá nhiều cho họ! ;-)
Jordan Plahn
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.