Lista de argumentos demasiado larga

Lista de argumentos demasiado larga

Estoy intentando ingresar un comando con un argumento MUY grande (1 MB de tamaño), pero dice "Lista de argumentos demasiado larga". ¿Cómo puedo ingresar ese argumento?

Sistema operativo: Linux Ubuntu

Respuesta1

No hay forma de pasar un argumento entre ejecutables si es mayor que el ARG_MAXlímite del kernel.

Si tienes unlista deargumentos que son demasiado largos, se pueden dividir en partes más pequeñas, por ejemplo, con xargs. Esto ejecuta el comando tantas veces como sea necesario, proporcionando tantos argumentos como quepan.

La sintaxis es xargs command <file. Si omite command, muestra sus argumentos, como echo.

Como demostración,

xargs -n 4 </etc/motd

imprimirá los primeros cuatro tokens en una línea (primera invocación), los cuatro siguientes a través de otra, etc. (El -nargumento establece un número máximo de argumentos, por lo que no utiliza el ARG_MAXlímite en absoluto).

Si el comando que desea ejecutar tiene efectos secundarios no deseados, es posible que esto no funcione. Por ejemplo, si commandsobrescribe cualquier archivo previamente existente ./a.out, obviamente se quedará con los resultados de la última ejecución una vez finalizada.

Si puede configurarlo o modificarlo commandpara que lea un archivo, o una entrada estándar, en lugar de un argumento de línea de comandos, eso solucionará la restricción. Un archivo o secuencia puede ser mucho más grande que ARG_MAX, y a menudo lo es.

información relacionada