ComandaUNIXxargs este folosită pentru a trimite sistemului un număr mare de argumente într-o comandă oarecare. Multe sisteme UNIX acceptă un număr limitat de argumente pe linia de comandă, xargs este folosită pentru a sparge lista de argumente în subliste, astfel încât numărul de argumente este acceptat de sistem. ÎnLinux, suportul pentru un număr arbitrar de argumente a fost introdus înkernel 2.6.23.[1]
xargs [opțiuni] [argumentele originale ale comenzii]
Dacă următoarea comandă depășește numărul de argumente acceptate de sistem
grep bar `find . -name "*.foo"`
putem folosi xargs ca să spargem aceste argumente într-o listă. Fiecare argument din listă este trimis independent comenziigrep:
find . -name "*.foo" | xargs grep bar
Similar cu exemplul precedent, pornim însă editorulvi în locul luigrep:
find . -name "*.foo" | xargs -0 -t -r vi
Multe comenzi UNIX au fost concepute pentru prelucrarea textului la nivel de linie. Aceste comenzi funcționează bine cu xargs cât timp liniile nu conțin caracterele '," sau spațiu. Unele programe folosesc NULL pe post de separator de recorduri (de exempluperl care folosește \0 în loc de \n).[2]
Problema este ilustrată în exemplul următor:
touch 'not important_file'ls not* | xargs rm
Dacă rulăm acest exemplu, fișierulnot important_file nu va fi șters datorită spațiului gol din nume.
O alternativă echivalentă cu find însă orientată pentru procesarea de linii esteGNU Parallel. Astfel, dacă înlocuim în exemplul de mai susfind cuparallel, exemplul va funcționa corespunzător.[3]
| v • d • m Programe înlinia de comandă pentruUnix (mai multe) | |||
| Gestionare de fișiere: | cat |cd |chmod |chown |chgrp |cksum |cmp |cp |du |df |file |fsck |ln |ls |lsof |mkdir |mount |mv |pwd |rm |rmdir |split |touch | ||
| Gestionare de procese: | at |chroot |cron |exit |kill |killall |nice |pgrep |pidof |pkill |ps |pstree |sleep |time |top |wait | ||
| Gestionare de utilizator/mediu: | env |finger |id |mesg |passwd |su |sudo |uname |uptime |w |wall |who |whoami |write | ||
| Procesare text: | awk |comm |cut |ed |ex |fmt |head |iconv |join |less |more |paste |sed |sort |tac |tail |tr |uniq |wc |xargs | ||
| ProgramareShell: | basename |echo |expr |false |printf |test |true |unset | Imprimare: lp | |
| Communicații: inetd |netstat |ping |rlogin |traceroute | Căutare: find |grep |strings | Diverse: banner |bc |cal |dd |man |size |yes | |