`xargs` for sammenkjeding av kommandoer
Lær å bygge og kjøre kommandolinjer fra standard inndata ved hjelp av `xargs` for effektiv oppgaveautomatisering.
`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 echoKoble 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 echoStandard 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 echoEgendefinert 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 0berxargsom å 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 echoPraktisk 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 *.bakRask kontroll av `xargs`
Se på følgende kommando:
echo "one two three four five" | xargs -n 2 echoHva 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
findmed andre verktøy. - Alternativer som
-n,-I,-Pog-0gir detaljert kontroll over hvordan kommandoer bygges og kjøres. - Det er avgjørende for sikker håndtering av filnavn med spesialtegn å bruke
xargs -0sammen medfind -print0.
Fortsett å øve for å bli fortrolig med dette allsidige verktøyet og effektivisere shell-skriptene Deres!
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
- Bli god på regulære uttrykk (Regex)
- Avanserte mønstre med `grep` og `find`
- `xargs` for sammenkjeding av kommandoer
- Redigere strømmer i stor skala med sed og tr