scp Wildcard funktioniert nicht in zsh

16

Ich habe auf zsh umgestellt, und es funktioniert gut. Eine seltsame Sache: Wenn ich versuche, mit einem Platzhalter * zu scpen, funktioniert das nicht und ich muss mich in die Bash stürzen. Der zweite Befehl unten funktioniert einwandfrei.

Irgendwelche Ideen, warum das so ist und wie man es behebt?

~/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/* .
ardochhoch
quelle

Antworten:

23

Bash und Zsh haben ein anderes Standardverhalten, wenn es um fehlgeschlagenes Globbing geht.

Wenn ein Glob in der Bash nichts enthält, erhalten Sie den nicht modifizierten Glob zurück, den Sie verwendet haben. In zsh löst dies stattdessen einen Fehler aus.

Also musst du es zitieren.

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

Wenn Sie dasselbe Verhalten wie bash erzielen möchten, können Sie Folgendes tun

setopt nonomatch
Patrick
quelle
2

Überprüfen Sie diese Antwort unter /superuser//a/740728/978073

Für Benutzer von zprezto funktioniert das Voranstellen des Befehls mit Backslash!

Ersetzen,

$ scp <command>

mit

$ \scp <command>
Gaurav Mittal
quelle