GNU/Linux >> Znalost Linux >  >> Linux

Limit počtu znaků na příkazovém řádku Linuxu

Řešení 1:

Limit stanovený prostředím/OS je obvykle jedno nebo dvě stě tisíc znaků.

getconf ARG_MAX vám poskytne maximální vstupní limit pro příkaz. Na systému Debian mám aktuálně otevřený terminál, který vrací 131072 což je 128*1024 . Limit je redukován vašimi proměnnými prostředí, a pokud mě paměť neklame správně, předává je shell ve stejné struktuře, i když to ve většině případů ubere jen několik stovek znaků. Chcete-li najít přibližnou hodnotu této hodnoty, spusťte env | wc -c - to navrhuje 325 znaků v aktuálním čase při tomto přihlášení na tomto počítači.

Skripty pravděpodobně povolí tuto plnou délku, ale není nepravděpodobné, že jiné nástroje zavedou svá vlastní omezení, ať už záměrně, nebo kvůli problémům s návrhem. Mohou také existovat umělá omezení délky jednotlivého argumentu na dlouhém příkazovém řádku a/nebo délky cesty k souboru.

Řešení 2:

ARG_MAX skutečně omezuje celkovou velikost příkazového řádku a prostředí, ale čelíte dalšímu omezení:jeden argument nesmí být delší než MAX_ARG_STRLEN (což je bohužel pevně zakódováno na 131072).

Viz https://unix.stackexchange.com/questions/120642/what-defines-the-maximum-size-for-a-command-single-argument

Řešení 3:

Myslíte, jaká je nejdelší proměnná délka? Chcete-li to zjistit, můžete použít "x" v perlu k vytvoření velmi dlouhého názvu proměnné:

 VAR=`perl -e 'print "a"x131071'` ; bash a.sh $VAR

V mém systému 131071 funguje:

a proměnná je vytištěna na 131072, je příliš velká:

VAR=`perl -e 'print "a"x131072'` ; bash a.sh $VAR
bash: /bin/bash: Argument list too long

Linux
  1. Mít krávu na příkazovém řádku Linuxu

  2. 15 Příklady pro zvládnutí historie příkazového řádku Linuxu

  3. Jak omezit uživatelské příkazy v Linuxu

  1. 8 tipů pro příkazový řádek Linuxu

  2. Přihlaste se do příkazového řádku Linuxu

  3. Jak restartovat Linux pomocí příkazového řádku

  1. Linuxový příkaz mv

  2. Linux du command

  3. Linuxový ip příkaz