Lista de argumentos muito longa

Lista de argumentos muito longa

Estou tentando inserir um comando com um argumento MUITO grande (1 MB de tamanho), mas aparece "Lista de argumentos muito longa". Como posso entrar nesse argumento?

SO: Linux Ubuntu

Responder1

Não há como passar um argumento entre executáveis ​​se ele for maior que o ARG_MAXlimite do kernel.

Se você tem umlista deargumentos muito longos, dividi-los em pedaços menores pode ser feito, por exemplo, com xargs. Isso executa o comando quantas vezes forem necessárias, fornecendo quantos argumentos couberem.

A sintaxe é xargs command <file. Se você omitir command, ele exibirá seus argumentos, como echo.

Como uma demonstração,

xargs -n 4 </etc/motd

imprimirá os primeiros quatro tokens em uma linha (primeira invocação), os próximos quatro em outra, etc. (O -nargumento define um número máximo de argumentos, portanto, isso não usa o ARG_MAXlimite.)

Se o comando que você deseja executar tiver efeitos colaterais indesejáveis, isso pode não funcionar. Por exemplo, se commandsubstituir qualquer arquivo existente anteriormente ./a.out, você obviamente ficará com os resultados apenas da última execução após sua conclusão.

Se você puder configurar ou modificar commandpara que ele leia um arquivo ou entrada padrão, em vez de um argumento de linha de comando, isso contornará a restrição. Um arquivo ou fluxo pode ser muito maior que ARG_MAX, e geralmente é.

informação relacionada