Snažím se zadat příkaz s VELMI velkým argumentem (velikost 1 MB), ale říká „Seznam argumentů je příliš dlouhý“. Jak mohu zadat tento argument?
OS:Linux Ubuntu
Přijatá odpověď:
Neexistuje způsob, jak předat argument mezi spustitelné soubory, pokud je větší než ARG_MAX jádra limit.
Pokud máte seznam argumenty, které jsou příliš dlouhé, lze je rozdělit na menší části, např. s xargs . Toto spustí příkaz tolikrát, kolikrát je potřeba, a poskytne tolik argumentů, kolik se vejde.
Syntaxe je xargs command <file . Pokud vynecháte command , zobrazí své argumenty, například echo .
Jako demo,
xargs -n 4 </etc/motd
vytiskne první čtyři tokeny na jeden řádek (první vyvolání), další čtyři na další atd. (-n argument nastavuje maximální počet argumentů, takže se nepoužívá ARG_MAX limit vůbec.)
Pokud má příkaz, který chcete spustit, nežádoucí účinky, nemusí to fungovat. Například pokud command přepíše všechny dříve existující ./a.out po jeho dokončení vám zjevně zůstanou pouze výsledky z posledního spuštění.
Pokud můžete nakonfigurovat nebo upravit command takže místo argumentu příkazového řádku přečte soubor nebo standardní vstup, který omezení obejde. Soubor nebo stream může být mnohem větší než ARG_MAX a často je.