Mor*_*gan 49 terminal zsh shell oh-my-zsh macos
使用诸如rsync
和scp
with 之类的命令ZSH
遇到了麻烦。而不是给我所有匹配文件的(正常)行为,它不会运行并返回:
? ~ rsync -azP user@server:~/* ~/
zsh: no matches found: user@server:~/*
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
我的 .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
Run Code Online (Sandbox Code Playgroud)
Spa*_*ack 62
这与 ZSH 如何管理通配符以生成文件名有关。默认情况下,如果没有找到匹配项,ZSH 将生成文件名并在执行命令之前抛出错误。
有很多方法可以绕过这种行为,以下是其中一些:
$ rsync -azP "user@server:~/*" ~/
Run Code Online (Sandbox Code Playgroud)
.zshrc
文件中添加以下内容:unsetopt nomatch
Run Code Online (Sandbox Code Playgroud)
这将防止 ZSH 在找不到匹配项时打印错误。
noglob
命令修饰符禁用特定命令的通配。.zshrc
例如通过设置别名:alias scp='noglob scp'
Run Code Online (Sandbox Code Playgroud)
我已经使用 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
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助!
这可以解决您的问题,而无需手动引用 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)'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26778 次 |
最近记录: |