scp wildcard không hoạt động trong zsh


17

Tôi đã chuyển sang zsh, và nó đang hoạt động tốt. Một điều kỳ lạ, khi tôi cố gắng scp bằng * ký tự đại diện, nó không hoạt động và tôi phải rơi vào bash. Lệnh thứ hai dưới đây hoạt động tốt.

Bất kỳ ý tưởng về lý do tại sao điều này sẽ được và làm thế nào để khắc phục nó?

~/dmp  16:06:10
$ scp abc@123:/home/se/exports/201405091107/* .
zsh: no matches found: root@uf3:/home/se/exports/201405091107/*

~/dmp  16:06:53
$ bash 
sean@seanlaptop:~/dmp$ scp abc@123:/home/se/exports/201405091107/* .

Câu trả lời:


23

Bash và Zsh có hành vi mặc định khác nhau khi nói đến việc toàn cầu hóa thất bại.

Trong bash, nếu một quả cầu không khớp với bất cứ thứ gì, bạn sẽ lấy lại quả cầu chưa được sửa đổi mà bạn đã sử dụng. Trong zsh điều này ném một lỗi thay thế.

Vì vậy, bạn cần phải trích dẫn nó.

scp 'abc@123:/home/se/exports/201405091107/*' .

Nếu bạn muốn có hành vi tương tự như bash, bạn có thể làm như sau

setopt nonomatch

2

Kiểm tra câu trả lời này tại /superuser//a/740728/978073

Đối với người dùng zprezto, việc chuẩn bị lệnh với dấu gạch chéo ngược hoạt động!

Thay thế,

$ scp <command>

với

$ \scp <command>
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.