在 osx 中替换 xargs -d

在 osx 中替换 xargs -d

在 Linux 中,您可以使用以下命令针对四个具有连续名称的不同服务器xargs -d,快速运行该命令:hostname

echo -n 1,2,3,4 |xargs -d, -I{} ssh root@www{}.example.com hostname

看起来 OSX xargs 命令不支持分隔符参数。您可以使用不同格式的echo或通过其他命令行实用程序实现相同的结果吗?

答案1

怎么样:

echo {1..4} | xargs -n1 -I{} ssh root@www{}.example.com hostname

man xargs

-n number
Set the maximum number of arguments taken from standard input for each invocation of utility.

答案2

或者,你也可以xargs通过以下方式安装 GNU自制和 GNUfindutils软件包。

安装 Homebrew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

按照说明操作。然后安装 findutils:

brew install findutils

这将为您提供 GNU xargsas gxargs,并且您可以使用您习惯的 GNU/Linux 语法。 findutils 包中的其他基本命令(例如gfindglocate或 )也是如此gupdatedb,它们在 OS X 上有不同的 BSD 对应命令。

答案3

您还可以tr在 OSX 中使用将逗号转换为新行,并使用 xargs 枚举每个项目,如下所示:

echo -n 1,2,3,4 | tr -s ',' '\n' | xargs -I{} ssh root@www{}.example.com hostname

答案4

使用 printf

$ printf '%s\n' 1 2 3 4 | xargs -I{} echo ssh root@www{}.example.com hostname
ssh [email protected] hostname
ssh [email protected] hostname
ssh [email protected] hostname
ssh [email protected] hostname

相关内容