Tôi đọc nhiều câu hỏi và câu trả lời như thế này và câu hỏi này
Tôi biết các ký tự đại diện được mở rộng bằng shell trước khi chạy lệnh và chúng là một tính năng của shell. Ngoài ra các ký tự đại diện làm việc với các lệnh có thể chấp nhận nhiều đối số. Trong trường find . -name *.rb
hợp chúng tôi có nhiều hơn một tệp trong thư mục hiện tại find
sẽ gây ra lỗi cho chúng tôi vì find không thể chấp nhận nhiều đối số và các cách để giải quyết vấn đề này là:
find . -name "*.rb"
find . -name '*.rb'
find . -name \*.rb
Chúng tôi thoát khỏi dấu hoa thị và ngăn chặn sự mở rộng của vỏ nhưng ký tự đại diện là một tính năng của vỏ; Khi chúng ta thoát khỏi dấu hoa thị không biết ý nghĩa của nó và nó sẽ tìm thấy một tệp có tên *.rb
, vậy dấu hoa thị được mở rộng như thế nào trong trường hợp này?