今日在使用scp传输一批文件(使用了通配符*
)的时候报错,提示:
scp aliyun:/home/photo/2020030617*.jpg ./
zsh: no matches found: aliyun:/home/photo/2020030617*.jpg
搜了一下,原因是因为zsh试图将*
展开。在本地找不到文件的时候就报no matches错误。
解决办法:
1. 避免zsh对*
展开
有这么2种做法:
- 在
*
前加反斜杠阻止转义
scp aliyun:/home/photo/2020030617\*.jpg ./
- 用单引号或者双引号将路径(或者含服务器的路径)引起来
#单引号,含服务器地址
scp ‘aliyun:/home/photo/2020030617\*.jpg’ ./
#双引汉,不含服务器地址
scp aliyun:"/home/photo/2020030617\*.jpg" ./
但是有时候本地路径使用通配符上述两个方法都无效,那么参考方法2:
2. 切换到/bin/bash
/bin/bash
不存在*号展开的问题。
chsh -s /bin/bash