같은 명령을 사용 rsync
하고 scp
와 ZSH
내가 문제로 실행했습니다. 일치하는 모든 파일을 제공하는 (정상적인) 동작 대신 실행되지 않고 다음을 반환합니다.
➜ ~ rsync -azP user@server:~/* ~/
zsh: no matches found: user@server:~/*
이 문제를 어떻게 해결할 수 있습니까?
나의 .zshrc
ZSH=$HOME/.oh-my-zsh
ZSH_THEME="robbyrussell"
plugins=(git brew)
source $ZSH/oh-my-zsh.sh
export PATH=$PATH:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/local/sbin
답변
이것은 ZSH가 글 로빙 문자를 관리하여 파일 이름을 생성하는 방법과 관련이 있습니다. 기본적으로 ZSH는 파일 이름을 생성하고 일치하는 것이 없으면 명령을 실행하기 전에 오류를 발생시킵니다.
이 동작을 우회하는 방법은 여러 가지가 있습니다. 다음은 그 중 일부입니다.
- 가장 빠른 방법은 글 로빙 문자를 따옴표로 묶는 것입니다.
$ rsync -azP "user@server:~/*" ~/
- 영구적으로 변경하려면
.zshrc
파일에 다음을 추가해야 합니다.
unsetopt nomatch
이렇게하면 일치하는 항목을 찾을 수 없을 때 ZSH가 오류를 인쇄하지 않습니다.
- 또 다른 가능성은
noglob
명령 수정자를 사용하여 특정 명령에 대한 글 로빙을 비활성화하는 것 입니다..zshrc
예를 들어 별칭을 설정하면
alias scp='noglob scp'
답변
나는 몇 달 동안 zpretzo를 사용하고 있으며이 문제도 경험했습니다. 변경하지 않으려는 경우 깔끔하고 유용한 솔루션을 발견했습니다. 단순히 명령에 백 슬래시를 추가하십시오.
~/p/b/a/files ❯❯❯ scp *.* myserver@host:~/
*.*: No such file or directory
~/p/b/a/files ❯❯❯ \scp *.* myserver@host:~/
jquery.min.js 100% 93KB 92.6KB/s 00:00
json2.min.js 100% 3377 3.3KB/s 00:00
이게 도움이 되길 바란다!
답변
이렇게하면 URL을 수동으로 인용하지 않고도 문제가 해결됩니다.
autoload -U url-quote-magic
zle -N self-insert url-quote-magic
# sort it out for SCP
some_remote_commands=(scp rsync)
zstyle -e :urlglobber url-other-schema \
'[[ $some_remote_commands[(i)$words[1]] -le ${#some_remote_commands} ]] && reply=("*") || reply=(http https ftp)'