Android

Naredba Xargs u Linuxu

Simple and straightforward tutorial on xargs!

Simple and straightforward tutorial on xargs!

Sadržaj:

Anonim

xargs program xargs omogućuje vam izradu i izvršavanje naredbi sa standardnog unosa. Obično se koristi u kombinaciji s drugim naredbama kroz cjevovod.

Pomoću xargs možete pružiti standardni unos kao argument uslužnim programima naredbenog retka poput mkdir i rm .

U ovom ćemo udžbeniku xargs osnove upotrebe naredbe xargs .

Kako se koristi Linux xargs naredba

xargs čita argumente sa standardnog ulaza, razdvojene praznim razmacima ili novim linijama i izvršava zadanu naredbu koristeći ulaz kao argumente naredbe. Ako nije data naredba, zadano je /bin/echo .

Sintaksa naredbe xargs je sljedeća:

xargs]

Najosnovniji primjer upotrebe xargs bio bi proslijediti nekoliko nizova odvojenih s razmakom pomoću cijevi u xargs i pokrenuti naredbu koja će te nizove koristiti kao argumente.

echo "file1 file2 file3" | xargs touch

U gornjem primjeru postavljamo standardni ulaz u xargs , a touch naredba se izvodi za svaki argument, stvarajući tri datoteke. To je isto kao da se pokrenete:

touch file1 file2 file3

Kako pregledati naredbu i upitati korisnika

Za ispis naredbe na terminalu prije izvršenja koristite opciju -t ( --verbose ):

echo "file1 file2 file3" | xargs -t touch

touch file1 file2 file3

echo "file1 file2 file3" | xargs -p touch

Upišite y ili Y da biste potvrdili i pokrenite naredbu:

touch file1 file2 file3 ?…y

Ova je opcija korisna pri izvršavanju destruktivnih naredbi.

Kako ograničiti broj argumenata

Prema zadanom, broj argumenata prosljeđenih naredbi određuje se ograničenjem sustava.

Opcija -n ( --max-args ) određuje broj argumenata koji se trebaju proslijediti zadanoj naredbi. xargs izvršava xargs naredbu onoliko puta koliko je potrebno dok se svi argumenti ne iscrpe.

U sljedećem primjeru broj argumenata koji se čitaju sa standardnog unosa ograničen je na 1.

echo "file1 file2 file3" | xargs -n 1 -t touch

Kao što možete vidjeti iz višestrukog izlaznog dolje, naredba dodir izvršava se zasebno za svaki argument:

touch file1 touch file2 touch file3

Kako pokrenuti više naredbi

Za pokretanje više naredbi s xargs , koristite opciju -I . Djeluje definiranjem replace-str nakon opcije -I i sva pojavljivanja replace-str se zamjenjuju argumentom prosljeđenim u xargs.

Sljedeći primjer xargs izvest će dvije naredbe, najprije će datoteke stvoriti touch , a zatim će popisati datoteke naredbom ls :

echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'

-rw-r--r-- 1 linuxize users 0 May 6 11:54 file1 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file2 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file3

Uobičajeni izbor za replace-str je % . No možete koristiti i drugo rezervirano mjesto, na primjer, ARGS :

echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'

Kako odrediti razdjelnik

Upotrijebite opciju -d ( --delimiter ) za postavljanje prilagođenog razgraničenja, koji može biti bilo jedan znak ili niz bijega koji započinje s \ .

Sljedeći primjer koristimo ; kao delimiter:

echo "file1;file2;file3" | xargs -d ; -t touch

touch file1 file2 file3

Kako čitati stavke iz datoteke

Naredba xargs također može čitati stavke iz datoteke umjesto standardnog unosa. Da biste to učinili, upotrijebite opciju -a ( --arg-file ) nakon koje slijedi naziv datoteke.

U sljedećem primjeru naredba xargs čitat će ips.txt datoteku i ping svaku IP adresu.

ips.txt

8.8.8.8 1.1.1.1

Koristimo i opciju -L 1 koja upućuje xargs da čitaju jedan redak istovremeno. Ako se isključi ova opcija, xargs će proslijediti sve IP adrese jednoj ping naredbi.

xargs -t -L 1 -a ips.txt ping -c 1

ping -c 1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=68.1 ms… ping -c 1 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. 64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=21.4 ms

Korištenje xargs sa xargs

xargs se najčešće koristi u kombinaciji s naredbom find . Možete koristiti find za pretraživanje određenih datoteka, a zatim xargs za izvođenje operacija na tim datotekama.

Da biste izbjegli probleme s imenima datoteka koja sadrže nove linije ili druge posebne znakove, uvijek upotrijebite opciju find -print0 , koja uzrokuje da ispisuje cijelo ime datoteke, a zatim nulti znak. --null može ispravno protumačiti ovaj izlaz pomoću opcije -0 , ( --null ).

U sljedećem primjeru find će ispisati puna imena svih datoteka unutar /var/www/.cache direktorija i xargs će staze datoteka proslijediti naredbi rm :

find /var/www/.cache -type f -print0 | xargs -0 rm -f

Korištenje xargs-a za urezivanje znakova bijelog prostora

xargs se također može koristiti kao alat za uklanjanje razmaka s obje strane datog niza. Jednostavno xargs niz naredbi xargs i ona će izvršiti obrezivanje:

echo " Long line " | xargs

Long line

Ovo može biti korisno kada uspoređujete nizove u skriptama školjke.

#!/bin/bash VAR1=" Linuxize " VAR2="Linuxize" if]; then echo "Strings are equal." else echo "Strings are not equal." fi ## Using xargs to trim VAR1 if]; then echo "Strings are equal." else echo "Strings are not equal." fi

Strings are not equal. Strings are equal.

Zaključak

xargs je uslužni program naredbenog retka na Linuxu koji vam omogućuje izgradnju i izvršavanje naredbi.

Za detaljnije informacije o svakoj opciji xargs pročitajte stranicu xargs man.

xargs terminal