Vì tôi nghĩ câu hỏi này liên quan nhiều hơn đến những gì * làm (chứ không phải rm), chúng ta hãy thử một cách tiếp cận khác.
Nếu bạn không chắc chắn * làm gì, trước tiên bạn có thể "kiểm tra" bằng cách sử dụng lệnh vô hại như echo. Trước khi bạn chạy cái này, hãy thử đoán xem chúng sẽ hiển thị gì nếu bạn chạy chúng trong thư mục nhà của bạn.
echo *
echo .*
Nhưng trước tiên, hãy tạo ra một sân chơi để chúng ta có thể chơi với các ngôi sao và xem những gì chúng ta kết thúc.
mkdir ~/star_test/
cd ~/star_test/
>.file1
>file2
Bây giờ trong thư mục này, chúng tôi có điều này:
cj@zap:~/star_test$ ls -1a
.
..
.file1
file2
Bây giờ hãy chú ý những gì * mở rộng thành bằng cách sử dụng lệnh echo:
cj@zap:~/star_test$ echo *
file2
cj@zap:~/star_test$ echo .*
. .. .file1
Vì vậy, hãy xem những gì xảy ra với lệnh rm
cj@zap:~/star_test$ rm -rf *
cj@zap:~/star_test$ ls -1a
.
..
.file1
Như bạn thấy, anh ta chỉ xóa file2, vì * chỉ mở rộng thành file2. Nếu bạn gõ rm -rf. * Sẽ giống như viết
rm -rf . .. .file1
Và thành thật mà nói, điều đó không vui vẻ gì;)
Hy vọng điều này làm rõ phần * của câu hỏi của bạn.
Cập nhật:
Tuy nhiên, như Ankur Goel chỉ ra rằng có một số loại bảo vệ được tích hợp vào rm (loại khác thường đối với các lệnh shell :)
Hãy tạo một sân chơi mới:
cd ~/star_test/
mkdir -p test1/test2/test3
sudo chown root.root test1
cd test1/test2/test3/
>.file1
>file2
Vì vậy, bây giờ chúng ta có lại điều này, nhưng với test1 được sở hữu bởi root là sự bảo vệ nếu rm bắt đầu trở nên điên loạn.
cj@zap:~/star_test/test1/test2/test3$ ls -a
. .. file2 .file1
cj@zap:~/star_test/test1/test2/test3$ echo .*
. .. .file1
Vì vậy, hãy loại bỏ mọi thứ:
cj@zap:~/star_test/test1/test2/test3$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
cj@zap:~/star_test/test1/test2/test3$ ls -a
. .. file2
Và có vẻ như rm đã không loại bỏ. và .. ngay cả khi chúng tôi nói với anh ấy !!!
Vì vậy, sau câu trả lời dài này, nó trở nên an toàn để loại bỏ mọi thứ trong một thư mục với điều này:
rm -rf * .*
Nhưng tôi sẽ sử dụng điều này một cách cẩn thận, vì tôi không chắc tất cả các triển khai của rm hành xử như thế này!
rm -rf ./*
và chỉ định rõ ràng thư mục hiện tại ... nhưng dường như Ankur nói nó không thành vấn đề.