Kompletan tutorijal o xargs-u u Linuxu da biste izvukli maksimum iz njega

Posljednje ažuriranje: 17/12/2025
Autor: Isaac
  • xargs pretvara standardni ulaz u argumente za druge naredbe i omogućava vam povezivanje alata poput find, rm, grep ili gzip.
  • Njegove ključne opcije (-0, -I, -n, -P, -p, -t, -a, -d) kontrolišu kako se podaci čitaju, kako se naredbe formiraju i kako se izvršavaju.
  • Neophodno je biti izuzetno oprezan s destruktivnim naredbama i oslanjati se na potvrde i prethodne testove kako bi se izbjegle ozbiljne greške.
  • U poređenju sa alternativama poput find -exec, xargs nudi veliku fleksibilnost i efikasnost za rukovanje dugim listama i paralelno pokretanje procesa.

xargs tutorijal u Linuxu

Ako radite sa terminal de Linux Često, prije ili kasnije, naići ćete xargs i njegov neobičan način lančanog povezivanja naredbiTo je jedan od onih uslužnih programa koje mnogi ljudi previde, ali kada ga dobro razumijete, štedi vam ogromnu količinu vremena, posebno pri rukovanju s mnogo datoteka ili vrlo dugim izlazima.

Iako nije jedna od najpoznatijih komandi, xargs je vrlo moćan alat za pretvaranje standardnog ulaza u prave argumente. iz druge komande. Zahvaljujući tome, možete raditi stvari poput brisanja stotina datoteka, njihovog preimenovanja, pretraživanja teksta unutar gomile datoteka ili paralelnog pokretanja procesa bez mučenja mozga kompliciranim skriptama.

Šta je tačno xargs u Linuxu?

Naziv xargs potiče od "extended arguments" (prošireni argumenti) i vrlo dobro opisuje šta radi: Uzima podatke sa standardnog ulaza (STDIN) i transformiše ih u argumente za drugu komandu.Jednostavnije rečeno, uzima ono što izlazi iz cijevi naredbe i koristi to kao da ste to napisali rukom nakon sljedeće naredbe.

Mnogi korisnici Linuxa gotovo nikada ne koriste xargs, ali Njegova korisnost vrtoglavo raste kada radite s dugim listama stavki.kao što su putanje datoteka, rezultati pretrage ili bilo koji tekstualni izlaz koji želite obraditi. Pomoću njega možete automatizirati ponavljajuće zadatke i smanjiti ljudske greške eliminirajući potrebu za kucanjem beskonačnih lista.

U praksi, xargs se koristi za "Povežite" dvije komande jednu s drugom na vrlo fleksibilan načinPrva naredba generira listu elemenata (na primjer, find vraća putanje datoteka), a xargs je odgovoran za slanje tih podataka drugoj naredbi (na primjer, rm, grep, mkdir, gzip…) pretvorenih u valjane argumente.

Gotovo sve uobičajene distribucije - poput Debian, Ubuntu i većina GNU/Linux verzija— xargs dolazi unaprijed instaliran unutar paketa coreutils ili findutils, tako da obično ne trebate instalirati ništa dodatno da biste ga koristili.

Pored pojednostavljenja posla, xargs vam također može pomoći u zaštiti vašeg sistema Kada ga kombinujete sa interaktivnim opcijama ili prethodnim provjerama, postaje veoma zanimljivo ako ga koristite sa destruktivnim naredbama poput rm ili mv.

Kako xargs funkcioniše interno

Osnovna operacija funkcije xargs je jednostavna: Čita sa standardnog ulaza, odvaja taj ulaz na "dijelove" (argumente) i kreira naredbe. Od njih. Ove naredbe se izvršavaju onoliko puta koliko je potrebno, ovisno o opcijama koje ste odabrali i broju argumenata proslijeđenih u svakom pozivu.

Kada xargs ne primi nijednu eksplicitnu komandu kao parametar, Podrazumevano koristi naredbu echo.To znači da ako jednostavno ukucate xargs bez ičega drugog, prikazaće se argumenti koje je konstruisao iz standardnog ulaza.

Na primjerAko uradite nešto jednostavno kao što je:

echo "uno dos tres" | xargs

Ono što ćete dobiti je da xargs lance interno echo jedan dva triI stoga vidite upravo tu liniju na ekranu. To je brz način da shvatite kako "prevodi" ulaz u argumente.

Još jedna ključna karakteristika je to xargs uzima u obzir sistemska ograničenja, kao što je maksimalna dužina komandne linijeUmjesto izgradnje gigantskog poredka s hiljadama argumenata odjednom, grupira ih u razumne blokove, izvršavajući naredbu nekoliko puta ako je potrebno kako bi se izbjeglo prekoračenje tih ograničenja.

