看起来xargs不会一次性传递所有参数,手册中说xargs 执行命令(默认为/bin/echo)一次或多次
,据我听说原因是xargs把传入的参数分组并逐组传递给命令。如果这是正确的,有人知道如何确定这个组大小吗?谢谢
使用 --show-limits
参数,它会列出您系统上现有的限制。
$ xargs --show-limits
Your environment variables take up 4108 bytes
POSIX upper limit on argument length (this system): 2090996
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2086888
Size of command buffer we are actually using: 131072
组大小取决于传入每个参数的长度和上述限制。
以下是参考的xargs
手册页:
POSIX标准允许实现对exec函数的参数大小设置限制。此限制可能低至4096字节,包括环境变量的大小。为了使脚本可移植,它们不应依赖于更大的值。但是,我不知道有任何实现其实际限制如此小。--show-limits选项可用于发现当前系统强制执行的实际限制。
--show-limits
选项不属于xargs
的POSIX标准,因此您不能依赖它。(我认为这是GNU的扩展。) - 200_success