My Problem
When attempting to scp
a directory full of files from a remote machine to a local machine I encountered the error “zsh: no matches found”.
scp user@remote-host:/remote/filesystem/* /local/filesystem
zsh: no matches found: user@remote-host:/remote/filesystem/*
My Solution
Escape the glob, either with a backslash, or quotes around the shell word that has the glob in it. In my example, a backslash would look like:
scp user@remote-host:/remote/filesystem/\* /local/filesystem
And quoting would look like:
scp 'user@remote-host:/remote/filesystem/*' /local/filesystem
You could also choose to use the noglob
precommand modifier before the use of scp
but that might not be useful if you’re using multiple globs and want one to actually expand locally. Nevertheless, this will work for simple uses:
noglob scp user@remote-host:/remote/filesystem/* /local/filesystem