如何正确使用xargs?

时间:2016-08-07 12:47:25

标签: shell awk xargs

我只想删除本地机器中的所有Vagrant盒子。这是我的盒子:

$ vagrant box list
centos/7                  (virtualbox, 1509.01)
coreos-alpha              (virtualbox, 1010.1.0)

每行中的第一个字符串(例如“centos / 7”)似乎是框名,所以我尝试了以下命令:

$ vagrant box list | awk '{ print $1; }' | xargs vagrant box remove

我只是试图获取第一个字符串并使用xargs将其传递给vagrant box remove因为我希望将字符串作为命令的参数。但是,我得到了以下错误。我错过了什么?

This command was not invoked properly. The help for this command is
available below.

Usage: vagrant box remove <name>

Options:

    -f, --force                      Remove without confirmation.
        --provider PROVIDER          The specific provider type for     the box to remove
        --box-version VERSION        The specific version of the box     to remove
        --all                        Remove all available versions     of the box
    -h, --help                       Print this help

谢谢,

1 个答案:

答案 0 :(得分:3)

我认为xargs正在将更多的框合并到一个命令中,因为这是默认行为。尝试使用-n开关为每个命令强制一个参数:

$ vagrant box list | awk '{ print $1; }' | xargs -n 1 vagrant box remove