Як використовувати команду xargs
Команда xargs – це потужна утиліта в системах Unix/Linux, яка використовується для створення та виконання команд за допомогою стандартного вводу. Вона приймає вхідні дані з команди або файлу і передає їх як аргументи іншій команді. Це особливо корисно при роботі з великою кількістю файлів, аргументів або даних, які мають бути оброблені іншими командами.
У цій статті ми розглянемо принцип роботи xargs, його практичні випадки використання і те, як його застосовувати у різних сценаріях.
Базове використання xargs
Команда xargs зчитує елементи зі стандартного вводу (stdin), зазвичай розділені пробілами або новими рядками, і передає їх як аргументи вказаній команді. Найпростіший варіант використання xargs виглядає наступним чином:
Наприклад, якщо ви хочете видалити всі файли .txt у каталозі за допомогою find і rm, ви можете скористатися ними:
Тут find генерує список .txt файлів, а xargs передає цей список як аргумент команді rm, яка видаляє файли.
Практичні приклади використання xargs
1. Передача аргументів команді
Найпоширенішим використанням xargs є передача великого списку аргументів до команди. Наприклад, ви можете створити декілька файлів за допомогою дотику:
Ця команда створить три файли: file1.txt, file2.txt і file3.txt.
2. Видалення файлів, знайдених за допомогою find
Потужна комбінація find і xargs дозволяє видаляти файли за певними критеріями. Наприклад, знайти і видалити всі файли .log у каталозі:
Це знайде всі файли .log, а потім видалить їх. Без xargs вам доведеться виконувати цей процес вручну або використовувати складніші конструкції.
3. Обмеження кількості аргументів
За замовчуванням xargs передає команді якомога більше аргументів за один запуск. Однак ви можете обмежити кількість переданих аргументів за допомогою опції -n. Наприклад:
Виводимо:
Обмежує відлуння двома аргументами за одне виконання команди, розбиваючи вхідні дані на менші фрагменти.
4. Підтвердження виконання команди
Якщо ви хочете виконати команду інтерактивно, запитуючи підтвердження перед запуском команди для кожного аргументу, скористайтеся параметром -p:
У цьому випадку буде запитано підтвердження перед видаленням кожного файлу.
5. Робота з файлами зі спеціальними символами
Іноді назви файлів або дані можуть містити пробіли або спеціальні символи. У таких випадках краще використовувати find з опцією -print0 і xargs з опцією -0, щоб забезпечити коректну обробку даних:
Це гарантує, що імена файлів з пробілами або спеціальними символами будуть коректно передані команді rm.
6. Використання xargs з grep
Ви можете комбінувати xargs з grep для пошуку шаблону у декількох файлах. Наприклад:
Ця команда знаходить усі файли
.txt
7. Об’єднання декількох команд за допомогою xargs
Ви можете використовувати xargs для виконання декількох команд. Наприклад, якщо ви хочете одночасно перелічити і видалити набір файлів:
Тут tee виводить список .tmp файлів на термінал (через /dev/tty), а xargs передає цей список команді rm для видалення.
Спільні параметри з xargs
- –n <число>: Обмежує кількість аргументів, що передаються команді за одне виконання. Наприклад, xargs -n 2 передасть два аргументи за раз.
- –0: Використовується для обробки вхідних даних з нульовим закінченням, зазвичай з find за допомогою -print0. Корисно для обробки назв файлів з пробілами або спеціальними символами.
- –I {}: Замінити входження {} на аргументи зі stdin. Це корисно, якщо ви хочете вставити аргументи у певне місце команди, а не лише в кінець.
- –p: Запитати у користувача підтвердження перед виконанням команди.
- –t: Виводить команду у термінал перед виконанням, корисно для налагодження.
Навіщо використовувати xargs?
- Ефективність: При роботі з великою кількістю файлів або вхідних даних xargs допомагає зменшити накладні витрати на виконання декількох команд, групуючи аргументи.
- Гнучкість: xargs забезпечує гнучкість, дозволяючи об’єднувати команди у конвеєр, безперешкодно передаючи дані між ними.
- Автоматизація: При написанні сценаріїв командного інтерпретатора xargs необхідний для автоматизації завдань, які вимагають обробки багатьох вхідних даних. Він робить керування списками файлів, списками аргументів і потоками даних простим і ефективним.
Висновок
Команда xargs є потужним інструментом, який покращує взаємодію з іншими командами у системах Unix/Linux. Незалежно від того, чи маєте ви справу з керуванням файлами, обробкою потоків даних або виконанням повторюваних завдань, xargs спрощує процес. Навчившись використовувати її можливості і комбінуючи її з іншими командами, такими як find, grep або rm, ви зможете значно підвищити продуктивність роботи у терміналі.
Якщо ви раніше не користувалися xargs, зараз саме час спробувати і подивитися, як він може спростити роботу з командним рядком.