Primer Uporabe ukaza "xargs"

Opis in uvod

Ukaz xargs se navadno uporablja v ukazni vrstici, kjer se izhod enega ukaza prenese kot vhodni argument v drug ukaz.

V mnogih primerih za to ne potrebuje nobenega posebnega ukaza, kot je xargs, ker operaterji "cevi" in "preusmeritve" izvajajo isto vrsto posla. Vendar včasih obstajajo težave z osnovnim mehanizmom za prenos in preusmerjanje, npr. Če argumenti vsebujejo presledke, ki jih xargs premaga.

Poleg tega xargs izvede podan ukaz, če je potrebno, za obdelavo vseh dodeljenih argumentov. Pravzaprav lahko določite, koliko argumentov je treba brati v standardnem vhodnem toku vsakič, ko xargs izvrši podan ukaz.

Na splošno je treba ukaz xargs uporabiti, če je treba uporabiti izhod enega ukaza kot del opcij ali argumentov drugega ukaza, s katerim se pretakajo podatki (z uporabo operaterja cevi "|"). Redno cevovod zadostuje, če so podatki namenjeni (standardnemu) vnosu drugega ukaza.

Če na primer uporabite ukaz ls za ustvarjanje seznama imen datotek in imenikov in nato vanj vanj vnesite ukaz xargs, ki izvaja echo , lahko določite, koliko imen datotek ali imenika se ob vsaki ponovitvi obdeluje z ehoom, kot sledi :

ls | xargs -n 5 echo

V tem primeru echo prejme pet imen datotek ali imenikov hkrati. Ker na koncu echo dodaja novo linijo, se v vsaki vrstici zapisuje pet imen.

Če izvedete ukaz, ki vrne velik in nepredvidljiv element elementov (npr. Imena datotek), ki se prenesejo v drug ukaz za nadaljnjo obdelavo, je dobro, da nadzirate največje število argumentov, ki jih drugi ukaz prejme, da se prepreči preobremenitev in zlom.

Naslednja ukazna vrstica deli particije imen datotek, ki jih najdete z ukazom int za skupine 200, preden jih prenesete v ukaz cp , ki jih kopira v rezervni imenik.

poišči ./ -tip f-ime "* .txt" -print | xargs -l200 -i cp -f {} ./backup

Element "./" v ukazu za iskanje določa trenutni imenik za iskanje. Tiskanje tipa "-type f" omejuje iskanje datotek, zastavica "-name" * .txt "pa nadalje filtrira vse, kar nima razširitve" .txt ". Zastava -i v xargs signalizira, da je { } zapis predstavlja vsako ime datoteke pare.

Naslednji ukaz najde datoteke v imeniku / tmp ali pod njim in jih izbriše.

find / tmp -name core -type f -print | xargs / bin / rm -f

Upoštevajte, da bo to storilo nepravilno, če obstajajo imena datotek, ki vsebujejo nove vrstice, enojne ali dvojne narekovaje ali presledke. Naslednja različica obravnava imena datotek na tak način, da se imena datotek ali imenikov, ki vsebujejo enojne ali dvojne narekovaje, presledke ali nove linije, pravilno obdelajo.

find / tmp -name jedro-tip f -print0 | xargs -0 / bin / rm -f

Namesto možnosti -i lahko uporabite tudi oznako -I, ki navaja niz, ki ga v ukaznih argumentih nadomesti vhodna vrstica, kot v tem primeru:

ls1 | xargs -I {} -t mv dir1 / {} dir / {} / code>

Nadomestni niz je definiran kot "{}". To pomeni, da se vsi argumenti "{}" v ukaznih argumentih zamenjajo z vhodnim elementom, posredovanim argumentom, skozi operacijo cevi. To vam omogoča, da vhodne elemente postavite na določena mesta v argumentih ukaza, ki ga želite (večkrat) izvajati.