Argumentliste zu lang

Argumentliste zu lang

Ich versuche, einen Befehl mit einem SEHR großen Argument (1 MB groß) einzugeben, aber es wird angezeigt: „Argumentliste zu lang.“ Wie kann ich dieses Argument eingeben?

Betriebssystem: Linux Ubuntu

Antwort1

Es gibt keine Möglichkeit, ein Argument zwischen ausführbaren Dateien zu übergeben, wenn es größer ist als die Grenze des Kernels ARG_MAX.

Wenn Sie eineListe vonWenn Sie zu lange Argumente haben, können Sie diese beispielsweise mit in kleinere Teile aufteilen xargs. Dadurch wird der Befehl so oft wie nötig ausgeführt und es werden so viele Argumente bereitgestellt, wie hineinpassen.

Die Syntax ist xargs command <file. Wenn Sie weglassen command, werden die Argumente wie angezeigt echo.

Als Demo

xargs -n 4 </etc/motd

druckt die ersten vier Token in einer Zeile (erster Aufruf), die nächsten vier bis zur nächsten usw. (Das -nArgument legt eine maximale Anzahl von Argumenten fest, daher wird das ARG_MAXLimit hier überhaupt nicht verwendet.)

Wenn der Befehl, den Sie ausführen möchten, unerwünschte Nebenwirkungen hat, funktioniert dies möglicherweise nicht. Wenn beispielsweise commandeine bereits vorhandene Datei überschrieben wird ./a.out, bleiben Ihnen nach Abschluss natürlich nur die Ergebnisse des letzten Laufs.

Wenn Sie es so konfigurieren oder ändern können, commanddass es eine Datei oder Standardeingabe statt eines Befehlszeilenarguments liest, können Sie die Einschränkung umgehen. Eine Datei oder ein Stream kann viel größer sein als ARG_MAXund ist es oft auch.

verwandte Informationen