Giải pháp rõ ràng tạo ra mã thoát là 1:
bash$ rm -rf .*
rm: cannot remove directory `.'
rm: cannot remove directory `..'
bash$ echo $?
1
Một giải pháp có thể sẽ bỏ qua dấu "." và thư mục ".." nhưng sẽ chỉ xóa các tệp có tên dài hơn 3 ký tự:
bash$ rm -f .??*
Vâng, nếu bạn không quá lo lắng về việc không thể loại bỏ. & .. vậy thì ai quan tâm? trừ khi bạn lo lắng về đầu ra xấu xí trong một kịch bản thì tôi nghĩ rằng giải pháp rõ ràng là ít gõ mà những người khác khá thẳng thắn.
—
Matt
Chỉ để bạn biết, .. và. không phải là tập tin. Chúng là tài liệu tham khảo cho các thư mục. . (chỉ một dấu chấm đơn) là thư mục hiện tại và .. (hai dấu chấm) là một liên kết đến thư mục tăng cấp. Ví dụ: nếu cd / home / user ,. bằng / home / user và .. is / home / Nói cách khác, bạn không thể xóa. và .. (.?)
—
phuzion
Cảm ơn vì bình luận Matt. Tôi thường sử dụng lệnh trong các tập lệnh với mỗi lần kiểm tra mã thoát lệnh (set -e). Trong những trường hợp này, một mã thoát chỉ định là cần thiết.
—
Yonatan Broza
Không có gì vốn có. và .. điều đó bảo vệ họ khỏi bị xóa bằng rm -rf. Đây chỉ là một cơ chế bảo vệ được thêm vào trong các biến thể hiện đại của rm.
—
kubanchot
Và luôn có rm -rf. * || đúng nếu bạn chỉ muốn thực hiện hành vi set -e cho một câu lệnh đó.
—
Domingo Ignacio Galdos