Provided by: manpages-ro_4.26.0-1_all 

NUME
xargs - construiește și execută linii de comandă de la intrarea standard
SINOPSIS
xargs [opțiuni] [comanda [argumente-inițiale]]
DESCRIERE
Această pagină de manual documentează versiunea GNU a xargs. xargs citește elemente de la intrarea
standard, delimitate de spații libere (care pot fi protejate cu ghilimele duble sau simple sau cu o bară
oblică inversă) sau de linii noi, și execută comanda (implicit echo) de una sau mai multe ori cu orice
argumente-inițiale urmate de elemente citite de la intrarea standard. Liniile goale de la intrarea
standard sunt ignorate.
Linia de comandă pentru comandă este construită până când atinge o limită definită de sistem (cu excepția
cazului în care se utilizează opțiunile -n și -L). comanda specificată va fi invocată de câte ori este
necesar pentru a epuiza lista de elemente de intrare. În general, vor exista mult mai puține invocări ale
comenzii decât numărul elementelor de intrare. În mod normal, acest lucru va avea beneficii semnificative
în materie de performanță. Unele comenzi pot fi executate în paralel; a se vedea opțiunea -P.
Deoarece numele de fișiere Unix pot conține spații libere și linii noi, acest comportament implicit este
adesea problematic; numele de fișiere care conțin spații libere și/sau linii noi sunt procesate incorect
de xargs. În aceste situații, este mai bine să se utilizeze opțiunea -0, care previne astfel de probleme.
Atunci când utilizați această opțiune, va trebui să vă asigurați că programul care produce datele de
intrare pentru xargs utilizează, de asemenea, un caracter nul ca separator. Dacă acest program este GNU
find, de exemplu, opțiunea -print0 face acest lucru pentru dumneavoastră.
Dacă orice invocare a comenzii iese cu starea 255, xargs se va opri imediat fără a citi alte date de
intrare. Un mesaj de eroare este emis la ieșirea de eroare standard atunci când se întâmplă acest lucru.
OPȚIUNI
-0, --null
Elementele de intrare se termină cu un caracter nul în loc de spațiu alb, iar ghilimelele și bara
inversă nu sunt speciale (fiecare caracter este luat literal). Dezactivează
șirul-de-sfârșit-de-fișier, care este tratat ca orice alt argument. Utilă atunci când elementele
de intrare pot conține spații albe, ghilimele sau bare oblice inverse. Opțiunea GNU «find -print0»
produce date de intrare adecvate pentru acest mod.
-a fișier, --arg-file=fișier
Citește elemente din fișier în loc de la intrarea standard. Dacă utilizați această opțiune,
intrarea standard rămâne neschimbată atunci când se execută comenzile. În caz contrar, intrarea
standard este redirecționată către /dev/null.
--delimiter=delimitator, -d delimitator
Elementele de intrare se termină cu caracterul specificat. Delimitatorul specificat poate fi un
singur caracter, un caracter de eludare în stil C, cum ar fi \n, sau un cod de eludare octal sau
hexazecimal. Codurile de eludare octale și hexazecimale se înțeleg ca și în cazul comenzii printf.
Caracterele multi-octet nu sunt acceptate. La procesarea datelor de intrare, ghilimelele și barele
oblice inverse nu sunt speciale; fiecare caracter din datele de intrare este luat literal.
Opțiunea -d dezactivează orice șir de sfârșit de fișier, care este tratat ca orice alt argument.
Puteți utiliza această opțiune atunci când datele de intrare constau doar în elemente separate
prin linii noi, deși este aproape întotdeauna mai bine să vă proiectați programul pentru a utiliza
--null atunci când acest lucru este posibil.
-E șir-eof
Stabilește șirul-de-sfârșit-de-fișier la șir-eof. În cazul în care șirul de sfârșit de fișier
apare ca linie de intrare, restul intrării este ignorat. Dacă nu se utilizează nici -E, nici -e,
nu se utilizează șirul de sfârșit de fișier.
-e[șir-eof], --eof[=șir-eof]
Această opțiune este sinonimă cu opțiunea -E. Utilizați -E în schimb, deoarece este conformă cu
POSIX, în timp ce această opțiune nu este. Dacă șir-eof este omis, nu există un
șir-de-sfârșit-de-fișier. Dacă nu se utilizează nici -E, nici -e, nu se utilizează șirul de
sfârșit de fișier.
-I șir-înlocuire
Înlocuiește aparițiile lui șir-înlocuire în argumentele inițiale cu nume citite de la intrarea
standard. De asemenea, spațiile libere fără ghilimele nu termină elementele de intrare; în schimb,
separatorul este caracterul de linie nouă. Implică -x și -L 1.
-i[șir-înlocuire], --replace[=șir-înlocuire]
Această opțiune este un sinonim pentru -Ișir-înlocuire dacă se specifică șir-înlocuire. Dacă
lipsește argumentul șir-înlocuire, efectul este același ca și în cazul -I{}. Opțiunea -i este
depreciată; utilizați opțiunea -I în locul acesteia.
-L max-linii
Utilizează cel mult max-linii linii de intrare fără spații libere pe fiecare linie de comandă.
Liniile goale la sfârșit determină continuarea logică a unei linii de intrare pe următoarea linie
de intrare. Implică -x.
-l[max-linii], --max-lines[=max-linii]
Sinonim pentru opțiunea -L. Spre deosebire de -L, argumentul max-linii este opțional. Dacă
max-linii nu este specificat, valoarea implicită este 1. Opțiunea -l este depreciată, deoarece
standardul POSIX specifică în schimb -L.
-n max-args, --max-args=max-args
Utilizează cel mult max-args argumente pe linie de comandă. Se vor utiliza mai puține argumente
decât max-args dacă se depășește dimensiunea (a se vedea opțiunea -s), cu excepția cazului în care
se dă opțiunea -x, caz în care se va ieși din xargs.
-P max-procs, --max-procs=max-procs
Rulează până la max-procs procese la un moment dat; valoarea implicită este 1. Dacă max-procs este
0, xargs va rula cât mai multe procese posibile la un moment dat. Folosiți opțiunea -n sau
opțiunea -L cu -P; în caz contrar, există șanse să se execute doar o singură execuție. În timp ce
xargs rulează, puteți trimite procesului său un semnal SIGUSR1 pentru a crește numărul de comenzi
care vor fi executate simultan sau un SIGUSR2 pentru a reduce numărul. Nu îl puteți crește peste o
limită definită de implementare (care este afișată cu „--show-limits”). Nu se poate scădea sub 1.
xargs nu-și termină niciodată comenzile; atunci când i se cere să scadă numărul de comenzi,
așteaptă doar ca mai multe comenzi existente să se termine înainte de a începe o alta.
Dacă nu utilizați opțiunea -P, xargs nu va gestiona semnalele SIGUSR1 și SIGUSR2, ceea ce înseamnă
că acestea vor încheia programul (cu excepția cazului în care au fost blocate în procesul părinte
înainte ca xargs să fie inițiat).
Rețineți că este de competența proceselor apelate să gestioneze în mod corespunzător accesul
paralel la resursele partajate. De exemplu, dacă mai multe dintre ele încearcă să imprime la
ieșirea standard (stdout), ieșirile vor fi produse într-o ordine nedeterminată (și foarte probabil
amestecate), cu excepția cazului în care procesele colaborează în vreun fel pentru a preveni acest
lucru. Folosirea unei scheme de blocare este o modalitate de a preveni astfel de probleme. În
general, utilizarea unei scheme de blocare va contribui la asigurarea unei ieșiri corecte, dar va
reduce performanța. Dacă nu doriți să tolerați diferența de performanță, aranjați pur și simplu ca
fiecare proces să producă un fișier de ieșire separat (sau să utilizeze în alt mod resurse
separate).
-o, --open-tty
Redeschide intrarea standard ca /dev/tty în procesul copil înainte de a executa comanda. Acest
lucru este util dacă doriți ca xargs să ruleze o aplicație interactivă.
-p, --interactive
Întreabă utilizatorul dacă dorește să execute fiecare linie de comandă și să citească o linie din
terminal. Execută linia de comandă numai dacă răspunsul începe cu „y” sau „Y”. Implică -t.
--process-slot-var=nume
Stabilește variabila de mediu nume la o valoare unică în fiecare proces copil care rulează.
Valorile sunt refolosite odată ce procesele copil ies. Acest lucru poate fi utilizat, de exemplu,
într-o schemă rudimentară de distribuție a sarcinii.
-r, --no-run-if-empty
În cazul în care intrarea standard nu conține niciun spațiu în alb, nu execută comanda. În mod
normal, comanda este executată o singură dată, chiar dacă nu există nicio intrare. Această opțiune
este o extensie GNU.
-s max-caractere, --max-chars=max-caractere
Utilizează cel mult max-caractere caractere pe linie de comandă, inclusiv comanda și argumentele
inițiale, precum și caracterele nule de terminare de la capetele șirurilor de argumente. Cea mai
mare valoare permisă depinde de sistem și este calculată ca fiind limita de lungime a argumentelor
pentru «exec», minus dimensiunea mediului dumneavoastră, minus 2048 de octeți de spațiu de
manevră. Dacă această valoare este mai mare de 128KiB, se utilizează 128KiB ca valoare implicită;
în caz contrar, valoarea implicită este cea maximă. 1KiB reprezintă 1024 de octeți. xargs se
adaptează automat la constrângeri mai stricte.
--show-limits
Afișează limitele de lungime a liniei de comandă care sunt impuse de sistemul de operare, de
dimensiunea memoriei tampon aleasă de xargs și de opțiunea -s. Canalizați intrarea către /dev/null
(și poate specificați --no-run-if-empty) dacă nu doriți ca xargs să facă ceva.
-t, --verbose
Afișează linia de comandă la ieșirea de eroare standard înainte de a o executa.
-x, --exit
Iese în cazul în care dimensiunea (a se vedea opțiunea -s) este depășită.
-- Delimitează lista de opțiuni. Argumentele ulterioare, dacă există, sunt tratate ca operanzi chiar
dacă încep cu -. De exemplu, xargs -- --help execută comanda --help (găsită în PATH) în loc să
afișeze textul de utilizare, iar xargs -- --comanda_mea execută comanda --comanda_mea în loc să
respingă aceasta ca opțiune nerecunoscută.
--help Afișează un rezumat al opțiunilor lui xargs și iese.
--version
Afișează numărul versiunii xargs și iese.
Opțiunile --max-lines (-L, -l), --replace (-I, -i) și --max-args (-n) se exclud reciproc. Dacă unele
dintre ele sunt specificate în același timp, atunci xargs va utiliza, în general, opțiunea specificată
ultima în linia de comandă, adică va restaura valoarea opțiunii incriminate (dată înainte) la valoarea sa
implicită. În plus, xargs va emite un diagnostic de avertizare la ieșirea de eroare standard. Excepția de
la această regulă este că valoarea specială max-arg 1 („-n1”) este ignorată după opțiunea --replace și
alias-urile sale -I și -i, deoarece nu ar intra de fapt în conflict.
EXEMPLE
find /tmp -name core -type f -print | xargs /bin/rm -f
Găsește fișierele cu numele core în sau sub directorul /tmp și le șterge. Rețineți că acest lucru va
funcționa incorect dacă există nume de fișiere care conțin linii noi sau spații.
find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f
Găsește fișierele numite core în sau sub directorul /tmp și le șterge, procesând numele de fișiere astfel
încât numele de fișiere sau directoare care conțin spații sau linii noi să fie tratate corect.
find /tmp -depth -name core -type f -delete
Găsește fișierele numite core în sau sub directorul /tmp și le șterge, dar mai eficient decât în exemplul
anterior (deoarece se evită necesitatea de a utiliza fork(2) și exec(2) pentru a lansa rm și nu avem
nevoie de procesul suplimentar xargs).
cut -d: -f1 < /etc/passwd | sort | xargs echo
Generează o listă compactă a tuturor utilizatorilor din sistem.
STARE DE IEȘIRE
xargs iese cu următoarea stare:
0 dacă reușește
123 dacă orice invocare a comenzii a ieșit cu starea 1-125
124 dacă comanda a ieșit cu starea 255
125 dacă comanda este omorâtă de un semnal
126 dacă comanda nu poate fi executată
127 dacă comanda nu este găsită
1 în cazul în care s-a produs o altă eroare.
Codurile de ieșire mai mari de 128 sunt utilizate de shell pentru a indica faptul că un program a murit
din cauza unui semnal fatal.
CONFORMAREA CU STANDARDELE
Începând cu versiunea 4.2.9 a GNU xargs, comportamentul implicit al xargs este de a nu avea un marcaj
logic de sfârșit de fișier. POSIX (IEEE Std 1003.1, ediția 2004) permite acest lucru.
Opțiunile „-l” și „-i” apar în versiunea din 1997 a standardului POSIX, dar nu apar în versiunea din 2004
a standardului. Prin urmare, ar trebui să utilizați în schimb „-L” și, respectiv, „-I”.
Opțiunea „-o” este o extensie a standardului POSIX pentru o mai bună compatibilitate cu BSD.
Standardul POSIX permite implementărilor să aibă o limită privind dimensiunea argumentelor pentru
funcțiile exec. Această limită poate fi de până la 4096 octeți, inclusiv dimensiunea mediului. Pentru ca
scripturile să fie portabile, acestea nu trebuie să se bazeze pe o valoare mai mare. Cu toate acestea, nu
cunosc nicio implementare a cărei limită reală să fie atât de mică. Opțiunea --show-limits poate fi
utilizată pentru a descoperi limitele reale în vigoare pe sistemul actual.
În versiunile de xargs până la versiunea 4.9.0 inclusiv, SIGUSR1 și SIGUSR2 nu ar determina xargs să
termine chiar dacă opțiunea -P nu a fost utilizată.
ISTORIC
Programul xargs a fost inventat de Herb Gellis la Bell Labs. Consultați manualul Texinfo pentru
«findutils», Finding Files, pentru mai multe informații.
ERORI
Nu este posibil ca xargs să fie utilizat în siguranță, deoarece va exista întotdeauna un interval de timp
între producerea listei de fișiere de intrare și utilizarea lor în comenzile pe care xargs le emite. Dacă
alți utilizatori au acces la sistem, aceștia pot manipula sistemul de fișiere în timpul acestui interval
de timp pentru a forța acțiunea comenzilor pe care xargs le execută să se aplice unor fișiere pe care nu
le-ați intenționat. Pentru o discuție mai detaliată a acestei probleme și a problemelor conexe,
consultați capitolul „Security Considerations” din documentația findutils Texinfo. Opțiunea -execdir din
find poate fi adesea utilizată ca o alternativă mai sigură.
Atunci când utilizați opțiunea -I, fiecare linie citită de la intrare este pusă în memoria tampon
internă. Aceasta înseamnă că există o limită superioară a lungimii liniei de intrare pe care xargs o va
accepta atunci când este utilizată cu opțiunea -I. Pentru a ocoli această limitare, puteți utiliza
opțiunea -s pentru a mări spațiul de tampon pe care îl utilizează xargs și puteți utiliza, de asemenea, o
invocare suplimentară a xargs pentru a vă asigura că nu apar linii foarte lungi. De exemplu:
vreo-comandă | xargs -s 50000 echo | xargs -I '{}' -s 100000 rm '{}'
Aici, prima invocare a xargs nu are o limită de lungime a liniei de intrare, deoarece nu utilizează
opțiunea -i. A doua invocare a xargs are o astfel de limită, dar ne-am asigurat că nu întâlnește
niciodată o linie mai lungă decât poate gestiona. Aceasta nu este o soluție ideală. În schimb, opțiunea
-i nu ar trebui să impună o limită de lungime a liniei, motiv pentru care această discuție apare în
secțiunea ERORI. Problema nu apare la ieșirea lui find(1), deoarece acesta emite doar un nume de fișier
pe linie.
În versiunile de xargs până la versiunea 4.9.0 inclusiv, xargs -P ieșea în timp ce unii dintre copiii săi
erau încă în execuție, dacă unul dintre aceștia ieșea cu starea 255.
RAPORTAREA ERORILOR
Ajutor în internet pentru GNU findutils: <https://www.gnu.org/software/findutils/#get-help>.
Raportați orice erori de traducere la: <https://translationproject.org/team/ro.html>
Raportați orice altă problemă prin intermediul formularului de la sistemul de urmărire a erorilor al GNU
Savannah:
<https://savannah.gnu.org/bugs/?group=findutils>
Subiectele generale despre pachetul GNU findutils sunt discutate pe lista de discuții bug-findutils:
<https://lists.gnu.org/mailman/listinfo/bug-findutils>
DREPTURI DE AUTOR
Drepturi de autor © 1990-2024 Free Software Foundation, Inc. Licența GPLv3+: GNU GPL versiunea 3 sau
ulterioară <https://gnu.org/licenses/gpl.html>.
Acesta este software liber: sunteți liber să-l modificați și să-l redistribuiți. Nu există NICIO
GARANȚIE, în limitele prevăzute de lege.
CONSULTAȚI ȘI
find(1), kill(1), locate(1), updatedb(1), fork(2), execvp(3), locatedb(5), signal(7)
Documentația completă este disponibilă la <https://www.gnu.org/software/findutils/xargs>.
sau local prin intermediul comenzii: info xargs
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu
<remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o
versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO
RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
ro@lists.sourceforge.net.
XARGS(1)