Tại sao một ký tự đại diện không được trích dẫn làm việc từ xa với scp?


24

Tôi đang gõ cái này trong Bash:

scp user@remote:~/dir/*.xml .

và nó hoạt động, nhận tất cả các tệp tạo ký tự đại diện trên máy chủ từ xa. Nhưng tại sao điều này làm việc? Tôi nghĩ rằng Bash mở rộng các biểu thức ký tự đại diện trong các đối số trước khi các đối số hiển thị với một công cụ như thế nào scp.

Câu trả lời:


31

Nếu không có tên tệp phù hợp, thì biểu thức ký tự đại diện trong bash sẽ tự mở rộng. Vì vậy, miễn là bạn không tạo bất kỳ tệp cục bộ nào có tên trùng khớp user@remote:~/dir/*.xml, lệnh của bạn sẽ hoạt động mà không cần trích dẫn.


9
Và cũng không cho phép nullglobmở rộng thành chuỗi trống
Eric Renouf

1
nullglobkhông làm cho mô hình mở rộng thành chuỗi trống; nó làm cho nó biến mất hoàn toàn. Đó là sự khác biệt giữa scp "" .(hai đối số, một trong số đó là chuỗi rỗng) và scp .(một đối số duy nhất và một lệnh gọi không hợp lệ scp).
chepner
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.