Xargs

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 13 martie 2013; verificările necesită 15 modificări .

xargs este un utilitar pentru generarea unei liste de argumente și executarea unei comenzi pe sisteme de operare asemănătoare UNIX . Comanda xargs concatenează un set fix de argumente inițiale date pe linia de comandă cu argumente citite de la intrarea standard și execută comanda specificată o dată sau de mai multe ori.

Utilizare

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

Opțiuni de lansare

-0 Folosește caracterul delimitator NULL ( \0) în loc de „spațiu” și „linie nouă” în fluxul de intrare, funcționează bine cu opțiunea -print0de comandăfind -l число Executați o comandă pentru fiecare grup din numărul dat de linii de argument nevide citite de la intrarea standard. Ultimul apel la comandă poate fi cu mai puține linii de argumente. Se consideră că o linie se termină cu primul caracter newline întâlnit, cu excepția cazului în care este precedată de un spațiu sau un caracter de tabulație; un spațiu/filă la sfârșit semnalează că următoarea linie negoală este o continuare a celei curente. Dacă numărul este omis, acesta este considerat egal cu 1. Opțiunea -lactivează opțiunea -x. -I зам_цеп Modul de inserare: comanda este executată pentru fiecare linie de intrare standard, întreaga linie fiind tratată ca un singur argument și înlocuită în argumentele inițiale în loc de fiecare apariție a șirului de caractere зам_цеп. Sunt permise maximum 5 argumente inițiale, care conțin una sau mai multe apariții ale lui зам_цеп. Spațiile și filele de la începutul liniilor de introducere sunt eliminate. Argumentele formate nu pot fi mai lungi de 255 de caractere. Dacă șirul зам_цепnu este specificat, se presupune că este egal cu { }. Opțiunea -Iinclude opțiunea -x. -n число Executați o comandă folosind cât mai multe argumente posibil, citite din intrarea standard, dar nu mai mult decât numărul dat. Vor fi folosite mai puține argumente dacă lungimea lor totală depășește dimensiunea (vezi opțiunea de mai jos -s) sau dacă au rămas mai puțin decât numărul specificat de argumente pentru ultimul apel. Dacă se specifică și opțiunea -x, fiecare grup cu numărul specificat de argumente trebuie să se încadreze în limita de dimensiune, altfel execuția xargs se oprește. -t Mod de urmărire: comanda și fiecare listă de argumente construite sunt tipărite la eroare standard înainte de execuție. -p Modul prompt: xargs cere confirmare înainte de fiecare invocare a comenzii. Este activat modul de urmărire ( -t), datorită căruia este tipărită invocarea comenzii de executat, urmată de prompt. Răspunsul y(care poate fi urmat de orice) face ca comanda să fie executată. Orice alt răspuns, inclusiv întoarcerea căruciorului, va ignora acest apel de comandă. -x Opriți execuția dacă următoarea listă de argumente este mai lungă decât dimensiunea (în caractere). Opțiunea este activată de -xopțiunile -iși -l. Dacă nu este specificată nici una dintre opțiunile -i, -lsau -n, lungimea totală a tuturor argumentelor trebuie să fie în limita de dimensiune. -s размер Setați dimensiunea totală maximă (în caractere) a fiecărei liste de argumente la dimensiunea dată. Mărimea trebuie să fie un număr pozitiv nu mai mare de 470 (valoarea implicită). Atunci când alegeți o dimensiune, rețineți că la fiecare argument se adaugă un caracter; în plus, numărul de caractere din numele comenzii este reținut. -e [лконф_цеп] Un șir de caractere лконф_цепeste considerat un semn al sfârșitului logic al unui fișier. Dacă opțiunea -enu este specificată, terminatorul este un caracter de subliniere ( _). Opțiunea -efără лконф_цепanulează capacitatea de a seta sfârșitul logic al fișierului (linia de subliniere este tratată ca un caracter normal). Comanda xargs citește intrarea standard până când ajunge la sfârșitul fișierului sau întâlnește un лконф_цеп.

Programul xargs se termină dacă primește un cod de ieșire de -1 de la comandă sau dacă comanda nu poate fi executată. Dacă comanda este un program shell, trebuie să iasă în mod explicit cu argumentul corespunzător pentru a evita returnarea accidentală a unui cod -1.

Exemple de utilizare

Această comandă preia fluxul de ieșire din comanda echo ca intrare și îl trimite ca argumente la comanda echo

ecou ABC | xargs ecou

Această comandă preia fluxul de ieșire din comanda echo ca intrare și îl trimite ca argumente la comanda echo, pornind un proces separat pentru fiecare grup de un parametru (adică pentru fiecare parametru)

ecou ABC | xargs -n 1 ecou

Următoarea procedură shell transferă toate fișierele din director $1în director $2și raportează fiecare transfer înainte de a-l executa:

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

Următoarea comandă concatenă ieșirea comenzilor între paranteze într-o singură linie, care este apoi atașată la sfârșitul fișierului jurnal:

( nume jurnal ; data ; eco $0 $* ) | xargs >>log

Utilizatorul este întrebat ce fișiere din directorul curent trebuie arhivate. Când prima comandă este executată (vezi mai jos), fișierele sunt adăugate în arhiva arhivă pe rând; când a doua comandă este executată, multe fișiere sunt adăugate la arhivă simultan.

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

Următoarea procedură shell aplică comanda diff la perechi consecutive de argumente.

ecou $* | xargs -n2 dif

O altă opțiune utilă este -0, în combinație cu find -print0sau grep -lZ( grep -l --nullpe OS X) pentru a gestiona argumente care conțin spații și ghilimele.

găsi / -type f -print0 | xargs -0 grep -liwZ GUI | xargs -0 rm -f grep -rliwZ GUI / | xargs -0 rm -f

Ambele comenzi de mai sus vor șterge toate fișierele care conțin combinația de caractere „GUI” în numele lor.

Link -uri