symbol wieloznaczny scp nie działa w Zsh

17

Zmieniłem na zsh i działa dobrze. Jedna dziwna rzecz, gdy próbuję scpować z * symbolem wieloznacznym, to nie działa i muszę wpaść w bash. Drugie polecenie poniżej działa dobrze.

Wszelkie pomysły na to, dlaczego tak jest i jak to naprawić?

~/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/* .
ardochhigh
źródło

Odpowiedzi:

23

Bash i Zsh mają różne domyślne zachowanie, jeśli chodzi o nieudane globowanie.

W skrócie, jeśli glob nie pasuje do niczego, odzyskujesz niezmodyfikowany glob, którego użyłeś. W Zsh powoduje to błąd.

Dlatego musisz to zacytować.

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

Jeśli chcesz uzyskać takie samo zachowanie jak bash, możesz wykonać następujące czynności

setopt nonomatch
Patrick
źródło
2

Sprawdź tę odpowiedź na /superuser//a/740728/978073

W przypadku użytkowników zprezto, poprzedzanie polecenia odwrotnym ukośnikiem działa!

Zastąpić,

$ scp <command>

z

$ \scp <command>
Gaurav Mittal
źródło