Xargs-kommandoen bruges typisk i en kommandolinje, hvor output fra en kommando overføres som input argumenter til en anden kommando.
I mange tilfælde er der ikke brug for en speciel kommando som xargs for at opnå det, da "pipe" og "redirection" -operatørerne udfører samme type transaktion. Imidlertid er der undertiden problemer med den grundlæggende rør- og omdirigeringsmekanisme, fx hvis argumenter indeholder mellemrum, at xarg overskrider.
Desuden udfører xargs den angivne kommando gentagne gange, om nødvendigt at behandle alle de argumenter, der er givet til den. Faktisk kan du angive, hvor mange argumenter der skal læses fra standardinputstrømmen, hver gang xargs udfører den angivne kommando.
Generelt bør kommandoen xargs bruges, hvis udgangen af en kommando skal bruges som en del af valgmulighederne eller argumenterne for en anden kommando, hvortil dataene streames (ved hjælp af røroperatøren "|"). Regelmæssig rørledning er tilstrækkelig, hvis dataene er beregnet til at være (standard) input af den anden kommando.
Hvis du f.eks. Bruger kommandoen ls til at generere en liste over filnavne og biblioteker og derefter rør denne liste i xargs-kommandoen, der udfører ekko, kan du angive, hvor mange filnavne eller katalognavne der behandles ved ekko på hver iteration som følger :
ls | xargs -n 5 echo
I dette tilfælde modtager ekko fem fil- eller katalognavne ad gangen. Da ekko tilføjer en nylinjetegn i slutningen, skrives der fem navne på hver linje.
Hvis du udfører en kommando, der returnerer et stort og uforudsigeligt antal elementer (fx filnavne), der sendes videre til en anden kommando til videre behandling, er det en god idé at kontrollere det maksimale antal argumenter, som anden kommando modtager for at undgå overbelastning og nedbrud.
Følgende kommandolinje partitionerer strømmen af filnavne, der er produceret ved at finde grupperne 200, før de videreføres til cp-kommandoen, som kopierer dem til backup vejviser.
find ./ -type f -name "* .txt" -print | xargs -l200 -i cp -f {} ./backup
"./" -elementet i find-kommandoen specificerer den aktuelle mappe til søgning. Argumentet "-type f" begrænser søgningen til filer, og "-name" * .txt "-flaget filtrerer yderligere ud noget, der ikke har en" .txt "-udvidelse. -jeg flag i xargs signalerer at {} notation repræsenterer hvert filnavn på dampen.
Følgende kommando finder filer med navnet kerne i eller under mappen / tmp og sletter dem.
find / tmp -name core -type f -print | xargs / bin / rm -f
Bemærk, at dette virker forkert, hvis der er filnavne, der indeholder nye linjer, enkelt eller dobbelt citater eller mellemrum. Den følgende version behandler filnavne på en sådan måde, at fil- eller katalognavne, der indeholder enkelt eller dobbelt citater, mellemrum eller nye linjer, håndteres korrekt.
find / tmp -name core -type f -print0 | xargs -0 / bin / rm -f
I stedet for -jeg mulighed du også kan bruge -JEG flag, som angiver den streng, som den er erstattet af indtastningslinjen i kommandorammen som i dette eksempel:
ls dir1 | xargs -I {} -t mv dir1 / {} dir / {} / code>
Erstatningstrengen er defineret som "{}". Dette betyder, at eventuelle forekomster af "{}" i kommandorammen erstattes af inputelementet videresendt til args gennem røroperationen. Dette gør det muligt at placere inputelementerne på bestemte positioner i argumenterne for kommandoen, der skal gentages (gentagne gange).