Օրինակ, «խմբերի» հրամանագրի օգտագործումը

Նկարագրություն եւ Ներածություն

The xargs հրամանը սովորաբար օգտագործվում է հրամանի տողում, որտեղ մեկ հրամանի արդյունքը փոխանցվում է որպես այլ հրամանի մուտքային փաստարկներ:

Շատ դեպքերում ոչ մի հատուկ հրաման չի պահանջվում, որ դա կատարվի, քանի որ «խողովակ» եւ «վերադասավորում» օպերատորները կատարում են նույն տիպի գործարքը: Այնուամենայնիվ, երբեմն կան խնդիրներ հիմնային խողովակաշարերի եւ վերահուղարկման մեխանիզմների հետ, օրինակ, եթե փաստարկները պարունակում են տարածքներ, որոնք խարխափում են հաղթահարված:

Բացի այդ, xargs- ը նշված հրամանն իրականացնում է բազմիցս, անհրաժեշտության դեպքում, դրա համար տրված բոլոր փաստարկները մշակելու համար: Փաստորեն, դուք կարող եք հստակեցնել, թե քանի փաստարկ պետք է ընթերցվի ստանդարտ մուտքագրման հոսքից, երբ ամեն անգամ կատարում է նշված հրամանը:

Ընդհանուր առմամբ, xargs հրամանը պետք է օգտագործվի, եթե մեկ հրամանի արդյունքը օգտագործվի որպես երկրորդ հրամանի ընտրանքների կամ փաստարկների մի մաս, որի համար տվյալները փոխանցվում են (օգտագործելով խողովակի օպերատորը `« | »): Հերթական խողովակաշարը բավարար է, եթե տվյալները նախատեսված են երկրորդ հրամանի ստանդարտ մուտքագրում:

Օրինակ, եթե դուք օգտագործում եք ls հրամանը, ֆայլի անվանումների եւ դիրեկտորիաների ցանկը ստեղծելու համար, եւ ապա այս ցուցակը խողովակ տալու հրամանատարության հրամանատարության արձագանքը , կարող եք հստակեցնել, թե քանի ֆայլի անուն կամ գրացուցակ անուններ են մշակվում ` :

ls | xargs -n 5 echo

Այս դեպքում echo- ն միաժամանակ ստանում է հինգ ֆայլ կամ գրացուցակի անուն: Քանի որ կրկնօրինակն ավելացնում է նոր տողը, յուրաքանչյուր տողում գրված է հինգ անուն:

Եթե ​​դուք կատարեք մի հրաման, որը վերադարձնում է մեծ եւ անկանխատեսելի համարանիշներ (օրինակ, ֆայլի անուններ), որոնք փոխանցվում են մեկ այլ հրամանին, հետագա մշակման համար, լավ գաղափար է վերահսկել առավելագույն թվով փաստարկներ, որոնք երկրորդ հրամանն ընդունում է խուսափել ծանրաբեռնվածությունից եւ վթարից:

Հետեւյալ հրամանի տողը բաժանում է ֆայլային անունների հոսքը, որը հայտնաբերել է int խմբերի 200-ը, որոնք անցել են cp հրամանին, որը կրկնօրինակում է դրանք կրկնօրինակում :

գտնել ./ -type f -name "* .txt" -print | xargs -l200 -i cp -f {} ./backup

Գտեք հրամանի «./» տարրը սահմանում է որոնման ընթացիկ գրացուցակը: «-type f» փաստարկը սահմանափակում է որոնումը ֆայլերին եւ «-name» * .txt "դրոշը լրացուցիչ զտում է այնպիսի բան, որը չունի" .txt "ընդլայնում: -i դրոշը xargs- ը ազդանշան է տալիս, } նշում է գոլորշի յուրաքանչյուր ֆայլի անվանումը:

Հետեւյալ հրահանգը գտնում է, որ ֆայլը հիմնված է / tmp- ի ներքո կամ ներքեւում եւ ջնջում է դրանք:

գտնել / tmp -name core -type f -print | xargs / bin / rm -f

Նշենք, որ դա սխալ կգործի, եթե կան նոր տողեր, մեկ կամ երկակի մեջբերումներ կամ բացատներ պարունակող ֆայլերի անուններ: Հետեւյալ տարբերակը ֆայլերի անունները կարգավորում է այնպես, որ ֆայլը կամ գրացուցակները, որոնք պարունակում են մեկ կամ երկակի մեջբերումներ, բացատներ կամ նոր գծեր, ճիշտ են վարվել:

գտնել / tmp -name core -type f -print0 | xargs -0 / bin / rm -f

-i տարբերակի փոխարեն Դուք կարող եք նաեւ օգտագործել -I դրոշը, որը սահմանում է այն տողը, որը փոխարինվում է հրամանատարական փաստարկների ներածման գիծից, ինչպես այս օրինակում:

ls dir1 | xargs -I {} -t mv dir1 / {} dir / {} / կոդ>

Փոխարինման տողը սահմանվում է որպես "{}": Սա նշանակում է, որ «{}» - ի ցանկացած պատահականություն հանձնարարական փաստարկներում փոխարինվում է խողովակների շահագործման միջոցով միջանցք ուղարկող մուտքային տարրով: Սա թույլ է տալիս Ձեզ մուտքագրել տարրերը կոնկրետ դիրքերում հրամանատարության փաստարկներում (բազմիցս) կատարվել: