web-dev-qa-db-ja.com

scpワイルドカードがzshで機能しない

Zshに切り替えましたが、正常に動作しています。奇妙なことに、*ワイルドカードを使用してscpを実行しようとすると、機能せず、bashにドロップする必要があります。以下の2番目のコマンドは正常に動作します。

なぜこれが起こるのか、それをどのように修正するのかについてのアイデアはありますか?

~/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/* .
18
ardochhigh

BashとZshは、失敗したグロビングに関して、デフォルトの動作が異なります。

Bashでは、グロブが何にも一致しない場合、使用した未変更のグロブが返されます。 zshでは、これは代わりにエラーをスローします。

したがって、それを引用する必要があります。

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

Bashと同じ動作をしたい場合は、次のようにすることができます

setopt nonomatch
24
Patrick

https://superuser.com/a/740728/97807 でこの回答を確認してください

Zpreztoユーザーの場合、コマンドの前にバックスラッシュを付けると機能します。

交換、

$ scp <command>

$ \scp <command>
2
Gaurav Mittal