Sve se ovo radi uz poštovanje pravila odvajanja argumenata: Podrazumevano, razmake, tabulatore i prelome redova smatra separatorima.Međutim, kao što ćemo kasnije vidjeti, ovo ponašanje možete promijeniti različitim opcijama kako biste ga prilagodili rutama s razmacima, posebni prelomi redova ili null separatore.

  Kompanije za popravku kredita: jesu li legalne?

Sintaksa naredbe xargs

Opći način korištenja xargs funkcije u terminalu je vrlo kompaktan: Postavljate naredbu koja šalje podatke putem standardnog izlaza, dodajete cijevi, a zatim pozivate xargs. s opcijama i odredišnom naredbom koje vas zanimaju.

La osnovna sintaksa bi:

xargs comando

U tipičnom toku rada, uradili biste nešto ovako:

comando_que_genera_lista | xargs comando_destino

Na ovaj način, Naredba odredišta se izvršava s argumentima koji dolaze iz naredbe koja generira listu.Svaka grupa elemenata koju xargs gradi iz STDIN-a se prosljeđuje kao parametar naredbi, a ona se poziva jednom ili više puta, ovisno o veličini liste i ograničenjima koja ste definirali.

Ako izostavite naredbu destination, već znate da xargs će koristiti echo po defaultu i jednostavno će vam prikazati rekonstrukciju argumenta.Ovo je vrlo praktično za testiranje i otklanjanje grešaka prije pokretanja delikatnijih akcija.

Najvažnije opcije xargs-a

xargs ima dobar broj opcija koje kontrolišu kako čita ulaz, kako formira argumente i kako izdaje naredbe. Neke od ovih zastavica su ključne za rukovanje neobičnim imenima datoteka, interaktivni rad ili smanjenje performansi sistema. paralelno pokretanje procesa.

Među najčešće korištenim opcijama su sljedeće (postoje kratke i duge verzije):

  • -0 ili –nullS ovom opcijom, xargs smatra da su argumenti odvojeni NULL znakom (\0) umjesto razmaka ili preloma reda. Ova tehnika je neophodna pri radu sa nazivi datoteka koji sadrže razmake, prijelome redova ili druge problematične znakoveČesto se kombinuje sa find ... -print0 kako bi se osiguralo da se ništa ne slomi zbog praznina.
  • -ao –arg-file datoteka: umjesto očitavanja ulaza kroz standardnu ​​cijev, xargs uzima argumente iz tekstualne datotekeSvaki red ili separator u datoteci se interpretira kao argument koji treba obraditi. Ovo je vrlo korisno ako imate unaprijed popunjenu listu putanja ili stavki.
  • -do – znak razdjelnikaOva opcija vam omogućava odredite prilagođeni znak razdjelnika za odvajanje argumenata. Na ovaj način, svaki znak se doslovno interpretira i razmaci se ne koriste kao separatori po defaultu. Ovo je korisno kada unos slijedi vrlo specifičan format.
  • -po –interaktivan: pravi xargove pitaj prije izvršavanja svake komandeIspisuje komandu koju će izvršiti i traži potvrdu (obično odgovorom sa y/n). Ovo je posebno korisno kada planirate koristiti xargs zajedno sa rm, mv ili drugim potencijalno destruktivnim radnjama.
  • -I marker: definira "token" ili marker (kao {}) šta U komandi se zamjenjuje trenutnom vrijednošću ulaza.Ovo vam omogućava da kreirate složenije naredbe ili postavite argument na tačno mjesto unutar naredbe koje želite.
  • -n brojOvo pokazuje koliko se argumenata prosljeđuje komandi svaki put kada se izvrši. S ovim, Vi kontrolišete veličinu svake serije i izbjegavate pokretanje akcija s prevelikim listama odjednom.
  • -P broj: postavlja maksimalan broj procesa koji će se izvršavati paralelno. To je vrlo praktičan način za paralelizirati zadatke poput kompresije ili teške obrade preko mnogo datoteka, ubrzavajući el tiempo ukupni zadatak.
  • -t: govori xargs-u da Ispišite svaku komandu na ekran prije njenog izvršavanjaTo je vrlo praktičan alat za otklanjanje grešaka jer možete tačno vidjeti šta će biti pokrenuto.

Kombiniranjem ovih zastavica možete prilagoditi xargs gotovo svakom radnom procesu, od jednostavnih zadataka čišćenja datoteka do složeni skriptovi koji obrađuju podatke i povezuju ih između nekoliko programa.

Osnovni primjeri za razumijevanje xargova

