Пример Употреба на командата "xargs"

Опис и вовед

Командата xargs обично се користи во командната линија каде што излезот од една команда се пренесува како влезни аргументи на друга команда.

Во многу случаи, не е потребна специјална команда, како што се xargs, за да се постигне тоа, бидејќи операторите "цевка" и "пренасочување" вршат трансакција со ист тип. Меѓутоа, понекогаш има проблеми со основниот механизам за пренасочување и пренасочување, на пример, ако аргументите содржат простори, тој xargs побегнува.

Дополнително, xargs извршува одредена команда постојано, доколку е потребно, да ги обработува сите аргументи што му се дадени. Всушност, можете да наведете колку аргументи треба да се читаат од стандардниот влезен проток секој пат кога xargs ја извршува одредената команда.

Во принцип, командата xargs треба да се користи ако излезот од една команда треба да се користи како дел од опциите или аргументите на втората команда на која податоците се емитуваат (со користење на операторот на цевките "|"). Редовните цевки се доволни ако податоците се наменети да бидат (стандарден) влез на втората команда.

На пример, ако ја користите командата ls за да генерирате листа на имиња на датотеки и директориуми, а потоа вметнете ја оваа листа во командата xargs која извршува echo , можете да наведете колку имиња на датотеки или имиња на директориуми се обработуваат со echo за секоја повторување како што следува :

ls | xargs -n 5 ехо

Во овој случај, ехото прими пет имиња на датотеки или директориуми одеднаш. Бидејќи echo додава нов знак на крајот, на секоја линија се напишани пет имиња.

Ако извршите команда која враќа големи и непредвидливи елементи (на пр. Имиња на датотеки) кои се пренесуваат на друга команда за понатамошна обработка, добра идеја е да го контролирате максималниот број на аргументи што ги прима втората команда за да се избегне преоптоварување и паѓање.

Следната командска линија ги дели имињата на датотеките кои се создадени со пребарување на групи од 200 пред да се пренесат на командата cp , која ги копира во резервниот директориум.

најдете ./ -тип-име "* .txt" -принт | xargs -l200 -i cp -f {}. / backup

Елементот "./" во командата find го одредува тековниот директориум за пребарување. Аргументот "тип-тип" го ограничува пребарувањето на датотеки, а знамето "-name" * .txt "понатаму филтрира нешто што нема" .txt "екстензија. Знакот -i во xargs сигнализира дека { } нотација претставува секое име на датотеката на пареата.

Следната команда наоѓа датотеки наречени јадро во или под директориумот / tmp и ги брише.

find / tmp -name core -type f -print | xargs / bin / rm -f

Забележете дека ова ќе работи погрешно ако има некое име што содржи нови линии, единечни или двојни цитати или празни места. Следната верзија ги обработува имињата на датотеките на таков начин што имињата на датотеки или директориуми кои содржат единечни или двојни цитати, простори или нови линии се правилно ракувани.

find / tmp -name core -type f -print0 | xargs -0 / bin / rm -f

Наместо опцијата -i можете да го користите знакот -I кој ја наведува низата која што е заменета со влезна линија во командните аргументи како во овој пример:

ls dir1 | xargs -I {} -t mv dir1 / {} dir / {} / code>

Низата за замена е дефинирана како "{}". Ова значи дека сите појави на "{}" во командните аргументи се заменуваат со влезниот елемент што се пренесува до аргументи преку операцијата на цевката. Ова ви овозможува да ги поставите елементите за влез на специфични позиции во аргументите на командата за (постојано) извршување.