Xargs

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 13. marts 2013; checks kræver 15 redigeringer .

xargs er et værktøj til at generere en liste over argumenter og udføre en kommando på UNIX-lignende operativsystemer . Kommandoen xargs sammenkæder et fast sæt indledende argumenter givet på kommandolinjen med argumenter læst fra standardinput og udfører den angivne kommando en eller flere gange.

Brug

xargs [-l число] [-I зам_цеп] [-n число] [-t] [-p] [-x] [-s размер] [-e [лконф_цеп]] [команда [начальный_аргумент…]]

Startindstillinger

-0 Bruger NULL skilletegn ( \0) i stedet for "mellemrum" og "ny linje" i inputstrømmen, fungerer godt med -print0kommandomulighedenfind -l число Udfør en kommando for hver gruppe fra det givne antal ikke-tomme argumentlinjer læst fra standardinput. Det sidste kald til kommandoen kan være med færre linjer af argumenter. En linje anses for at slutte med det første nylinjetegn, der stødes på, medmindre den er indledt med et mellemrum eller tabulatortegn; et mellemrum/tabulator i slutningen signalerer, at den næste ikke-tom linje er en fortsættelse af den nuværende. Hvis tallet udelades, betragtes det som lig med 1. Indstillingen -laktiverer indstillingen -x. -I зам_цеп Indsæt-tilstand: Kommandoen udføres for hver linje med standardinput, hvor hele linjen behandles som et enkelt argument og erstattes af de indledende argumenter i stedet for hver forekomst af tegnstrengen зам_цеп. Der er maksimalt tilladt 5 indledende argumenter, der indeholder en eller flere forekomster af зам_цеп. Mellemrum og tabulatorer i begyndelsen af ​​inputlinjer kasseres. Formede argumenter må ikke være længere end 255 tegn. Hvis strengen зам_цепikke er angivet, antages den at være lig med { }. Indstillingen -Iinkluderer muligheden -x. -n число Udfør en kommando ved at bruge så mange argumenter som muligt, læs fra standardinput, men ikke mere end det givne tal. Færre argumenter vil blive brugt, hvis deres samlede længde overstiger størrelsen (se muligheden nedenfor -s), eller hvis der er mindre end det angivne antal argumenter tilbage for det sidste kald. Hvis indstillingen også er angivet -x, skal hver gruppe af det angivne antal argumenter passe inden for størrelsesgrænsen, ellers stopper udførelsen af ​​xargs. -t Sporingstilstand: Kommandoen og hver konstrueret argumentliste udskrives til standardfejl før udførelse. -p Prompttilstand: xargs beder om bekræftelse før hver kommandokald. Sporingstilstanden ( -t) er slået til, på grund af hvilken påkaldelsen af ​​kommandoen, der skal udføres, udskrives efterfulgt af prompten. Svaret y(som kan efterfølges af hvad som helst) får kommandoen til at blive udført. Ethvert andet svar, inklusive en vognretur, vil ignorere dette kommandokald. -x Afslut eksekveringen, hvis den næste argumentliste er længere end størrelsen (i tegn). Indstillingen aktiveres af -xindstillingerne -iog -l. Hvis ingen af ​​indstillingerne -ieller -ler -nangivet, skal den samlede længde af alle argumenter være inden for størrelsesgrænsen. -s размер Indstil den maksimale samlede størrelse (i tegn) for hver argumentliste til den givne størrelse. Størrelsen skal være et positivt tal, der ikke er større end 470 (den underforståede værdi). Når du vælger en størrelse, skal du huske på, at der tilføjes et tegn til hvert argument; desuden huskes antallet af tegn i kommandonavnet. -e [лконф_цеп] En streng af tegn лконф_цепbetragtes som et tegn på den logiske ende af en fil. Hvis indstillingen -eikke er angivet, er terminatoren en understregning ( _). Indstillingen -euden лконф_цепannullerer muligheden for at indstille den logiske ende af filen (understregningen behandles som et normalt tegn). Kommandoen xargs læser standardinput, indtil den når slutningen af ​​filen eller støder på en лконф_цеп.

Xargs-programmet afsluttes, hvis det modtager en exit-kode på -1 fra kommandoen, eller hvis kommandoen ikke kan udføres. Hvis kommandoen er et shell-program, skal den eksplicit afsluttes med det relevante argument for at undgå at returnere en -1 kode ved et uheld.

Eksempler på brug

Denne kommando tager outputstrømmen fra ekkokommandoen som input og sender den som argumenter til ekkokommandoen

ekko ABC | xargs ekko

Denne kommando tager outputstrømmen fra ekkokommandoen som input og sender den som argumenter til ekkokommandoen, hvorved der startes en separat proces for hver gruppe af én parameter (dvs. for hver parameter)

ekko ABC | xargs -n 1 ekko

Følgende shell-procedure overfører alle filer fra mappe $1til mappe $2og rapporterer hver overførsel før den udføres:

ls $1 | xargs -I {} -t mv $1 / {} $2 / {}

Følgende kommando sammenkæder outputtet af kommandoerne i parentes til en enkelt linje, som derefter tilføjes til slutningen af ​​logfilen:

( lognavn ; dato ; ekko $0 $* ) | xargs >>log

Brugeren bliver spurgt, hvilke filer fra den aktuelle mappe der skal arkiveres. Når den første kommando udføres (se nedenfor), tilføjes filerne til arkivet én ad gangen; når den anden kommando udføres, tilføjes mange filer til arkivet på én gang.

ls | xargs -p -l ar r arch ls | xargs -p | xargs ar r arch

Den følgende shell-procedure anvender diff-kommandoen til på hinanden følgende par af dens argumenter.

ekko $* | xargs -n2 diff

En anden nyttig mulighed er -0, i kombination med find -print0eller grep -lZ( grep -l --nullpå OS X) til at håndtere argumenter, der indeholder mellemrum og anførselstegn.

find / -type f -print0 | xargs -0 grep -liwZ GUI | xargs -0 rm -f grep -rliwZ GUI / | xargs -0 rm -f

Begge de ovenstående kommandoer vil slette alle filer, der indeholder kombinationen af ​​tegn "GUI" i deres navn.

Links