Список аргументов слишком длинный

Список аргументов слишком длинный

Я пытаюсь ввести команду с ОЧЕНЬ большим аргументом (размером 1 МБ), но появляется сообщение «Список аргументов слишком длинный». Как мне ввести этот аргумент?

ОС: 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, и часто так и есть.

Связанный контент