用于删除所有 docker 容器的 zsh 别名 returns 未找到命令
zsh alias to remove all docker containers returns command not found
我的 .zshrc
文件中有这个别名:
alias rmcons="docker rm -f $(docker ps -aq)"
但是在尝试执行它之后,它只删除了一个容器,然后打印
$rmcons
ef8197f147fb
zsh: command not found: c2ea2673f9e4
zsh: command not found: 4603059f1618
zsh: command not found: 40ad60328595
如何删除 docker ps -aq
显示的所有容器?
Warning: untested. I don't use/have docker.
我认为你应该先序列化输出 "escaping" 新行。
您也可以使用 for
循环,尝试:
for id in `docker ps -aq`; do docker rm -f $id; done
注意反引号以解析命令的输出。
您也可以直接使用 $()
而不是它的快捷反引号。
我建议先用 echo
进行测试,而不是用 rm
删除:
for id in `docker -ps -aq`; do echo rm -f $id; done
,并使用 rm
及其 -i
开关在删除前提示确认。
我希望 docker
的 rm
子命令有一个。
您需要使用单引号 (''
) 而不是双引号 (""
)。
alias rmcons='docker rm -f $(docker ps -aq)'
如果您使用双引号,那么 命令替换 $(docker ps -aq)
将在您定义别名时进行计算。在您的示例中,这相当于
alias rmcons="docker rm -f ef8197f147fb
c2ea2673f9e4
4603059f1618
40ad60328595"
由于换行符是命令分隔符(如 ;
),此别名由四个命令代替:docker rm -f ef8197f147fb
、c2ea2673f9e4
、4603059f1618
和 40ad60328595
.最后三个在您的系统上不存在,因此 "command not found"。这也意味着将使用 docker ps -aq
的相同输出 - 就像在别名定义上一样 - 而不是 运行 别名时的输出。
另一方面,如果您使用单引号,别名实际上将被您定义的确切命令所取代:docker rm -f $(docker ps -aq)
。虽然 docker ps -aq
仍会 return 输出换行符,但这些换行符现在只是解析参数之间的单词分隔符。
我的 .zshrc
文件中有这个别名:
alias rmcons="docker rm -f $(docker ps -aq)"
但是在尝试执行它之后,它只删除了一个容器,然后打印
$rmcons
ef8197f147fb
zsh: command not found: c2ea2673f9e4
zsh: command not found: 4603059f1618
zsh: command not found: 40ad60328595
如何删除 docker ps -aq
显示的所有容器?
Warning: untested. I don't use/have docker.
我认为你应该先序列化输出 "escaping" 新行。
您也可以使用 for
循环,尝试:
for id in `docker ps -aq`; do docker rm -f $id; done
注意反引号以解析命令的输出。
您也可以直接使用 $()
而不是它的快捷反引号。
我建议先用 echo
进行测试,而不是用 rm
删除:
for id in `docker -ps -aq`; do echo rm -f $id; done
,并使用 rm
及其 -i
开关在删除前提示确认。
我希望 docker
的 rm
子命令有一个。
您需要使用单引号 (''
) 而不是双引号 (""
)。
alias rmcons='docker rm -f $(docker ps -aq)'
如果您使用双引号,那么 命令替换 $(docker ps -aq)
将在您定义别名时进行计算。在您的示例中,这相当于
alias rmcons="docker rm -f ef8197f147fb
c2ea2673f9e4
4603059f1618
40ad60328595"
由于换行符是命令分隔符(如 ;
),此别名由四个命令代替:docker rm -f ef8197f147fb
、c2ea2673f9e4
、4603059f1618
和 40ad60328595
.最后三个在您的系统上不存在,因此 "command not found"。这也意味着将使用 docker ps -aq
的相同输出 - 就像在别名定义上一样 - 而不是 运行 别名时的输出。
另一方面,如果您使用单引号,别名实际上将被您定义的确切命令所取代:docker rm -f $(docker ps -aq)
。虽然 docker ps -aq
仍会 return 输出换行符,但这些换行符现在只是解析参数之间的单词分隔符。