zsh *通配符在scp 的时候不能用,为什么呢

sh/bash/dash/ksh/zsh等Shell脚本
回复
skylyj
帖子: 52
注册时间: 2009-08-22 17:57

zsh *通配符在scp 的时候不能用,为什么呢

#1

帖子 skylyj » 2010-07-17 16:26

如 $ scp ip:/home/tommy/* .在bash下可以执行,而在zsh下不可以识别通配符。请问只是为什么?
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: zsh *通配符在scp 的时候不能用,为什么呢

#2

帖子 aerofox » 2010-07-18 6:50

代码: 全选

setopt nonomatch
然后再试试
skylyj
帖子: 52
注册时间: 2009-08-22 17:57

Re: zsh *通配符在scp 的时候不能用,为什么呢

#3

帖子 skylyj » 2010-07-19 18:31

aerofox 写了:

代码: 全选

setopt nonomatch
然后再试试
恩,很管用,这个是什么意思呢?谢谢啊
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: zsh *通配符在scp 的时候不能用,为什么呢

#4

帖子 aerofox » 2010-07-20 6:44

shell 不会按照远程地址上的文件去扩展参数,当你使用 ip:/home/tommy/*,因为本地当前目录中,十不存在 ip:/home/tommy/*,所以匹配失败。默认情况下,bash 在匹配失败时就使用原来的内容,zsh 则报告一个错误。在 zsh 中执行 setopt nonomatch 则告诉它不要报告 no matches 的错误,而是当匹配失败时直接使用原来的内容。

实际上,不管是 bash 还是 zsh,不管设置了什么选项,只要把 ip:/home/tommy/* 加上引号,就可解决问题。
skylyj
帖子: 52
注册时间: 2009-08-22 17:57

Re: zsh *通配符在scp 的时候不能用,为什么呢

#5

帖子 skylyj » 2010-07-20 16:15

aerofox 写了:shell 不会按照远程地址上的文件去扩展参数,当你使用 ip:/home/tommy/*,因为本地当前目录中,十不存在 ip:/home/tommy/*,所以匹配失败。默认情况下,bash 在匹配失败时就使用原来的内容,zsh 则报告一个错误。在 zsh 中执行 setopt nonomatch 则告诉它不要报告 no matches 的错误,而是当匹配失败时直接使用原来的内容。

实际上,不管是 bash 还是 zsh,不管设置了什么选项,只要把 ip:/home/tommy/* 加上引号,就可解决问题。
感谢,你啊!
onelynx
帖子: 817
注册时间: 2008-11-13 16:03

Re: zsh *通配符在scp 的时候不能用,为什么呢

#6

帖子 onelynx » 2010-08-03 9:03

aerofox 写了:

代码: 全选

setopt nonomatch
然后再试试
学习了
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: zsh *通配符在scp 的时候不能用,为什么呢

#7

帖子 eexpress » 2010-08-03 9:31

为什么不学习sshfs?
:em04
● 鸣学
skylyj
帖子: 52
注册时间: 2009-08-22 17:57

Re: zsh *通配符在scp 的时候不能用,为什么呢

#8

帖子 skylyj » 2010-08-03 17:43

eexpress 写了:为什么不学习sshfs?
:em04
学习了,sshfs果然很强大,感谢你的推荐啊!
回复