Najbolji način da se upoznate s xargs funkcijom jeste da je vidite u akciji. U nastavku je nekoliko praktičnih primjera koji to ilustruju. Kako preusmjeriti izlaz jedne komande na drugu koristeći xargs kao most i iskorištavanje njegovih različitih opcija.

Kreiranje direktorija sa liste

Zamisli šta želiš kreirajte više foldera čija imena imate u jednoj liniji. Pomoću funkcije xargs možete uraditi nešto jednostavno kao što je:

  Šta učiniti ako pretraga u Windowsu 11 ne radi: rješenja

echo "carpeta1 carpeta2 carpeta3" | xargs mkdir

Ovdje, echo generira string s imenima i xargs ga dijeli na tri različita argumenta i prosljeđuje ih naredbi mkdirRezultat je da se u trenutnom direktoriju kreiraju tri direktorija: folder1, folder2 i folder3, svi jednom naredbom.

Izvršavanje naredbi uz prethodnu potvrdu

Kada se spremate izvršiti radnje koje bi mogle izbrisati podatke, dobra je ideja provjeriti prije njihovog izvršavanja. Za to služi ova opcija. -pJednostavan primjer bi bio:

echo "archivo1 archivo2 archivo3" | xargs -p touch

U ovom slučaju, xargs će prikazati komandu touch sa argumentima koje namjerava koristiti i pitati vas da li želite da nastavite.Ako potvrdite, kreirat će te datoteke (ili ažurirati datum njihove izmjene ako već postoje). Ovaj pristup je savršen kao "sigurnosna mreža" kada testirate rizičnije kombinacije.

Pretraživanje teksta unutar više datoteka

Vrlo tipična kombinacija je korištenje naredbe `find` za lociranje datoteka i `xargs` s `grep` za pretraživanje teksta unutar njih. Na primjer, za Pronađite u /etc sve datoteke s ekstenzijom .conf koje sadrže riječ korijenMožete koristiti:

find /etc -iname "*.conf" | xargs grep "root"

Ovdje, `find` generira listu konfiguracijskih datoteka i xargs obrađuje njihovo prosljeđivanje kao argumenata grep-u...koja će tražiti riječ "root" u svakoj od njih. To je vrlo brz način za pregled mnogih konfiguracijskih datoteka jednom naredbom.

Izbrišite stare datoteke iz direktorija

Druga vrlo česta upotreba je čišćenje starih datoteka. Na primjer, za Pretražite u /tmp sve datoteke starije od jedne sedmice i izbrišite ihMogli biste uraditi nešto ovako:

find /tmp -mtime +7 | xargs rm

U ovom slučaju, funkcija find navodi svaku kandidatsku rutu i xargs poziva rm s tim datotekama kao argumentimaMeđutim, kada su u pitanju masovna brisanja, preporučljivo je poduzeti dodatne mjere opreza, kao što je prvo testiranje sa -print ili koristiti xargs -p rm za potvrdu prije brisanja.

Napredni primjeri i najbolje prakse s xargs-ovima

Pored osnovnih primjera, xargs blista kada ih počnete kombinirati. Prilagođene oznake, paralelno izvršavanje i null separatoriOvdje zaista postaje švicarski nožić za skripte i automatizaciju.

Sigurno brisanje datoteka pomoću -0

Kada želite izbrisati sve datoteke .txt iz direktorija, najrobustniji Kombinuje pronalaženje sa -print0 i xargs sa -0 za ispravno rukovanje imenima sa razmacima:

find . -type f -name "*.txt" -print0 | xargs -0 rm -f

U ovoj naredbi, find generira listu .txt datoteka i odvaja svako ime null znakom zahvaljujući -print0Zatim, xargs sa opcijom -0 Interpretira to razdvajanje nulama i sigurno prosljeđuje imena datoteka na rm -f, bez zbunjivanja razmacima ili čudnim znakovima.

Preimenuj datoteke s prefiksom koristeći -I

Pretpostavimo da želite dodati prefiks copia_ na sve fajlove .jpg iz direktorija. xargs vam omogućava da konstruišete ovu vrstu naredbe koristeći rezervirano mjesto koje ga zamjenjuje stvarnim imenom svake datoteke:

ls *.jpg | xargs -I {} mv {} copia_{}

Evo, -I {} govori xargs-u da zamijeni svako pojavljivanje {} unutar mv naredbe trenutnim nazivom datoteke.Na ovaj način, svaka slika se preimenuje na istu putanju, ali počevši od copy_. To je vrlo praktična tehnika za složenije operacije preimenovanja.

Paralelna kompresija datoteka sa -P

ls *.log | xargs -n 1 -P 4 gzip

Ovim redoslijedom, -n 1 označava da se po izvršavanju gzip-a prosljeđuje jedna datoteka, dok -P 4 omogućava da do četiri gzip procesa budu aktivna istovremeno.Na ovaj način bolje koristite jezgre procesora i značajno smanjujete ukupno vrijeme kompresije.

