轉載請註明文章出處: zsh使用scp命令時*通配符出現no matches的錯誤
MacOS升級後zsh成了默認的shell,順應潮流開始了zsh的使用之旅。html
今天使用scp
複製遠程多個文件時出現以下錯誤:linux
# 複製某個目錄下的全部配置文件(*.conf) scp host:/xxxx/*.conf . # 錯誤以下錯誤 # zsh: no matches found: host:/xxxx/*.conf
很確定這條命令語句在bash中能正常如期工做,出現這樣的問題應該是zsh的鍋。做爲資深linux用戶,能夠很快看出了問題所在:zsh試圖將*通配符展開,在本地未找到對應文件,因而出現「no matches」的錯誤。web
通過我的嘗試以及網上搜索,有兩種解決方案:shell
不要讓zsh將*號展開;具體作法有:bash
scp "host:/xxxx/*.conf" .
,或者scp 'host:/xxxx/*.conf' .
。也能夠只引用路徑部分,例如:scp host:'/xxxx/*.conf' .
;scp host:/xxxx/\*.conf .
。setopt nonomatch
,而後再使用scp
命令。推薦的作法是寫入到.zshrc文件中,讓之後的使用中自動生效。