Näide "xargs" käsu kasutamine

Kirjeldus ja tutvustus

Käsku xargs kasutatakse tavaliselt käsureal, kus ühe käsu väljund edastatakse teise käsu sisendparameetriteks.

Paljudel juhtudel ei ole selle saavutamiseks vaja spetsiaalset käsku nagu xargs, kuna operaatorid "pipe" ja "redirection" teevad sama tüüpi tehinguid. Mõnikord esineb probleeme põhitrasside ja suunamismehhanismidega, näiteks kui argumendid sisaldavad tühikuid, mida xarg eemaldab.

Lisaks käivitab xargs määratud käsu korduvalt, et vajadusel töödelda kõiki talle antud argumente. Tegelikult saate määrata, kui palju argumente tuleks lugeda standardse sisendvoogu iga kord, kui xargs käivitab määratud käsu.

Üldiselt tuleks kasutada xargsi käsku, kui ühe käsu väljundit kasutatakse osana teise käsu versioonidest või argumentidest, millele andmed edastatakse (kasutades torujuhtme operaatorit "|"). Regulaarne torustik on piisav, kui andmed on ette nähtud teise käsu (standardse) sisendiks.

Näiteks kui kasutate failide nimede ja kataloogide loendi käivitamiseks ls käsku ja seejärel libistage seda loendit xarchsi käsku, mis käivitab echo , saate määrata, kui palju failinimesid või katalooginimesid töödeldakse echo-iga igal iteratsioonil järgmiselt :

ls | xargs -n 5 echo

Sel juhul saab echo korraga saada viis faili- või katalooginimed. Kuna echo lisab uue rea tähemärgi lõpus, kirjutatakse iga rea ​​kohta viis nime.

Kui käivitate käsku, mis tagastab suured ja ettearvamatud numbriüksused (nt failinimed), mis edastatakse teisele käsule edasiseks töötlemiseks, on hea mõte juhtida maksimaalse arvu argumente, mida teine ​​käsk saab, et vältida ülekoormust ja avarust.

Järgmine käsurea jaotab failinimede voo, mis on leitud int 200-rühmades enne käsu cp edastamist ja kopeerib need varukataloogi .

./-tüüpi f -nimi "* .txt" -print | xargs -l200 -i cp -f {} ./backup

Lehtkäsu element "./" määrab otsimiseks vajaliku kataloogi. Argument "-type f" piirab failide otsingut ja "-nimi" * .txt-lipp filtreerib lisaks välja kõik, mis ei sisalda laiendit ".txt". -x-l tähis xargsis märgib, et { } märkus kujutab auru iga faili nime.

Järgmine käsk leiab faile nimega core kataloogis / tmp ja kustutab need.

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

Pidage meeles, et see toimib valesti, kui on olemas mõni uue nimega failide nimed, üksik- või topeltjutumärgid või tühikud. Järgmine versioon töötleb failinimesid nii, et faili- või katalooginimed, mis sisaldavad ühe- või kahekordsi jutumärke, tühikuid või värviruume, on korralikult käsitsetud.

find / tmp -nimi core-tüüpi f-print0 | xargs -0 / bin / rm -f

-i variandi asemel saab kasutada ka -I- luku, mis määrab stringi, mis asetatakse käskude argumentide sisestusjoone sisse, nagu käesolevas näites:

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

Asendussümbol on defineeritud kui "{}". See tähendab, et kõik käskude argumentide "{}" esinemised asendatakse toruliikluse kaudu argsile edastatud sisendfailiga. See võimaldab teil asetada (korduvalt) käskude argumentidele sisendielemendid konkreetsetes positsioonides.