terminal - 别名 zsh : parse error near `do'

标签 terminal alias zsh parse-error

我遇到了 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")?)

关于terminal - 别名 zsh : parse error near `do' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50249586/

相关文章:

Linux别名问题

macos - 在 Zsh 中登录时无法启动受 '0700' 保护的程序

shell - 带有heredoc的猫在zsh shell中不起作用

javascript - 从命令行打开 Chrome/Chromium 并将 javascript 操作发送到 chrome/chromium 控制台

Linux命令通过uid列出所有用户

linux - 如何将文件夹中包含的所有文件的名称提取到 .txt 文件中?

c++ - "using"关键字 - 将迭代器传递给函数

bash - 创建一个shell脚本来执行多个命令

c++ - 类模板别名在生成的符号中不应该是可见的,是吗?

macos - 如何更改 iTerm2 清除行的快捷方式?