Как да използвате командата xargs
Командата xargs е мощна помощна програма в системите Unix/Linux, която се използва за създаване и изпълнение на команди, използващи стандартния вход. Тя приема входни данни от команда или файл и ги предава като аргументи на друга команда. Това е особено полезно при работа с голям брой файлове, аргументи или данни, които трябва да бъдат обработени от други команди.
В тази статия ще разгледаме как работи xargs, практическите случаи на използването му и как да го приложим в различни сценарии.
Основно използване на xargs
Командата xargs чете елементи от стандартния вход (stdin), обикновено разделени с бели интервали или нови редове, и ги предава като аргументи на зададената команда. Най-основната употреба на xargs е следната:
Например, ако искате да изтриете всички .txt файлове в дадена директория с помощта на find и rm, можете да използвате:
Тук find генерира списък с .txt файлове, а xargs предава този списък като аргументи на командата rm, която изтрива файловете.
Практически примери за използване на xargs
1. Подаване на аргументи към команда
Най-честата употреба на xargs е предаването на голям списък с аргументи на команда. Например можете да създадете няколко файла с помощта на touch:
Тази команда създава три файла: 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 осигурява гъвкавост, като ви позволява да комбинирате команди в конвейер, предавайки безпроблемно данни между тях.
- Автоматизация: При писане на shell скриптове xargs е от съществено значение за автоматизиране на задачи, които изискват обработка на много входни данни. Той прави управлението на списъци с файлове, списъци с аргументи и потоци от данни лесно и ефективно.
Заключение
Командата xargs е мощен инструмент, който подобрява начина, по който взаимодействате с други команди в системите Unix/Linux. Независимо дали се занимавате с управление на файлове, обработка на потоци от данни или изпълнение на повтарящи се задачи, xargs оптимизира процеса. Като се научите да използвате неговите опции и го комбинирате с други команди като find, grep или rm, можете значително да подобрите производителността си в терминала.
Ако досега не сте използвали xargs, сега е идеалният момент да го изпробвате и да видите как може да опрости работата ви с командния ред.