11 ví dụ về lệnh rm cho Linux

Tác giả sysadmin, T.M.Hai 22, 2022, 04:06:01 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

11 ví dụ về lệnh rm cho Linux


Lệnh 'rm' được sử dụng để xóa các tệp và thư mục, rm xuất phát từ gói GNU Coreutils và sẽ có sẵn theo mặc định trong các hệ điều hành dựa trên Unix/Linux.

Đến cuối hướng dẫn này, bạn sẽ biết cách sử dụng rm để xóa tệp và thư mục trong Linux bằng cách làm theo các ví dụ thực tế này.

1. Xóa tệp

Với lệnh rm, chúng tôi có thể chỉ định tệp mà chúng tôi muốn xóa, theo mặc định, chúng tôi sẽ được nhắc xác nhận rằng chúng tôi thực sự muốn xóa tệp bằng 'y' nếu có hoặc 'n' nếu không.

Mã nguồn [Chọn]
[ root@centos7 test]# rm test.txt
rm: remove regular file 'test.txt'?

2. Buộc loại bỏ

Thay vì được nhắc xác nhận, chúng tôi có thể chỉ định tùy chọn -f để buộc xóa mà không cần thêm bất kỳ lời nhắc nào.

Mã nguồn [Chọn]
[ root@centos7 test]# rm -f test.txt
3. Xóa đệ quy

Chúng ta có thể xóa đệ quy các tệp và thư mục trong một thư mục đã chỉ định bằng tùy chọn -r.

Trước tiên, chúng ta sẽ tạo thư mục dir1, sau đó chứa thư mục con dir2 và sau đó là dir3 trong đó, cũng như một số tệp thử nghiệm trống trong mỗi thư mục.

Mã nguồn [Chọn]
[ root@centos7 test]# mkdir -p dir1/dir2/dir3
[ root@centos7 test]# touch dir1/file dir1/dir2/file dir1/dir2/dir3/file

Sau đó, chúng tôi chạy rm với tùy chọn -r và cũng sử dụng tùy chọn -f đã thảo luận trước đó để chúng tôi không được nhắc cho từng tệp và thư mục.

Mã nguồn [Chọn]
[root@centos7 test]# rm -rf dir1/
Điều này cực kỳ mạnh mẽ và có khả năng gây nguy hiểm, hãy cẩn thận khi sử dụng rm với tùy chọn -rf và luôn kiểm tra kỹ xem bạn đã chỉ định đúng thư mục cần xóa chưa. Tôi thực sự khuyên bạn nên luôn chỉ định đường dẫn đầy đủ mà bạn muốn xóa thay vì sử dụng các đường dẫn tương đối để tránh nhầm lẫn.

4. Xóa thư mục

Theo mặc định, lệnh rm không xóa các thư mục trừ khi chúng tôi cũng chỉ định tùy chọn -d, tuy nhiên, điều này sẽ chỉ hoạt động đối với các thư mục trống.

Mã nguồn [Chọn]
[ root@centos7 test]# mkdir dir
[ root@centos7 test]# rm -d dir/
rm: remove directory 'dir/'?

Nếu thư mục có tệp hoặc thư mục con bên trong, chúng tôi sẽ cần xóa thư mục bằng tùy chọn -r để xóa mọi thứ theo cách đệ quy. Trong ví dụ sau, chúng tôi tạo lại thư mục 'dir' và tạo một tệp trống bên trong bằng lệnh touch. Chúng tôi có thể thấy rằng rm -d không thành công vì thư mục không trống, vì vậy chúng tôi sử dụng -r để xác nhận rằng chúng tôi muốn vào thư mục, xóa nội dung bên trong và cuối cùng xóa chính thư mục đó.

Mã nguồn [Chọn]
[ root@centos7 test]# mkdir dir
[ root@centos7 test]# touch dir/test-file
[ root@centos7 test]# rm -d dir/
rm: cannot remove 'dir/': Directory not empty
[root@centos7 test]# rm -r dir/
rm: descend into directory 'dir/'?
rm: remove regular empty file 'dir/test-file'?
rm: remove directory 'dir/'?

5. Nhắc nhở để loại bỏ

Như chúng tôi đã lưu ý trước đây, theo mặc định rm sẽ nhắc chúng tôi xác nhận trước khi tiếp tục, điều này có thể được kích hoạt bằng tùy chọn -i. Lý do mà -i được sử dụng theo mặc định là vì nó được tự động đặt làm bí danh.

Mã nguồn [Chọn]
[ root@centos7 ~]# alias | grep rm
alias rm='rm -i'

Nếu muốn, chúng tôi có thể xóa tùy chọn -i khỏi bí danh, đây là phần thực sự nhắc và khiến chúng tôi xác nhận, tùy chọn này theo mặc định là một biện pháp an toàn để giúp tránh vô tình xóa.

