zsh 如果不匹配则忽略 glob

zsh 如果不匹配则忽略 glob

要列出所有 docker 存储库,我需要使用星号。但我被迫添加引号,因为 zsh globbing 捕获了星号。

sudo docker image list "hub.local/*"

我尝试使用 noglob 别名,但 sudo 会失败,而 docker 需要 sudo

alias docker="noglob docker"

我以为我可以将 zsh 设置为在无法匹配时不抱怨,但似乎 zsh 无论如何都会删除星号。

setopt nomatch

我想完全禁用 zsh 通配符,或者让 zsh 在匹配失败时传递通配符。或者可能将 zsh 通配设置为像 bash 一样运行。我想一直避免输入引号。

答案1

alias docker='noglob sudo docker'

docker会导致 glob 永远不会在以 开头且docker在 下运行的行上扩展sudo。如果您偶尔仍然需要不以 root 身份运行docker,则可以将其设置为sudo-dockersdocker别名。

我不建议启用 Bourne/行为,这确实是一个糟糕的设计并且很危险,但如果您确实想要这样做,可以使用(or或...)bash来完成。set +o nomatchsetopt nonomatchunsetopt nomatch

相关内容