参数列表太长

参数列表太长

我正在尝试输入一个带有非常大参数(大小为 1 MB)的命令,但它显示“参数列表太长”。我怎样才能进入这个论点?

操作系统:Linux Ubuntu

答案1

ARG_MAX如果参数大于内核的限制,则无法在可执行文件之间传递参数。

如果你有一个列表参数太长,可以将其分成更小的部分,例如使用xargs.这将根据需要多次运行该命令,并提供尽可能多的参数。

语法是xargs command <file.如果省略command,它会显示其参数,例如echo

作为演示,

xargs -n 4 </etc/motd

将在一行上打印前四个标记(第一次调用),然后通过另一行打印接下来的四个标记,依此类推。(参数-n设置了参数的最大数量,因此根本不使用限制ARG_MAX。)

如果您要运行的命令具有不良副作用,则这可能不起作用。例如,如果command将覆盖任何以前存在的./a.out文件,那么显然您将在完成后留下最后一次运行的结果。

如果您可以配置或修改command它读取文件或标准输入,而不是命令行参数,则可以解决该限制。文件或流可以比 更大ARG_MAX,而且通常是这样。

相关内容