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