
zshに切り替えましたが、うまくいきます。 1つの奇妙なことは、*ワイルドカードを使用して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/* .
答え1
abc@123:/home/se/exports/201405091107/*
シェル(bashとzsh)は、ローカルシステム上のファイルと一致するglobとして解釈しようとします。シェルはそれが何であるかもしれずscp
、リモートファイルと一致させようとするかもしれません。
bashとzshの違いは、ワイルドカードが失敗した場合のデフォルトの動作です。 Bashでは、globが何も一致しない場合、元のglobパターンを引数として渡します。 zsh ではエラーが発生します。
この問題を解決するには、シェルがそれをローカルglobとして解釈しないように引用する必要があります。
scp 'abc@123:/home/se/exports/201405091107/*' .
(その他同様の作業...1107/'*'
や...1107/\*
作業も許可されています)
zsh の不一致が bash と同じように動作するように変更するには、次のようにします。
setopt nonomatch
答え2
この回答を確認してください。https://superuser.com/a/740728/978073
zpreztoユーザーの場合、コマンドの前にバックスラッシュを付けると機能します!
変える,
$ scp <command>
そして
$ \scp <command>
答え3
私はMacOS Catalinaを使用しており、setopt nonomatchはうまくいきません。
次の問題を解決しました。https://superuser.com/a/740728/978073
永久に作成するには~/.zshrcを編集してください。
#alias scp='noglob scp'
alias scp='\scp'