Bli ekspert på Linux-kommandolinjen · leksjon

`xargs` for sammenkjeding av kommandoer

Lær å bygge og kjøre kommandolinjer fra standard inndata ved hjelp av `xargs` for effektiv oppgaveautomatisering.

Leksjon 3 av 411 trinn

`xargs` for sammenkjeding av kommandoer er en gratis leksjon i Bli ekspert på Linux-kommandolinjen på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Bli ekspert på Linux-kommandolinjen, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Bli ekspert på Linux-kommandolinjen inneholder totalt 4 leksjoner.

Introduksjon til `xargs`

xargs er et kraftig kommandolinjeverktøy som fungerer som et bindeledd mellom kommandoer. Det henter inndata fra standardinndata (stdin), bygger nye kommandolinjer og kjører dem.

  • Det leser elementer (vanligvis ord eller linjer) fra stdin.
  • Deretter bruker det disse elementene som argumenter for en annen kommando.
  • Dette er svært nyttig for å automatisere oppgaver som omfatter mange filer eller inndata fra andre kommandoer.

Grunnleggende bruk av `xargs`

La oss se på xargs i sin enkleste form. Her sender echo en liste med ord til xargs. xargs tar deretter disse ordene og sender dem som argumenter til en ny echo-kommando.

Prøv å kjøre dette eksempelet:

echo "apple banana cherry" | xargs echo

Koble sammen `find` med `xargs`

En av de vanligste og kraftigste bruksområdene for xargs er behandling av filer som er funnet av kommandoen find. find lister opp filer, og xargs bruker deretter disse navnene til å utføre en handling.

Først oppretter vi noen eksempel-filer, og deretter bruker vi find til å finne .txt-filer og xargs til å vise navnene deres.

touch doc1.txt doc2.txt report.pdf
find . -name "*.txt" | xargs echo

Standard håndtering av argumenter

Som standard prøver xargs å hente så mange argumenter som mulig fra standardinndata og legger dem til i én enkelt kjøring av målkommandoen.

  • Det leser elementer som er adskilt med mellomrom eller linjeskift.
  • Det bygger en kommando ved å legge disse elementene til på slutten.
  • Hvis listen med elementer er for lang for én kommando, kjører det automatisk kommandoen flere ganger.

Begrense argumenter med `-n`

Noen ganger må De kjøre målkommandoen flere ganger, med et bestemt antall argumenter hver gang. Alternativet -n lar Dem angi hvor mange argumenter xargs skal sende med ved hver kjøring av kommandoen.

Her kjører xargs echo for hvert andre ord det mottar:

echo "one two three four five six" | xargs -n 2 echo

Egendefinert plassering med `-I`

Når inndataelementet ikke bare skal være det siste argumentet, trenger De mer kontroll. Alternativet -I lar Dem definere en plassholderstreng (for eksempel {}) som xargs erstatter med hvert inndataelement.

Dette lar Dem sette inn elementet hvor som helst i kommandoen, ikke bare på slutten.

echo "fileA.txt fileB.txt" | xargs -I {} echo "Processing: {}"

Parallell kjøring med `-P`

For oppgaver som kan kjøres uavhengig av hverandre kan xargs -P øke hastigheten betydelig ved å kjøre flere kommandoer parallelt. De angir hvor mange parallelle prosesser som skal kjøres.

  • -P 0 ber xargs om å kjøre så mange prosesser som mulig.
  • Vær forsiktig med ressurskrevende kommandoer, siden dette kan overbelaste systemet.
  • Dette er utmerket for satsvis behandling, for eksempel når mange bilder skal endre størrelse.

Sikker håndtering med `-0`

Filnavn i Linux kan inneholde mellomrom, linjeskift eller andre spesialtegn. Hvis de ikke håndteres riktig, kan dette føre til problemer for xargs, siden det vanligvis deler inndata ved mellomrom eller linjeskift.

Løsningen er å bruke find -print0 (som skriver ut nullterminerte strenger) sammen med xargs -0 (som leser nullterminerte strenger på en sikker måte).

touch "my file with spaces.txt"
find . -name "*.txt" -print0 | xargs -0 echo

Praktisk bruk: slette filer

La oss kombinere det vi har lært i en praktisk oppgave: finne og slette alle .bak-filer i gjeldende katalog. Vi bruker find -print0 og xargs -0 rm for sikkerhets skyld.

Advarsel: Kommandoen rm sletter permanent. Kontroller alltid kommandoene nøye før De kjører dem!

touch file1.txt.bak file2.log.bak temp.bak
echo "Files before deletion:"
ls -l *.bak
find . -name "*.bak" -print0 | xargs -0 rm
echo "Files after deletion:"
ls -l *.bak

Rask kontroll av `xargs`

Se på følgende kommando:

echo "one two three four five" | xargs -n 2 echo

Hva blir det nøyaktige resultatet?

Oppsummering: `xargs` for automatisering

De har lært hvordan xargs fungerer som et kraftig bindeledd ved å gjøre standardinndata om til argumenter for andre kommandoer. Det er et grunnleggende verktøy for effektiv automatisering på kommandolinjen!

  • Det er avgjørende for å koble sammen kommandoer som find med andre verktøy.
  • Alternativer som -n, -I, -P og -0 gir detaljert kontroll over hvordan kommandoer bygges og kjøres.
  • Det er avgjørende for sikker håndtering av filnavn med spesialtegn å bruke xargs -0 sammen med find -print0.

Fortsett å øve for å bli fortrolig med dette allsidige verktøyet og effektivisere shell-skriptene Deres!

Gratis å komme i gang

Lær deg Bli ekspert på Linux-kommandolinjen med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «`xargs` for sammenkjeding av kommandoer» gratis?

Ja – hele teksten i «`xargs` for sammenkjeding av kommandoer» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Bli ekspert på Linux-kommandolinjen-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Bli ekspert på Linux-kommandolinjen inneholder totalt 4 leksjoner.

Hva lærer jeg i «`xargs` for sammenkjeding av kommandoer»?

Lær å bygge og kjøre kommandolinjer fra standard inndata ved hjelp av `xargs` for effektiv oppgaveautomatisering. Du øver på Bli ekspert på Linux-kommandolinjen med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Bli ekspert på Linux-kommandolinjen?

Ingen tidligere erfaring er nødvendig. Bli ekspert på Linux-kommandolinjen på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «`xargs` for sammenkjeding av kommandoer»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Bli ekspert på Linux-kommandolinjen-leksjonen?

Ja. Alle Bli ekspert på Linux-kommandolinjen-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Bli god på regulære uttrykk (Regex)
  2. Avanserte mønstre med `grep` og `find`
  3. `xargs` for sammenkjeding av kommandoer
  4. Redigere strømmer i stor skala med sed og tr
← Tilbake til Bli ekspert på Linux-kommandolinjen