Android

Xargs-komento linuxissa

Linux exec Command Demonstration

Linux exec Command Demonstration

Sisällysluettelo:

Anonim

xargs apuohjelma antaa sinun luoda ja suorittaa komentoja tavanomaisesta syötöstä. Sitä käytetään yleensä yhdessä muiden komentojen kanssa putkiston kautta.

xargs voit tarjota normaalitulon argumenttina komentorivin apuohjelmille, kuten mkdir ja rm .

Tässä opetusohjelmassa xargs komennon käytön perusteista.

Kuinka käyttää Linux xargs komentoa

xargs lukee argumentit tavanomaisesta syötöstä, erotettuna tyhjillä välilyönteillä tai uusilla riveillä, ja suorittaa määritetyn komennon käyttämällä syötettä komennon argumentteina. Jos komentoa ei anneta, oletusarvo on /bin/echo .

xargs komennon syntaksi on seuraava:

xargs]

Tyypillisin esimerkki xargs olisi siirtää useita välilyönnillä erotettuja merkkijonoja putken avulla xargs ja suorittaa komento, joka käyttää näitä merkkijonoja argumentteina.

echo "file1 file2 file3" | xargs touch

Yllä olevassa esimerkissä putkistamme vakiotulon xargs , ja touch suoritetaan jokaiselle argumentille, jolloin luodaan kolme tiedostoa. Tämä on sama kuin jos ajaisit:

touch file1 file2 file3

Kuinka tarkastella komentoa ja kehottaa käyttäjää

Tulosta komento terminaaliin ennen sen suorittamista käyttämällä -t ( --verbose ) -vaihtoehtoa:

echo "file1 file2 file3" | xargs -t touch

touch file1 file2 file3

echo "file1 file2 file3" | xargs -p touch

Kirjoita y tai Y vahvistaaksesi ja suorittaaksesi komennon:

touch file1 file2 file3 ?…y

Tämä vaihtoehto on hyödyllinen suoritettaessa tuhoisia komentoja.

Kuinka rajoittaa argumenttien määrää

Oletuksena komentoon siirrettyjen argumenttien määrä määräytyy järjestelmän rajan perusteella.

-n ( --max-args ) -asetus määrittelee annettuun komentoon lähetettävien argumenttien määrän. xargs ajaa määritettyä komentoa niin monta kertaa kuin tarvitaan, kunnes kaikki argumentit ovat loppuneet.

Seuraavassa esimerkissä standarditulosta luettavien argumenttien lukumäärä on rajoitettu yhteen.

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

Kuten alla olevasta moniosaisesta tuotosta voidaan nähdä, kosketuskomento suoritetaan erikseen jokaiselle argumentille:

touch file1 touch file2 touch file3

Kuinka suorittaa useita komentoja

Voit suorittaa useita komentoja xargs sovelluksella käyttämällä -I vaihtoehtoa. Se toimii määrittelemällä replace-str vaihtoehdon -I jälkeen ja kaikki replace-str esiintymät korvataan xargsille siirretyllä argumentilla.

Seuraava xargs esimerkki suorittaa kaksi komentoa, ensin se luo tiedostoja touch , ja sitten se luettelee tiedostot ls komennolla:

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

Tavallinen valinta replace-str on % . Voit kuitenkin käyttää toista paikkamerkkiä, esimerkiksi ARGS :

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

Erottajan määrittäminen

Käytä -d ( --delimiter ) -vaihtoehtoa asettaaksesi mukautetun --delimiter , joka voi olla joko yksi merkki tai --delimiter , joka alkaa \ .

Seuraava esimerkki, jota käytämme ; erottimena:

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

touch file1 file2 file3

Kuinka lukea kohteita tiedostosta

Xargs-komento voi myös lukea kohteita tiedostosta vakiosyötteen sijasta. Käytä -a ( --arg-file ) -vaihtoehtoa, jota seuraa tiedostonimi.

Seuraavassa esimerkissä ips.txt komento lukee ips.txt tiedoston ja ping jokaisen IP-osoitteen.

ips.txt

8.8.8.8 1.1.1.1

Käytämme myös vaihtoehtoa -L 1 , joka ohjeistaa xargs lukemaan yhden rivin kerrallaan. Jos tämä vaihtoehto jätetään pois, xargs siirtää kaikki IP: t yhdelle ping komennolle.

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

Käytä xargs kanssa

xargs käytetään useimmiten yhdessä xargs kanssa. Voit etsiä tiettyjä tiedostoja etsimällä ja käyttää sitten xargs tiedostoja suorittaakseen toimintoja näillä tiedostoilla.

Välttääksesi rivejä tai muita erikoismerkkejä sisältävien tiedostojen nimissä esiintyviä ongelmia, käytä aina löytää -print0 asetusta, joka aiheuttaa sen, että find tulostaa koko tiedostonimen ja sen jälkeen -print0 merkin. Tätä tulosta voidaan tulkita oikein --null käyttämällä -0 , ( --null ) -vaihtoehtoa.

Seuraavassa esimerkissä find tulostaa kaikkien /var/www/.cache olevien tiedostojen täydelliset nimet ja xargs siirtää tiedostopolut rm komentoon:

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

Xarg-merkkien käyttäminen välilyöntimerkkien leikkaamiseksi

xargs voidaan käyttää myös työkaluna xargs poistamiseksi tietyn merkkijonon molemmilta puolilta. Putki merkkijono vain xargs komentoon, ja se tekee trimmauksen:

echo " Long line " | xargs

Long line

Tästä voi olla hyötyä vertaamalla merkkijonoja komentosarjoissa.

#!/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.

johtopäätös

xargs on Linuxissa komentorivi-apuohjelma, jonka avulla voit rakentaa ja suorittaa komentoja.

Lisätietoja xargs vaihtoehdosta on xargs-man-sivulla.

xargs-pääte