Xargs

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 13. března 2013; kontroly vyžadují 15 úprav .

xargs je nástroj pro generování seznamu argumentů a provádění příkazů v operačních systémech podobných UNIX . Příkaz xargs zřetězí pevnou sadu počátečních argumentů zadaných na příkazovém řádku s argumenty načtenými ze standardního vstupu a provede zadaný příkaz jednou nebo vícekrát.

Použití

xargs [-l число] [-I зам_цеп] [-n число] [-t] [-p] [-x] [-s размер] [-e [лконф_цеп]] [команда [начальный_аргумент…]]

Možnosti spuštění

-0 Ve vstupním proudu používá oddělovací znak NULL ( \0) místo "mezera" a "nový řádek", funguje dobře s možností -print0příkazufind -l число Proveďte příkaz pro každou skupinu z daného počtu neprázdných řádků argumentů přečtených ze standardního vstupu. Poslední volání příkazu může být s méně řádky argumentů. Má se za to, že řádek končí prvním nalezeným znakem nového řádku, pokud mu nepředchází mezera nebo znak tabulátoru; mezera/tabulátor na konci signalizuje, že další neprázdný řádek je pokračováním toho aktuálního. Pokud je číslo vynecháno, považuje se za rovné 1. Volba -lzapíná volbu -x. -I зам_цеп Režim vkládání: Příkaz se provede pro každý řádek standardního vstupu, přičemž celý řádek se považuje za jeden argument a dosadí se do počátečních argumentů namísto každého výskytu řetězce znaků зам_цеп. Je povoleno maximálně 5 počátečních argumentů obsahujících jeden nebo více výskytů зам_цеп. Mezery a tabulátory na začátku vstupních řádků jsou vyřazeny. Vytvořené argumenty nemohou být delší než 255 znaků. Pokud řetězec зам_цепnení zadán, předpokládá se, že je roven { }. Opce -Iobsahuje opci -x. -n число Proveďte příkaz s použitím co největšího počtu argumentů, přečtených ze standardního vstupu, ale ne více než zadaný počet. Méně argumentů bude použito, pokud jejich celková délka překročí velikost (viz možnost níže -s), nebo pokud zbývá méně než zadaný počet argumentů pro poslední volání. Je-li tato možnost uvedena také -x, musí se každá skupina zadaného počtu argumentů vejít do limitu velikosti, jinak se provádění xargs zastaví. -t Režim trasování: Příkaz a každý vytvořený seznam argumentů se před provedením vytiskne se standardní chybou. -p Režim výzvy: xargs požaduje potvrzení před každým vyvoláním příkazu. -tJe zapnut režim trasování ( ), díky kterému se vytiskne vyvolání příkazu, který se má provést, a poté výzva. Odezva y(která může být následována čímkoli) způsobí provedení příkazu. Jakákoli jiná odpověď, včetně návratu vozíku, bude toto volání příkazu ignorovat. -x Ukončete provádění, pokud je další seznam argumentů delší než velikost (ve znacích). Možnost je povolena pomocí -xvoleb -ia -l. Pokud není zadána žádná z možností -i, -lnebo -n, celková délka všech argumentů musí být v rámci limitu velikosti. -s размер Nastavte maximální celkovou velikost (ve znacích) každého seznamu argumentů na danou velikost. Velikost musí být kladné číslo ne větší než 470 (implicitní hodnota). Při výběru velikosti mějte na paměti, že ke každému argumentu je přidán jeden znak; navíc je zapamatován počet znaků v názvu příkazu. -e [лконф_цеп] Řetězec znaků лконф_цепje považován za znak logického konce souboru. Není-li tato možnost -ezadána, je zakončením podtržítko ( _). Možnost -ebez лконф_цепruší možnost nastavit logický konec souboru (podtržítko je považováno za normální znak). Příkaz xargs čte standardní vstup, dokud nedosáhne konce souboru nebo nenarazí na лконф_цеп.

Program xargs se ukončí, pokud z příkazu obdrží návratový kód -1 nebo pokud příkaz nelze provést. Pokud je příkaz shell program, musí se explicitně ukončit s příslušným argumentem, aby se zabránilo náhodnému vrácení kódu -1.

Příklady použití

Tento příkaz přebírá výstupní proud z příkazu echo jako vstup a odesílá jej jako argumenty příkazu echo

echo ABC | xargs echo

Tento příkaz převezme výstupní proud z příkazu echo jako vstup a odešle jej jako argumenty příkazu echo, čímž spustí samostatný proces pro každou skupinu jednoho parametru (tj. pro každý parametr)

echo ABC | xargs -n 1 echo

Následující procedura shellu přenese všechny soubory z adresáře $1do adresáře $2a ohlásí každý přenos před jeho provedením:

ls $ 1 | xargs -I {} -t mv $ 1 / {} $ 2 / {}

Následující příkaz zřetězí výstup příkazů v závorkách do jednoho řádku, který je poté připojen na konec souboru protokolu:

( logname ; datum ; echo $0 $* ) | xargs >>log

Uživatel je dotázán, které soubory z aktuálního adresáře mají být archivovány. Po provedení prvního příkazu (viz níže) se soubory přidávají do archivu archu jeden po druhém; po provedení druhého příkazu se do archivu přidá mnoho souborů najednou.

ls | xargs -p -l ar r oblouk ls | xargs -p | xargs ar r arch

Následující procedura shellu aplikuje příkaz diff na po sobě jdoucí dvojice jeho argumentů.

echo $* | xargs -n2 dif

Další užitečnou možností je -0v kombinaci s find -print0nebo grep -lZ( grep -l --nullna OS X) pro zpracování argumentů obsahujících mezery a uvozovky.

najít / -typ f -tisk0 | xargs -0 grep -liwZ GUI | xargs -0 rm -f grep -rliwZ GUI / | xargs -0 rm -f

Oba výše uvedené příkazy odstraní všechny soubory obsahující ve svém názvu kombinaci znaků „GUI“.

Odkazy