Izrada složenijih skripti pomoću sh -c

xargs se također vrlo dobro integrira sa shell-ovima poput sh ili bash za pokretanje složenije naredbe za svaku stavku na listiNa primjer, zamislite da želite obraditi sve datoteke .txt iz direktorija, ispisati njegovo ime i pretražiti unutar njih određeni uzorak, spremajući sav izlaz u datoteku dnevnika.

  Lagani kontejneri s Podmanom na Linuxu: Praktični vodič

Jedan od načina da se to uradi bio bi nešto ovako:

find /ruta/a/los/archivos -type f -name "*.txt" | xargs -I {} sh -c 'echo "Procesando {}"; grep "patron" "{}"' >> salida.log

U ovoj konstrukciji, funkcija find generiše listu datoteka, Funkcija xargs iterira kroz svaki od njih koristeći -I {} i, za svaku iteraciju, izvršava malu skripta u sh-cOvaj skript prikazuje naziv datoteke i koristi grep za pretraživanje uzorka unutar nje, preusmjeravajući sve na output.log. To je vrlo ilustrativan primjer fleksibilnosti koju xargs pruža za ulančavanje operacija povezanih s tim.

Koristite datoteke kao izvor argumenata sa -a

Nakon što sačuvate listu ruta ili stavki u tekstualnoj datoteci, možda je praktičnije reći xargs-u da čita direktno iz te datoteke umjesto korištenja cijeviZa to služi ta opcija. -a:

xargs -a lista_de_archivos.txt rm

U ovom slučaju, xargs će otvoriti file_list.txt, interpretirati njegov sadržaj kao odvojene unose i proslijedit će te elemente rm naredbi kao argumente, poštujući i ostale opcije koje možete dodati (kao što su -n, -po -t).

Sigurnost, performanse i alternative za xargs

Rad sa xargs-ovima zahtijeva imanje na umu sigurnosne implikacije i posljedice naredbi koje ćete izvršitiPrilikom automatizacije operacija na velikim količinama datoteka ili podataka, mali propust u sintaksi može na kraju uzrokovati više štete nego što je potrebno.

Na primjer, kada se xargs kombinira s rm ili mv, toplo se preporučuje često korištenje Opcije -po -t vam omogućavaju da vidite šta će se uraditi prije nego što to pokrenete masovno.Također je dobra praksa prvo isprobati bezopasne naredbe (kao što su echo ili ls) kako biste provjerili da li je lista argumenata ono što očekujete.

Što se tiče performansi, xargs se ističe upravo zato što efikasno obrađuje dugačke unose koji bi mogli premašiti tradicionalna ograničenja komandne linijePodjelom posla na upravljive blokove izbjegavate greške poput "lista argumenata je predugačka" koje se pojavljuju kada pokušate proslijediti hiljade argumenata odjednom jednom procesu.

Opcija -P Pomaže u postizanju boljih performansi mašine paralelnim izvršavanjem poslova, iako Više procesa ne znači uvijek bolje performanse.To uveliko zavisi od toga da li je zadatak vezan za CPU ili I/O, broja dostupnih jezgara i ukupnog opterećenja sistema. Preporučljivo je pokrenuti testove kako bi se precizno podesio idealan broj istovremenih procesa.

S druge strane, u nekim složenim scenarijima možda biste radije koristili pronađi pomoću akcije -exec umjesto xargova. Ponekad, find ... -exec comando {} \; o -exec ... + Može biti čitljiviji i samostalniji, jer ne zahtijeva vanjski pipe. U drugim kontekstima, xargs nudi veću fleksibilnost i omogućava bolju ponovnu upotrebu komponenti, tako da Izbor zavisi od jasnoće koju tražite i stila vaših skripti..

Koji god pristup da odaberete, ključ je u Razumjeti kako se konstruiraju argumenti, kako se obrađuju specijalni znakovi i koju marginu sigurnosti imate. prije pokretanja masovnih naredbi, posebno kada utiču na datotečni sistem ili kritične podatke.

Savladavanje xargs funkcije traje neko vrijeme, ali kada jednom internalizirate njenu logiku "čitanja iz STDIN-a i pretvaranja u argumente", Postaje nezamjenjiv alat u vašem arsenalu komandne linijeOd malih zadataka čišćenja do naprednih skripti za obradu i pretraživanje, omogućit će vam brži, fleksibilniji i efikasniji rad u bilo kojem Unix/Linux okruženju.

Unix-DOS format
Vezani članak:
Ultimativni vodič za Dos2Unix i Unix2Dos: Konvertovanje datoteka između Windowsa i Unixa