Взагалі xargsвикористовується для випадків, коли ви передаваєте (із символом |) щось від однієї команди до іншої ( Command1 | Command2), але вихід з першої команди неправильно приймається як вхід для другої команди.
Зазвичай це відбувається, коли друга команда неправильно обробляє введення даних через Standard In (stdin) (наприклад: Кілька рядків як вхід, спосіб встановлення рядків, символи, що використовуються як вхід, кілька параметрів як вхід, тип даних, отриманий як введення тощо). Щоб дати короткий приклад, протестуйте наступне:
Приклад 1:
ls | echo- Це нічого не зробить, оскільки echoне знає, як обробляти вхід, який він отримує. Тепер у цьому випадку, якщо ми використовуємо xargsйого, буде оброблятися вхід таким чином, щоб можна було правильно обробити echo(наприклад: як єдиний рядок інформації)
ls | xargs echo- Це виведе всю інформацію з lsодного рядка
Приклад 2:
Скажімо, у мене є кілька файлів goLang всередині папки під назвою go. Я б шукав їх приблизно так:
find go -name *.go -type f | echo- Але якби символ труби там і echoв кінці, він би не працював.
find go -name *.go -type f | xargs echo- Тут би це працювало завдяки, xargsале якби я хотів, щоб кожна відповідь findкоманди була в одному рядку, я би зробив наступне:
find go -name *.go -type f | xargs -0 echo- У цьому випадку такий же вихід з findпоказав би показник echo.
Такі команди, як cp, echo, rm, lessі інші, яким потрібен кращий спосіб обробити вхід, отримують перевагу при використанні xargs.