Команди командного рядка можуть приймати дані декількома способами. Деякі, такі як grep і awk, можуть приймати вхідні дані як аргументи командного рядка, так і з стандартного введення. Однак інші, такі як cp і echo можуть приймати лише як аргументи. Тому, коли є потреба в скрипті перетворити набір даних який виводить одна команда, в набір аргументів для іншої, або послідовність команд, для цього підходить xargs.
Для Microsoft Windows була портована версія GNU xargs, та є складовою колекції UnxUtils для Win32.[2] Основний перепис під назвою wargs є частиною проекту TextTools[3] з відкритим кодом. Також команда була портована в операційну систему IBM i.[4]
Запобігання переповнення загальної довжини команди
Одним з розповсюджених випадків використання команди xargs є видалення списку файлів за допомогою команди rm . Системи POSIX мають обмеження на максимальну загальну довжину команди[5][6].
Це обмеження дуже легко переповнити, наприклад якщо в каталозі /path/ дуже багато файлів, і ми спробуємо виконати команду
$ rm/path/*
Оболонка спробує розкрити /path/* в довжелезний рядок /path/file1 /path/file2 …, — і команда може завершитися помилкою з повідомленням про помилку «Argument list too long» (укр.Список аргументів задовгий)
Це можна переписати за допомогою команди xargs:
$ find/path-typef-print|xargsrm
У наведеному прикладі утиліта find видасть в stdout список файлів як текст, перенаправить цей список в stdin xargs. Потім xargs розбиває цей список на підсписки та викликає rm один раз для кожного підсписку.
Паралелізм
Деякі реалізації xargs також можна використовувати для розпаралелювання операцій, та обмежувати кількість потоків (підпрограм) за допомогою аргументу -P maxprocs. У наведеному нижче прикладі буде породжено 24 процеси /cpu/bound/process, кожен з яких отримує один файл як аргумент, та буде обробляти його, і після того як який-небудь з процесів закінчить свою роботу, то він звільнить місце в наборі з 24 процесів, то xargs запустить новий процес.
Застереження: якщо в іменах файлів, які обробляються, присутні такі символи як пробіл, кома, перенос рядка тощо — то це може призвести до непередбачуваної поведінки. Такі утілити як find, locate, grep і xargs мають опції -0 (або еквівалентно --null) для таких випадків.