使用zsh的scp:未找到匹配项


42

当我尝试通过zsh的scp时,我得到

scp hostA:Descargas/debian-6.0.4-* user@192.168.1.154:Escritorio/Software/
zsh: no matches found: hostA:Descargas/debian-6.0.4-*

同样的命令在bash中工作


您可以将其中一个答案标记为正确吗?有些看起来不错。
杰夫2013年

Answers:


73

转义您的通配符:

scp hostA:Descargas/debian-6.0.4-\*

1
尝试使用该QUEUE=*选项运行ruby resque worker时出现相同的错误。感谢您的修复!
mogramer 2014年

2
感谢您的解决方案...这似乎是zsh出于自身利益而太聪明的示例...
Owen

1
也为我工作。虽然很奇怪!
roopunk '17



4

这篇文章通过使用url-quote-magic插件来自动转义scp命令中的glob来解决这个问题。要启用它,请将以下内容添加到您的~/.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命令中将glob字符(如)输入为远程路径的一部分时,zsh会在前面自动添加一个反斜杠,例如:

scp hostA:Descargas/debian-6.0.4-\* user@192.168.1.154:Escritorio/Software/

1
这是一个令人讨厌但很好的把戏。
Attila O.

1

晚会来不及,但是..

您也可以用引号将字符串转义

scp "hostA:Descargas/debian-6.0.4-*" "user@192.168.1.154:Escritorio/Software/"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.