Hvordan bruke Xargs på Linux

Hvordan bruke Xargs på Linux
xargs er et kommandolinjeverktøy. Hvis du vil omdirigere utdataene fra en kommando som argument for en annen kommando, er Xargs verktøyet for deg. Det er et veldig nyttig verktøy for enkelt å gjøre mange ting på kommandolinjen. I denne artikkelen skal jeg vise deg hvordan du bruker Xargs på Linux. Så la oss komme i gang.

Hvordan Xargs fungerer:

Formatet du bruker Xargs -kommandoen er:

$ Command1 | XArgs Command2

Du kan også endre oppførselen til XArgs med noen alternativer. I så fall vil formatet til XArgs -kommandoen være:

$ Command1 | XArgs [Alternativer] Command2

Her, produksjonen av Kommando1 vil bli brukt som argument av Kommando2. Utgangen av Kommando1 er brutt ned i mange argumenter av Xargs, avhengig av en karakter som heter avgrenser. Deretter kjører Xargs kommandoen Kommando2 for hvert av disse argumentene og at argumentet blir gitt som kommandoen til kommandoen Kommando2.

La oss for eksempel si, utgangen fra Kommando1 er som følgende:

Value1 Value2 Value3

La oss si, avgrensekarakteren er rom. Nå, produksjonen av Kommando1 vil bli brutt inn i 3 argumenter, verdi1, verdi2, og verdi3.

Nå kjører Xargs kommandoen Kommando2 for hvert av de tre argumentene en gang.

$ Command2 Value1
$ COMMAND2 VALUE2
$ Command2 Value3

Her, verdi1, verdi2, og verdi3 er argumentene analysert av xargs fra kommandoen fra kommandoen Kommando1.

Du kan oppnå samme effekt ved hjelp av løkker i et skallskript. Men Xargs er bare en enklere måte å gjøre ting uten løkker, spesielt på kommandolinjen.

Som standard er avgrenseren av Xargs Newline/Space Character. Men du kan endre avgrensekarakteren med -d eller -avgrensning Alternativ for xargs.

Som standard jobber Xargs med ett argument om gangen. Hvis du vil kjøre kommandoen Kommando2 med flere argumenter fra kommandoen fra kommandoen Kommando1, Da kan du bruke -n eller -Max-Args Alternativ for xargs. Noen ganger må du fortelle Xargs spesielt for å jobbe med ett argument om gangen med -n eller -Max-Args alternativ.

Du kan også legge til eller forberede andre strenger til argumentene som er gitt til kommandoen Kommando2 bruker -Jeg Alternativ for xargs.

Det er mange andre alternativer for xargs, men disse 3 er de viktigste og nyttige. Så jeg vil bare dekke disse 3 Xargs -argumentene i denne artikkelen.

Det er nok blabbering. La oss gå gjennom noen eksempler.

Eksempel 1: Opprette og fjerne filer som er oppført i en tekstfil

La oss si, du har en liste over filnavn i en tekstfil filer.tekst.

Du kan se innholdet i tekstfilen filer.tekst Som vist på skjermbildet nedenfor.

$ kattefiler.tekst

Nå kan du opprette alle filene som er oppført i filer.tekst tekstfil ved hjelp av ta på kommando med xargs følgende:

$ kattefiler.txt | Xargs berøring

Som du ser er filene opprettet som oppført i filer.tekst.

La oss si, du vil fjerne filene som er oppført i filer.tekst tekstfil. Du kan bruke rm kommando med xargs følgende:

$ kattefiler.txt | xargs rm -v

Bare filene som er oppført i filer.tekst Filen fjernes som du kan se på skjermdumpen nedenfor.

Dette er et veldig enkelt eksempel på xargs.

Eksempel 2: omdirigere stdout til kommandoer som ikke støtter rør

Du kan omdirigere stdout av en kommando Kommando1 som stdin av en annen kommando Kommando2 Hvis kommando Kommando2 Støtter Linux -rør. Men hvis kommandoen ikke støtter røret, vil du ikke kunne gjøre det.

