Zsh
scp 萬用字元在 zsh 中不起作用
我已經切換到zsh,它工作正常。一件奇怪的事情是,當我嘗試使用 * 萬用字元進行 scp 時,它不起作用,我不得不進入 bash。下面的第二個命令工作正常。
關於為什麼會這樣以及如何解決它的任何想法?
~/dmp ⌚ 16:06:10 $ scp abc@123:/home/se/exports/201405091107/* . zsh: no matches found: root@uf3:/home/se/exports/201405091107/* ~/dmp ⌚ 16:06:53 $ bash sean@seanlaptop:~/dmp$ scp abc@123:/home/se/exports/201405091107/* .
shell(bash 和 zsh)嘗試解釋
abc@123:/home/se/exports/201405091107/*
為 glob 以匹配本地系統上的文件。shell 不知道是什麼scp
,或者您正在嘗試匹配遠端文件。bash 和 zsh 之間的區別在於它們在通配失敗時的預設行為。在 bash 中,如果一個 glob 不匹配任何內容,它會將原始 glob 模式作為參數傳遞。在 zsh 中,它會引發錯誤。
要解決此問題,您需要引用它,以便 shell 不會嘗試將其解釋為本地 glob。
scp 'abc@123:/home/se/exports/201405091107/*' .
(其他事情也喜歡
...1107/'*'
或...1107/\*
工作)如果要更改它以使 zsh 不匹配行為與 bash 相同,可以執行以下操作
setopt nonomatch