Kako koristiti naredbu xargs na Linuxu

Uputa za Linux terminal na prijenosnom računalu

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.

Oglas

U 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.

Oglas

Takođ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

lsOglas

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.

Oglas

Traž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.

Linux naredbe
Datoteke katran · pv · mačka · tac · chmod · zahvat · razl · sed · S · čovjek · pushd · popd · fsck · testdisk · sljed · F D · pandok · CD · $PATH · awk · pridružiti · jq · preklopiti · jedinstven · journalctl · rep · država · ls · fstab · izbaciti · manje · chgrp · chown · rev · izgled · žice · tip · preimenovati · patentni zatvarač · otvoriti rajsfešlus · montirati · razmontirati · instalirati · fdisk · mkfs · rm · rmdir · rsync · df · gpg · mi · nano · mkdir · iz · ln · zakrpa · Pretvoriti · rclone · usitniti · SRM
Procesi alias · zaslon · vrh · Lijepo · renice · napredak · strace · sustav · tmux · chsh · povijesti · na · serija · besplatno · koji · dmesg · usermod · p.s · chroot · xargs · tty · ružičasti · lsof · vmstat · pauza · zid · Da · ubiti · spavati · sudo · njegov · vrijeme · groupadd · usermod · grupe · lshw · ugasiti · ponovno podizanje sustava · Stop · isključenje · passwd · lscpu · crontab · datum · bg · fg
Umrežavanje netstat · ping · traceroute · ip · ss · tko je · fail2ban · bmon · vas · prst · nmap · ftp · kovrča · wget · tko · tko sam ja · U · iptables · ssh-keygen · ufw

POVEZANO: Najbolja prijenosna računala s Linuxom za programere i entuzijaste

PROČITAJTE SLJEDEĆE Fotografija profila Davea McKaya Dave McKay
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

Zanimljivi Članci