For eksempel ekko Kommandoen støtter ikke rør. Så følgende kommando vil ikke skrive ut noe som du kan se på skjermdumpen nedenfor.

$ Dato | ekko

Xargs -kommando kan hjelpe deg med å omdirigere stdout av Kommando1 (i dette tilfellet Dato) til stdin av Kommando2 (i dette tilfellet ekko) Som du kan se på skjermbildet nedenfor.

$ Dato | Xargs Echo

Eksempel 3: Endring av avgrenser av XArgs

Her har jeg skrevet ut en streng 123-456-7890 (et dummy telefonnummer) ved hjelp av xargs. Som du ser blir hele utgangen behandlet som et enkelt argument og Xargs kjører ekko Kommando bare en gang.

$ ekko -n 123-456-7890 | Xargs Echo

Her har jeg endret avgrenseren til - bruker -d Alternativ for xargs. Som du kan se, utdataene 123-456-7890 blir nå behandlet som 3 forskjellige argumenter 123, 456, og 7890.

$ ekko -n "123-456-789" | xargs -n 1 -d -ekko

EKSEMPEL 4: LIVER ELLER PREDENDE XAARGS ARGUMENTS

Du kan legge til (legg til slutten av argumentet) eller prepend (legg til fronten av argumentet) streng til argumentet som er gitt til kommandoen Kommando2 Bruke xargs. Før jeg viser deg hvordan du gjør dette, vil jeg vise deg hvordan du bruker -Jeg Alternativ for xargs.

De -Jeg Alternativ for Xargs lar deg definere et symbol for XArgs -argumentet som blir gitt til kommandoen Kommando2. Det fungerer akkurat som en variabel.

For eksempel,

$ ekko -n "123-456-789" | xargs -d --n 1 -i ekko

Her definerer -Jeg alternativet som symbolet for argumentet som Xargs for øyeblikket jobber med. En gang symbolet er definert, symbolet kan brukes til å gi argumentet til kommandoen Kommando2, som (symbolet ) vil bli erstattet av verdien av argumentet.

Nå, for å legge til strengen .tekst (La oss si) Til hvert argument kan du bruke XArgs som følger:

$ ekko -n "123-456-789" | xargs -d --n 1 -i ekko .tekst

På samme måte kan du forberede strengen Hallo (La oss si) til hvert argument som følger:

$ ekko -n "123-456-789" | xargs -d --n 1 -i ekko "hallo "

Eksempel 5: Endre utvidelser av spesifikke filer

Denne er litt vanskelig. Men jeg vil forklare hvordan det fungerer. Ikke bekymre deg.

La oss si, du har noen filer i din nåværende arbeidskatalog med forskjellige filutvidelser. Nå vil du endre dem alle til png Utvidelse.

Du kan endre filutvidelsen av alle filene i din nåværende arbeidskatalog til PNG med XArgs som følger:

$ ls | xargs -i bash -c 'fil = && mv -v $ fil $ fil %%.*.png '

Som du kan se, har all filutvidelsen endret seg til PNG.

Her starter Xargs et bash subskall og kjører bash -kommandoen

Fil = && mv -v $ fil $ fil %%.*.png

Først, Fil = tildeler symbolet Verdi, som er filnavnet (argumentverdien til XArgs) til FIL Skallvariabel.

Deretter, mv Kommando brukes til å endre filtypen.

De $ Fil Shell -variabel inneholder det originale filnavnet.

$ Fil %%.* fjerner utvidelsen av filnavnet (inkludert . karakter) og da .png Strengen er lagt til det strippede filnavnet.

Xargs kan gjøre mye mer komplekse ting. Fortsett å prøve nye ting med Xargs. Himmelen er din grense.

Hvis du trenger hjelp på Xargs, kan du sjekke mannssiden til Xargs som følger:

$ Man xargs

Så det er slik du bruker Xargs på Linux. Takk for at du leste denne artikkelen.