web-dev-qa-db-ja.com

scpとzsh:一致するものが見つかりません

zshでscpを試すと、

scp hostA:Descargas/debian-6.0.4-* [email protected]:Escritorio/Software/
zsh: no matches found: hostA:Descargas/debian-6.0.4-*

同じコマンドがbashで機能する

52
juanpablo

ワイルドカードをエスケープします。

scp hostA:Descargas/debian-6.0.4-\*
87
yPhil

またはこれを.zshrc

alias scp='noglob scp'
14
Per Hurtig

パーティーには遅すぎますが….

引用符で文字列をエスケープすることもできます

scp "hostA:Descargas/debian-6.0.4-*" "[email protected]:Escritorio/Software/"
5
waghcwb

NOMATCHオプションの設定を解除すると、zshはグロブの失敗について文句を言うのではなく、テキストをそのままにします。

この投稿 は、url-quote-magicプラグインを使用して、scpコマンドでグロブを自動的にエスケープすることにより、これに対する素晴らしい解決策を持っています。これを有効にするには、~/.zshrcに以下を追加します:

# Automatically quote globs in URL and remote references
__remote_commands=(scp rsync)
autoload -U url-quote-magic
zle -N self-insert url-quote-magic
zstyle -e :urlglobber url-other-schema '[[ $__remote_commands[(i)$words[1]] -le ${#__remote_commands} ]] && reply=("*") || reply=(http https ftp)'

Scpまたはrsyncコマンドでリモートパスの一部としてグロブ文字(*など)を入力すると、zshは次のように自動的に前にブラックスラッシュを追加します。

scp hostA:Descargas/debian-6.0.4-\* [email protected]:Escritorio/Software/
4
mgorven