Các rm
và rmdir
lệnh xóa tệp và thư mục trên Linux, macOS và các hệ điều hành giống Unix khác. Chúng tương tự như del
và deltree
lệnh trong Windows và DOS. Các lệnh này rất mạnh và có khá nhiều tùy chọn.
Điều quan trọng cần lưu ý là các tệp và thư mục bị xóa bằng cách sử dụng rm
và rmdir
không được chuyển vào Thùng rác. Chúng ngay lập tức bị xóa khỏi máy tính của bạn. Nếu bạn vô tình xóa tệp bằng các lệnh này, cách duy nhất bạn có thể khôi phục chúng là từ bản sao lưu có từ trước đó.
Cách xóa tệp bằng rm
Trường hợp đơn giản nhất là xóa một tệp trong thư mục hiện tại. Gõ rm
lệnh, một khoảng trắng, sau đó là tên của tệp bạn muốn xóa.
rm file_1.txt
Nếu tệp không có trong thư mục làm việc hiện tại, hãy cung cấp đường dẫn đến vị trí của tệp.
rm ./path/to/the/file/file_1.txt
Bạn có thể chuyển nhiều tên tệp cho rm
. Làm như vậy sẽ xóa tất cả các tệp được chỉ định.
rm file_2.txt file_3.txt
Các ký tự đại diện có thể được sử dụng để chọn các nhóm tệp sẽ bị xóa. Các *
đại diện cho nhiều ký tự và ?
đại diện cho một ký tự duy nhất. Lệnh này sẽ xóa tất cả các tệp hình ảnh png trong thư mục làm việc hiện tại.
rm *.png
Lệnh này sẽ xóa tất cả các tệp có phần mở rộng là một ký tự. Ví dụ: điều này sẽ xóa File.1 và File.2, nhưng không xóa File.12.
rm *.?
Nếu tệp được bảo vệ chống ghi, bạn sẽ được nhắc trước khi tệp bị xóa. Bạn phải trả lời bằng y
hoặc là n
và nhấn “Enter”.
Để giảm rủi ro khi sử dụng rm
với các ký tự đại diện sử dụng -i
tùy chọn. Điều này yêu cầu bạn xác nhận việc xóa từng tệp.
rm -i *.dat
Các -f
tùy chọn ngược lại với tương tác. Nó không nhắc xác nhận ngay cả khi tệp được chống ghi.
rm -f filename
Cách xóa thư mục với rm
Để xóa một thư mục trống, hãy sử dụng -d
(directory) tùy chọn. Bạn có thể sử dụng các ký tự đại diện (*
và ?
) trong tên thư mục giống như bạn có thể làm với tên tệp.
rm -d directory
Việc cung cấp nhiều hơn một tên thư mục sẽ xóa tất cả các thư mục trống được chỉ định.
rm -d directory1 directory2 /path/to/directory3
Để xóa các thư mục không trống, hãy sử dụng -r
(recursive) tùy chọn. Để rõ ràng hơn, điều này sẽ xóa các thư mục và tất cả các tệp và thư mục con chứa bên trong chúng.
rm -r directory1 directory2 directory3
Nếu một thư mục hoặc một tệp được bảo vệ chống ghi, bạn sẽ được nhắc xác nhận việc xóa. Để xóa các thư mục này, hãy sử dụng -r
(recursive) và -f
(force) các tùy chọn với nhau.
rm -rf directory
Ở đây cần phải có sự chăm sóc. Mắc lỗi với rm -rf
lệnh có thể gây mất dữ liệu hoặc trục trặc hệ thống. Nó nguy hiểm và bạn nên thận trọng. Để hiểu được cấu trúc thư mục và các tệp sẽ bị xóa bởi rm -rf
lệnh, sử dụng tree
.
Sử dụng apt-get
để cài đặt gói này vào hệ thống của bạn nếu bạn đang sử dụng Ubuntu hoặc một bản phân phối dựa trên Debian khác. Trên các bản Linux khác, hãy sử dụng công cụ quản lý gói của bản Linux của bạn.
sudo apt-get install tree
Chạy tree
lệnh tạo ra một sơ đồ dễ hiểu về cấu trúc thư mục và các tệp bên dưới thư mục mà nó được chạy.
tree
Bạn cũng có thể cung cấp một đường dẫn đến lệnh tree
khiến nó khởi động cây từ một thư mục khác trong hệ thống tệp.
tree path/to/directory
Các rm
lệnh cũng có --one-file-system, --no-preserve-root, --preserve-root
nhưng những tùy chọn này chỉ được đề xuất cho người dùng nâng cao. Nếu gặp lỗi, bạn có thể vô tình xóa tất cả các tệp hệ thống của mình.
Cách xóa thư mục với rmdir
Có một lệnh khác, được gọi là rmdir
, mà bạn có thể sử dụng để xóa các thư mục. Sự khác biệt giữa rm
và rmdir
đó là rmdir
chỉ có thể xóa các thư mục trống. Nó sẽ không bao giờ xóa các tập tin.
Trường hợp đơn giản nhất là xóa một thư mục trống. Như với rm
, bạn có thể chuyển nhiều tên thư mục tới rmdir
hoặc một đường dẫn đến một thư mục.
Xóa một thư mục trong thư mục hiện tại bằng cách chuyển tên của nó vào rmdir
:
rmdir directory
Xóa nhiều thư mục bằng cách chuyển một danh sách tên đến rmdir
:
rmdir directory1 directory2 directory3
Xóa một thư mục không có trong thư mục hiện tại bằng cách chỉ định đường dẫn đầy đủ đến thư mục đó:
rmdir /path/to/directory
Nếu bạn cố gắng xóa một thư mục không trống, rmdir
sẽ cung cấp cho bạn một thông báo lỗi. Trong ví dụ sau rmdir
, xóa clients
thư mục nhưng nó từ chối xóa projects
thư mục vì nó chứa các tệp. Các projects
thư mục được giữ nguyên như ban đầu và các tệp trong đó không bị ảnh hưởng.
Khi nào rmdir
đưa ra lỗi “Directory not empty“, nó ngừng xử lý các thư mục đã được chuyển đến nó trên dòng lệnh. Nếu bạn đã yêu cầu nó xóa bốn thư mục và thư mục đầu tiên có tệp trong đó, rmdir
sẽ cung cấp cho bạn thông báo lỗi và không làm gì thêm. Bạn có thể buộc nó bỏ qua những lỗi này với --ignore-fail-on-non-empty
tùy chọn để các thư mục khác được xử lý.
Trong ví dụ sau, hai thư mục đã được chuyển đến rmdir
, đó là work/reports
và work/quotes
. Các --ignore-fail-on-non-empty
tùy chọn đã được bao gồm trong lệnh. Các work/reports
thư mục có các tệp trong đó, vì vậy rmdir
không thể xóa nó. Các --ignore-fail-on-non-empty
lực lượng tùy chọn rmdir
để bỏ qua lỗi và chuyển sang thư mục tiếp theo nó cần xử lý, đó là work/quotes
. Đây là một thư mục trống và rmdir
xóa nó.
Đây là lệnh được sử dụng.
rmdir --ignore-fail-on-non-empty work/reports /work/quotes
Bạn có thể dùng -p
(parent) tùy chọn để xóa một thư mục và xóa cả các thư mục mẹ của nó. Thủ thuật này hoạt động vì rmdir
bắt đầu với thư mục đích và sau đó quay lại các bước đến trang chính. Thư mục đó bây giờ sẽ trống, vì vậy nó có thể bị xóa bằng rmdir
và quy trình lặp lại bước sao lưu đường dẫn được cung cấp cho rmdir
.
Trong ví dụ sau, lệnh được chuyển đến rmdir
Là:
rmdir -p work/invoices
Cả hai invoices
và work
thư mục bị xóa, theo yêu cầu.
Hy vọng rằng bài viết này đã giúp ích được cho bạn! Followeek chúc bạn một ngày mới tốt lành.