Kako koristiti naredbu xargs na Linuxu
Fatmawati Achmad Zaenuri/Shutterstock
Trebate li nizati neke Linux naredbe zajedno, ali jedna od njih ne prihvaća cijevni unos? |_+_| može uzeti izlaz iz jedne naredbe i poslati ga drugoj naredbi kao parametri.
Svi standardni Linux uslužni programi imaju tri toka podataka povezana s njima. Oni su standardni ulazni tok (stdin), standardni izlazni tok (stdout) i standardni tok grešaka (stderr).
Ovi tokovi rade s tekstom. Ulaz (stdin) šaljemo naredbi koristeći tekst, a odgovor (stdout) se zapisuje u prozor terminala kao tekst. Poruke o pogrešci također se zapisuju u prozor terminala kao tekst (stderr).
Jedna od sjajnih značajki Linuxa i Operativni sustavi slični Unixu je mogućnost usmjeravanja stdout izlaza iz jedne naredbe u stdin ulaz druge naredbe. Prvu naredbu nije briga što njen izlaz ne ide u prozor terminala, a drugu naredbu nije briga što njen unos ne dolazi s tipkovnice.
Iako sve Linux naredbe imaju tri standardna toka, ne prihvaćaju sve stdout druge naredbe kao ulaz u svoj stdin. To znači da im ne možete usmjeriti unos.
Oglas|_+_| je naredba za izgradnju izvedbenih cjevovoda koristeći standardne tokove podataka. Korištenjem |_+_| možemo napraviti naredbe kao što su |_+_|, |_+_| i |_+_| prihvatiti standardni unos kao argumente.
Naredba xargs
|_+_| prihvatit će cijevni ulaz. Također može prihvatiti unos iz datoteke. |_+_| koristi taj ulaz kao parametre za naredbe s kojima smo mu rekli da radi. Ako ne kažemo |_+_| za rad s određenom naredbom zadano će koristiti |_+_|.
To možemo koristiti da pokažemo kako |_+_| uvijek će generirati jedan redak izlaza, čak i iz višelinijskog ulaza.
Ako koristimo |_+_| (navedite jednu datoteku po retku) opciju s |_+_|, dobivamo a jedan stupac naziva datoteka .
xargs
Ovo navodi datoteke skripte ljuske u trenutnom direktoriju.
Dobivamo jedan stupac prema očekivanjima. Ako ga provučemo kroz |_+_| što dobivamo?
xargs
Oglas
Izlaz se zapisuje u prozor terminala, kao jedan dugi tok teksta.
Upravo ta sposobnost omogućuje |_+_| ubacite parametre u druge naredbe.
Korištenje xargs-a s wc-om
Možemo koristiti |_+_| lako imati |_+_| broji riječi, znakove i retke u više datoteka.
xargs
Evo što se događa:
- |_+_| navodi *.page datoteke i prosljeđuje popis na |_+_|.
- |_+_| prosljeđuje nazive datoteka na |_+_|.
- |_+_| tretira nazive datoteka kao da ih je primio kao parametre naredbenog retka.
Statistika za svaku datoteku prikazuje se zajedno s ukupnim zbrojem.
Korištenje xargs s potvrdom
Možemo koristiti |_+_| (interaktivna) opcija za |_+_| zatraži od nas potvrdu da smo sretni da se nastavi.
Ako prosledimo niz naziva datoteka na |_+_|, kroz |_+_|, |_+_| htjeti kreirajte datoteke za nas.
echo
Oglas
Prikazuje se naredba koja će se izvršiti i |_+_| čeka da odgovorimo tako da upišemo y ili Y, ili n ili N i pritisnemo Enter.
Ako samo pritisnete Enter, tretira se kao n. Naredba se izvršava samo ako upišete y ili Y.
Pritisnuli smo y i pritisnuli Enter. Možemo koristiti |_+_| kako biste provjerili jesu li datoteke stvorene.
rm
Korištenje xargova s više naredbi
Možemo koristiti više naredbi s |_+_| pomoću |_+_| (početni argumenti) opcija.
Ova opcija definira zamjenski niz. Gdje god se token za zamjenski niz pojavi u retku za naredbe, vrijednosti koje su dostavljene |_+_| su umetnute.
Koristimo |_+_| naredba za pregled poddirektorija iz trenutnog direktorija. The |_+_| (imenik) opcija uzrokuje |_+_| ignorirati datoteke i izvještavati samo o imenicima.
mkdir
Postoji jedan poddirektorij koji se zove slike.
OglasU datoteci pod nazivom directories.txt imamo nazive nekih direktorija koje želimo kreirati. Njegov sadržaj možemo pogledati pomoću |_+_|.
xargs
Ovo ćemo koristiti kao ulazne podatke za |_+_|. Naredba koju ćemo izvršiti je ova:
xargs
Ovo se raspada ovako:
- cat directories.txt | : Ovo gura sadržaj datoteke directorories.txt (svi novi nazivi direktorija) u |_+_|.
- xargs -I % : Ovo definira zamjenski niz s tokenom %.
- sh-c : Ovo pokreće novu podljusku. The |_+_| (naredba) govori ljusci da čita naredbe iz naredbenog retka.
- 'jeka %; mkdir %' : svaki od % tokena bit će zamijenjen imenima direktorija koje prosljeđuje |_+_|. The |_+_| naredba će ispisati ime direktorija; |_+_| naredba će stvoriti direktorij.
Imenici su navedeni jedan po jedan.
Možemo koristiti |_+_| još jednom za provjeru da su imenici stvoreni.
xargs
Kopiranje datoteka na više lokacija
Možemo koristiti |_+_| da nam omogući kopiranje datoteka na više lokacija jednom naredbom.
Mi ćemo prenijeti imena dvaju direktorija u |_+_| kao ulazni parametri. Reći ćemo |_+_| da prosljeđuje samo jedan od ovih parametara naredbi s kojom radi.
U ovom slučaju, naredba je |_+_|. Dakle, učinak je pozivanje |_+_| dvaput, svaki put s jednim od dva direktorija kao parametrom naredbenog retka. The |_+_| parametar koji dopušta da se to dogodi je |_+_| (maksimalni broj) opcija. Postavit ćemo da ovo bude jedno.
OglasTakođer koristimo |_+_| (opcija) opcija s |_+_| tako da izvještava što se događa.
echo
Datoteke se kopiraju u dva direktorija, jedan po jedan. |_+_| izvješćuje o svakoj radnji kopiranja datoteke tako da možemo vidjeti kako se odvija.
Brisanje datoteka u ugniježđenim imenicima
Ako nazivi datoteka imaju razmake i čudne znakove u sebi—kao što su znakovi novog reda— |_+_| neće ih moći ispravno protumačiti. Taj problem možemo prevladati korištenjem opcije -0 (null terminator). Ovo govori |_+_| za korištenje null znaka kao konačnog graničnika za nazive datoteka.
Koristit ćemo |_+_| u ovom primjeru. |_+_| ima svoju opciju za rješavanje razmaka i čudni znakovi u nazivima datoteka. To je |_+_| (puno ime, nulti znak) opcija.
xargs
Ovo se raspada ovako:
- pronaći . -ime *.png : |_+_| će tražiti iz trenutnog imenika. za objekte s nazivima koji odgovaraju *.png koji su datoteke (|_+_|).
- -ispis0 : imena će biti završena nultim znakom, a razmaci i čudni znakovi će biti opskrbljeni.
- xargs -0 : xargs također će smatrati da su nazivi datoteka null-terminirani, a razmaci i čudni znakovi neće uzrokovati probleme.
- rm -v -rf {} : rm će biti opsežan i izvijestiti što se događa (|_+_|). Bit će rekurzivno (-r) i pregledavati ugniježđene poddirektorije, te će ukloniti datoteke bez upita (|_+_|). Svaki naziv datoteke zamjenjuje {}.
Pretražuju se svi poddirektoriji, a datoteke koje odgovaraju uzorku pretraživanja se brišu.
Uklanjanje ugniježđenih direktorija
Recimo da želimo ukloniti skup ugniježđenih poddirektorija. |_+_| dat će nam da ih vidimo.
-1
ls
Oglas Ova naredba će koristiti find za rekurzivno pretraživanje unutar trenutnog direktorija. Cilj pretraživanja je direktorij nazvan level_one. Imena direktorija se prosljeđuju kroz |_+_| do |_+_|.
Jedine značajne promjene između ove naredbe i prethodne naredbe su, pojam za pretraživanje je naziv najvišeg direktorija i |_+_| govori |_+_| tražiti direktorije, a ne datoteke.
Naziv svakog imenika ispisuje se kako se uklanja. Možemo provjeriti s |_+_| :
xargs
Svi ugniježđeni poddirektoriji se brišu.
Brisanje svih datoteka, osim jedne vrste datoteke
Možemo koristiti |_+_|, |_+_| i |_+_| za brisanje svih datoteka osim jedne vrste koju želimo zadržati. Malo je kontraintuitivno, ali dajemo naziv vrste datoteke koju želimo zadržati , a ne naziv onih koje želimo izbrisati.
The |_+_| opcija govori |_+_| da biste vratili nazive datoteka koje nemoj odgovara uzorku pretraživanja. Koristimo |_+_| (početni argumenti) opcija s |_+_| još jednom. Ovaj put token zamjenskog niza koji definiramo je {}. Ovo će se ponašati potpuno isto kao token zamjenskog niza koji smo prethodno generirali, a koji je slučajno bio %.
xargs
Možemo provjeriti s |_+_|. Jedine datoteke koje su ostale u direktoriju su one koje odgovaraju *.sh uzorku pretraživanja.
xargs
Izrada arhivske datoteke pomoću Xargs-a
Možemo koristiti |_+_| za traženje datoteka i prolazak kroz |_+_| na |_+_|, za stvaranje arhivske datoteke.
OglasTražit ćemo u trenutnom imeniku. Uzorak pretraživanja je *.page pa ćemo tražiti .page datoteke.
wc
Datoteke su navedene kako je očekivano, jer je arhivska datoteka stvorena.
Posrednik podataka
Ponekad vam je potrebna mala skela kada slažete stvari zajedno. |_+_| premošćuje jaz između naredbi koje mogu ispumpati informacije i naredbi koje nisu napravljene da ih prihvate.
Oba |_+_| i |_+_| imaju ogroman broj opcija. Potičemo vas da provjerite njihove man stranice kako biste saznali više.
POVEZANO: Najbolja prijenosna računala s Linuxom za programere i entuzijaste
PROČITAJTE SLJEDEĆE- & rsaquo; Kako koristiti curl za preuzimanje datoteka iz naredbenog retka Linuxa
- & rsaquo; Kako koristiti cijevi na Linuxu
- › 5 web stranica koje svaki korisnik Linuxa treba označiti
- & rsaquo; Cyber ponedjeljak 2021.: Najbolje tehničke ponude
- › Kako pronaći svoj Spotify omotan 2021
- › Funkcije u odnosu na formule u Microsoft Excelu: u čemu je razlika?
- › Mapa računala je 40: Kako je Xerox Star stvorio radnu površinu
- › Što je MIL-SPEC zaštita od pada?
Dave McKay je prvi put koristio računala kada je bušena papirna traka bila u modi i od tada se bavi programiranjem. Nakon više od 30 godina u IT industriji, sada je stalni tehnološki novinar. Tijekom svoje karijere radio je kao freelance programer, voditelj međunarodnog tima za razvoj softvera, voditelj projekta IT usluga, a nedavno i kao službenik za zaštitu podataka. Njegovo pisanje objavili su howtogeek.com, cloudsavvyit.com, tenterpriser.com i opensource.com. Dave je Linux evanđelist i zagovornik otvorenog koda.
Pročitajte cijelu biografiju