别名 zsh:在"do"附近出现解析错误



我遇到了zsh别名的问题。

我的.zprofile文件中有这个别名:alias cleanimg="for i in `docker images | grep '<none>' | awk '{print $3}'`; do; docker rmi -f $i; done".

从我的终端运行cleanimg时,我收到此错误:zsh: parse error near `do'

我试图在do关键字之后立即删除;,但它没有解决问题。 但是,如果我直接从终端执行代码,该别名将正常运行。

任何人都可以帮助我解决此语法错误吗?

提前感谢。

不要尝试为此使用别名;请使用函数。

cleanimg () {
for i in $(docker images | awk '/<none>/ {print $3}'); do
docker rmi -f "$i"
done
}

这样就不必正确引用,以便在使用别名时而不是在定义别名时运行命令替换。

(此外,grep | awk管道几乎总是可以单独使用awk来实现。

(我也想知道您是否可以使用--filters选项来省去awk和循环;也许docker rmi -f $(docker images -q -f "dangling=true")

如果你只想清理你的 docker 镜像,你可以设置一个别名,如下所示:

alias cleanimg='docker rmi -f $(docker images -q -f "dangling=true")'

sub 命令docker images -q -f "dangling=true"返回要删除的所有 id,并且由于docker rmi接受参数,因此您可以直接传递它们

你的 for 循环中有一个额外的分号,只需将其修复为 -
alias cleanimg="for i in码头工人镜像 | grep '' | awk '{print $3}'; do docker rmi -f $i; done"

相关内容

  • 没有找到相关文章

最新更新