6. Nhắc một lần

Theo cách tương tự với -i, chúng ta có thể sử dụng tùy chọn -I để nhắc một lần trước khi xóa hơn 3 tệp được coi là ít xâm phạm hơn -i nhưng vẫn cung cấp một số biện pháp bảo vệ chống lại hầu hết các lỗi.

    Trong ví dụ này, chúng tôi xóa 3 thư mục và 3 tệp nhưng chỉ được nhắc một lần, đây là một lựa chọn hay giữa tùy chọn xác nhận mọi thứ bằng -i và không có gì được xác nhận bằng -f.

Mã nguồn [Chọn]
[ root@centos7 test]# mkdir -p dir1/dir2/dir3
[ root@centos7 test]# touch dir1/file dir1/dir2/file dir1/dir2/dir3/file
[ root@centos7 test]# rm -rI dir1/
rm: remove 1 argument recursively?

7. Bỏ qua các hệ thống tệp khác

Tùy chọn --one-file-system được sử dụng khi xóa đệ quy và sẽ bỏ qua bất kỳ thư mục nào trên hệ thống tệp khác với thư mục được chỉ định làm đối số. Điều này có thể rất hữu ích nếu chúng ta có các hệ thống tệp khác nhau, chẳng hạn như đĩa thứ cấp hoặc giá treo NFS được gắn ở đâu đó trong hệ thống của chúng ta, theo mặc định, 'rm -rf /' sẽ đi xuống các hệ thống này và cũng xóa các nội dung đó, tùy chọn này sẽ ngăn chặn điều này.

Trong ví dụ này, chúng tôi đã thêm một đĩa cứng ảo mới /dev/sdb1 và gắn nó vào /root/test/mount. Khi chúng tôi cố gắng xóa mọi thứ trong /root/test, thư mục mount sẽ bị bỏ qua vì đây là một hệ thống tệp riêng biệt.

Mã nguồn [Chọn]
[root@centos7 test]# mount /dev/sdb1 mount/
[root@centos7 test]# rm -rf --one-file-system /root/test/
rm: skipping '/root/test/mount', since it's on a different device

8. Bảo quản thư mục gốc

Theo mặc định, rm được chạy với tùy chọn --preserve-root sẽ không xóa thư mục '/', điều này có thể giúp ngăn việc vô tình xóa hệ thống tệp.

Mã nguồn [Chọn]
[root@centos7 test]# rm -rf /
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe

Chúng tôi có thể vô hiệu hóa điều này bằng tùy chọn --no-preserve-root không xử lý '/' theo cách đặc biệt, tất nhiên nếu chúng tôi làm điều này và xóa nội dung của '/' thì về cơ bản bạn sẽ phá hủy hệ thống của mình, vì vậy không phải vậy một ý tưởng tốt để làm điều này trừ khi bạn muốn dọn rác hệ thống của mình.

9. Đầu ra dài dòng

Với tùy chọn -v, chúng ta có thể in ra thông tin dài dòng bổ sung bao gồm danh sách mọi thứ đã bị xóa. Trong ví dụ này, trước tiên chúng ta tạo một thư mục với một số thư mục con chứa các tệp thử nghiệm trống và xóa rất nhiều, chúng ta có thể thấy rằng một danh sách những gì đã bị xóa được in ra.

Mã nguồn [Chọn]
[root@centos7 test]# mkdir -p dir1/dir2/dir3
[root@centos7 test]# touch dir1/file dir1/dir2/file dir1/dir2/dir3/file
[root@centos7 test]# rm -rfv dir1/
removed 'dir1/dir2/dir3/file'
removed directory: 'dir1/dir2/dir3'
removed 'dir1/dir2/file'
removed directory: 'dir1/dir2'
removed 'dir1/file'
removed directory: 'dir1/'

10. Hiển thị phiên bản

Chúng tôi có thể hiển thị phiên bản rm được cài đặt với tùy chọn --version.

Mã nguồn [Chọn]
[root@centos7 ~]# rm --version
rm (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, David MacKenzie, Richard M. Stallman,
and Jim Meyering.
             
Mã nguồn [Chọn]
11. Hiển thị trợ giúp
Chúng tôi có thể hiển thị thông tin trợ giúp hữu ích nếu chúng tôi cần thêm chi tiết về bất kỳ thông tin nào trong số này với tùy chọn --help. Lưu ý rằng đầu ra đầy đủ của lệnh không được hiển thị cho ngắn gọn.

Mã nguồn [Chọn]
[ root@centos7 ~]# rm --help
Usage: rm [OPTION]... FILE...

Các ví dụ thực tế ở đây đã chỉ ra nhiều cách mà lệnh rm có thể được sử dụng để xóa tệp và thư mục trong Linux.