Mac OS xargs命令不可预测的行为

时间:2018-03-25 14:58:09

标签: bash macos docker xargs

我对在Mac OS上运行的xargs行为感到困惑

我的形象如下:

sudo -s

我想通过以下过滤器删除它:

docker images | grep "docregistry/"
docregistry/jackrabbit   latest

但我收到了一个错误:

docker images | grep "docregistry/" | awk '{print $1":"$2}' | xargs -0 docker rmi -f

如果我运行Error: No such image: docregistry/jackrabbit:latest ,一切都按预期工作。

提前致谢!

1 个答案:

答案 0 :(得分:2)

-0告诉xargs它应该将其输入拆分为空字符docker命令的参数,但您的管道不会 prodcue 任何空字符。这意味着awk输出的换行符被视为图像名称的 part ;该错误实际上告诉您图像docregistry/jackrabbit:latest\n不存在。 (如果grep输出多个图像名称,则错误可能会更明显。)

假设Docker镜像不能(或者,至少在这种情况下,不会)包含空格,只需从-0命令中删除xargs