Skip to main content

Primjer Primjena "Xargs" naredbe

Vuk Ćosić - Politika i socijalni mediji - primjer Slovenije (PRimjena.com) (Travanj 2025)

Vuk Ćosić - Politika i socijalni mediji - primjer Slovenije (PRimjena.com) (Travanj 2025)
Anonim

Xargs naredba obično se koristi u naredbenoj liniji gdje se izlaz jedne naredbe prenosi kao ulazni argumenti na drugu naredbu.

U mnogim slučajevima, nijedna posebna naredba kao što je xargs nije potrebna za to, jer operatori "cijevi" i "preusmjeravanja" obavljaju transakciju istog tipa. Međutim, ponekad postoje problemi s osnovnim mehanizmom cjevovoda i preusmjeravanja, npr. Ako argumenti sadrže razmake, xargs nadilazi.

Osim toga, xargs izvršava navedenu naredbu više puta, ako je potrebno, za obradu svih argumenata koji su mu dodijeljeni. U stvari, možete odrediti koliko argumenata treba pročitati sa standardnog ulaznog toka svaki puta kad xargs izvršava navedenu naredbu.

Općenito, naredba xargs treba koristiti ako se izlaz jedne naredbe koristi kao dio opcija ili argumenata druge naredbe na koju se podaci struji (pomoću operatora cijevi "|"). Redovita cijevna cijev je dovoljna ako su podaci namijenjeni za (standardni) ulaz druge naredbe.

Na primjer, ako koristite ls naredbu za generiranje popisa naziva datoteka i direktorija, a zatim cijepite ovaj popis u naredbu xargs koja izvršava eho, možete odrediti koliko imena datoteka ili naziva direktorija obrađuju echo na svakoj iteraciji kako slijedi :

ls | xargs -n 5 echo

U tom slučaju echo prima istodobno pet naziva datoteka ili imenika. Budući da jeka dodaje novi redak na kraju, na svakoj liniji napisat će se pet naziva.

Ako izvršite naredbu koja vraća velike i nepredvidljive stavke brojeva (npr. Imena datoteka) koje se prenose na drugu naredbu za daljnju obradu, preporučujemo da kontrolirate maksimalni broj argumenata koje drugi naredba prima kako bi se izbjeglo preopterećenje i pad sustava.

Sljedeća naredba za redom dijeli tok naziva datoteka dobivenih pronalaženjem skupina od 200 prije nego što se preda naredbi cp, koja ih kopira na rezerva imenik.

pronađi ./ -type f -name "* .txt" -print | xargs -l200 -i cp -f {} ./backup

Element "./" u naredbi za pronalaženje određuje trenutni direktorij za pretraživanje. Argument "-type f" ograničava pretraživanje datotekama, a zastava "-name" * .txt "dalje filtrira sve one koje nemaju produžetak" .txt ". -i zastava u xargs signalizira da {} oznaka predstavlja svaki naziv datoteke pare.

Sljedeća naredba pronalazi datoteke s nazivom jezgre u ili ispod direktorija / tmp i briše ih.

pronađi / tmp-name core-type f -print | xargs / bin / rm-f

Imajte na umu da će to biti neispravno ako postoje nazivi datoteka koji sadrže nove linije, jednokratne ili dvostruke navodnike ili razmake. Sljedeća inačica obrađuje nazive datoteka na takav način da se nazivi datoteka ili imenika koji sadrže jednokratne ili dvostruke navodnike, prostore ili nove linije ispravno obrađuju.

pronađi / tmp-name core-tip f -print0 | xargs -0 / bin / rm-f

Umjesto -i opciju također možete koristiti -I zastavica koja određuje niz koji je zamijenjen ulaznom linijom u naredbenim argumentima kao u ovom primjeru:

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

Zamjenski niz definiran je kao "{}". To znači da se sve pojave "{}" u naredbenim argumentima zamjenjuju ulaznim elementom koji se prosljeđuje na args kroz rad cijevi. To vam omogućuje postavljanje ulaznih elemenata na određene položaje u argumentima naredbe koja se (opetovano) izvršava.