Як використовувати команду xargs ⋆ ALexHost SRL

Перевірте свої навички на всіх наших хостингових послугах та отримайте знижку 15%!

Use code at checkout:

Skills
18.12.2024

Як використовувати команду xargs

Команда xargs – це потужна утиліта в системах Unix/Linux, яка використовується для створення та виконання команд за допомогою стандартного вводу. Вона приймає вхідні дані з команди або файлу і передає їх як аргументи іншій команді. Це особливо корисно при роботі з великою кількістю файлів, аргументів або даних, які мають бути оброблені іншими командами.

У цій статті ми розглянемо принцип роботи xargs, його практичні випадки використання і те, як його застосовувати у різних сценаріях.

Базове використання xargs

Команда xargs зчитує елементи зі стандартного вводу (stdin), зазвичай розділені пробілами або новими рядками, і передає їх як аргументи вказаній команді. Найпростіший варіант використання xargs виглядає наступним чином:

команда | xargs інша_команда

Наприклад, якщо ви хочете видалити всі файли .txt у каталозі за допомогою find і rm, ви можете скористатися ними:

find . -name "*.txt" | xargs rm

Тут find генерує список .txt файлів, а xargs передає цей список як аргумент команді rm, яка видаляє файли.

Практичні приклади використання xargs

1. Передача аргументів команді

Найпоширенішим використанням xargs є передача великого списку аргументів до команди. Наприклад, ви можете створити декілька файлів за допомогою дотику:

echo "file1.txt file2.txt file3.txt" | xargs touch

Ця команда створить три файли: file1.txt, file2.txt і file3.txt.

2. Видалення файлів, знайдених за допомогою find

Потужна комбінація find і xargs дозволяє видаляти файли за певними критеріями. Наприклад, знайти і видалити всі файли .log у каталозі:

find /шлях/до/каталогу -ім'я "*.log" | xargs rm

Це знайде всі файли .log, а потім видалить їх. Без xargs вам доведеться виконувати цей процес вручну або використовувати складніші конструкції.

3. Обмеження кількості аргументів

За замовчуванням xargs передає команді якомога більше аргументів за один запуск. Однак ви можете обмежити кількість переданих аргументів за допомогою опції -n. Наприклад:

echo "one two three four five" | xargs -n 2 echo

Виводимо:

Обмежує відлуння двома аргументами за одне виконання команди, розбиваючи вхідні дані на менші фрагменти.

4. Підтвердження виконання команди

Якщо ви хочете виконати команду інтерактивно, запитуючи підтвердження перед запуском команди для кожного аргументу, скористайтеся параметром -p:

echo "file1 file2 file3" | xargs -p rm

У цьому випадку буде запитано підтвердження перед видаленням кожного файлу.

5. Робота з файлами зі спеціальними символами

Іноді назви файлів або дані можуть містити пробіли або спеціальні символи. У таких випадках краще використовувати find з опцією -print0 і xargs з опцією -0, щоб забезпечити коректну обробку даних:

find . -name "*.txt" -print0 | xargs -0 rm

Це гарантує, що імена файлів з пробілами або спеціальними символами будуть коректно передані команді rm.

6. Використання xargs з grep

Ви можете комбінувати xargs з grep для пошуку шаблону у декількох файлах. Наприклад:

find . -name "*.txt" | xargs grep "pattern"

Ця команда знаходить усі файли

.txt
у поточному каталозі і шукає у них термін “pattern”.

7. Об’єднання декількох команд за допомогою xargs

Ви можете використовувати xargs для виконання декількох команд. Наприклад, якщо ви хочете одночасно перелічити і видалити набір файлів:

find . -name "*.tmp" | tee /dev/tty | xargs rm

Тут tee виводить список .tmp файлів на термінал (через /dev/tty), а xargs передає цей список команді rm для видалення.

Спільні параметри з xargs

  • n <число>: Обмежує кількість аргументів, що передаються команді за одне виконання. Наприклад, xargs -n 2 передасть два аргументи за раз.
  • 0: Використовується для обробки вхідних даних з нульовим закінченням, зазвичай з find за допомогою -print0. Корисно для обробки назв файлів з пробілами або спеціальними символами.
  • I {}: Замінити входження {} на аргументи зі stdin. Це корисно, якщо ви хочете вставити аргументи у певне місце команди, а не лише в кінець.
  • p: Запитати у користувача підтвердження перед виконанням команди.
  • t: Виводить команду у термінал перед виконанням, корисно для налагодження.

Навіщо використовувати xargs?

  1. Ефективність: При роботі з великою кількістю файлів або вхідних даних xargs допомагає зменшити накладні витрати на виконання декількох команд, групуючи аргументи.
  2. Гнучкість: xargs забезпечує гнучкість, дозволяючи об’єднувати команди у конвеєр, безперешкодно передаючи дані між ними.
  3. Автоматизація: При написанні сценаріїв командного інтерпретатора xargs необхідний для автоматизації завдань, які вимагають обробки багатьох вхідних даних. Він робить керування списками файлів, списками аргументів і потоками даних простим і ефективним.

Висновок

Команда xargs є потужним інструментом, який покращує взаємодію з іншими командами у системах Unix/Linux. Незалежно від того, чи маєте ви справу з керуванням файлами, обробкою потоків даних або виконанням повторюваних завдань, xargs спрощує процес. Навчившись використовувати її можливості і комбінуючи її з іншими командами, такими як find, grep або rm, ви зможете значно підвищити продуктивність роботи у терміналі.

Якщо ви раніше не користувалися xargs, зараз саме час спробувати і подивитися, як він може спростити роботу з командним рядком.

Перевірте свої навички на всіх наших хостингових послугах та отримайте знижку 15%!

Use code at checkout:

Skills