Matumizi ya Mfano wa amri ya "xargs"

Maelezo na Utangulizi

Amri ya xargs hutumiwa kwa kawaida kwenye mstari wa amri ambapo pato la amri moja hupitishwa kama hoja za pembejeo kwa amri nyingine.

Katika matukio mengi, hakuna amri maalum kama vile xargs inahitajika ili kukamilisha hilo, kwani waendeshaji "bomba" na "redirection" hufanya shughuli sawa. Hata hivyo, wakati mwingine kuna masuala na msingi wa kusambaza na redirection utaratibu, kwa mfano, kama hoja ina nafasi, kwamba xargs inashinda.

Zaidi ya hayo, xargs hufanya amri maalum mara kwa mara, ikiwa ni lazima, kushughulikia hoja zote zilizotolewa. Kwa kweli, unaweza kutaja jinsi hoja nyingi zinapaswa kusomwa kwenye mkondo wa kawaida wa pembejeo kila wakati xargs inafanya amri maalum.

Kwa ujumla, amri ya xargs inapaswa kutumika ikiwa pato la amri moja itatumiwa kama sehemu ya chaguo au hoja za amri ya pili ambayo data hutolewa (kwa kutumia operator wa bomba "|"). Kupiga mabomba mara kwa mara ni kutosha ikiwa data ni nia ya kuwa pembejeo (kawaida) ya amri ya pili.

Kwa mfano, ikiwa unatumia amri ya ls kuzalisha orodha ya majina ya faili na vichopo, halafu piga orodha hii katika amri ya xargs inayofanya echo , unaweza kutaja ngapi majina ya faili au majarida ya saraka yanatumiwa na echo kwa kila iteration kama ifuatavyo :

ls | xargs -n 5 echo

Katika kesi hii, echo inapokea majina tano au saraka kwa wakati mmoja. Kwa kuwa echo inaongeza tabia mpya ya mstari mwishoni, majina tano yameandikwa kwenye kila mstari.

Ikiwa unatoa amri ambayo inarudi vitu vingi na visivyoweza kutarajiwa (kwa mfano majina ya faili) ambayo yamepitishwa kwa amri nyingine kwa ajili ya usindikaji zaidi ni wazo nzuri ya kudhibiti idadi kubwa ya hoja ambazo amri ya pili inapokea ili kuepuka kuongezeka na kupoteza.

Mstari wa amri yafuatayo hugawa mstari wa majina ya faili zinazozalishwa na kupata ndani ya vikundi vya 200 kabla ya kupitishwa kwenye amri ya cp , ambayo huwapeleka kwenye saraka ya salama .

tafuta ./-fpe jina la "* .txt" -print | xargs -l200 -i cp -f {} ./backup

Kipengele cha "./" katika amri ya kutafuta kinafafanua saraka ya sasa ya kutafuta. Faili "-pepe f" inaruhusu utafutaji kwa faili, na bendera "-name" * .txt "huchagua zaidi kitu chochote ambacho hazina" .txt "kiendelezi. - bendera katika ishara za xargs kwamba { } notation inawakilisha kila jina la faili la mvuke.

Amri ifuatayo hupata faili zinazoitwa msingi ndani au chini ya saraka / tmp na kuziondoa.

tafuta / tmp-jina msingi -ppe f -print | xargs / bin / rm -f

Kumbuka kuwa hii itatenda kazi vibaya ikiwa kuna majina yoyote ya faili yaliyo na vichwa vya habari, quotes moja au mbili, au nafasi. Toleo lafuatayo linachukua majina ya faili kwa namna ambayo majina au faili za saraka zenye quotes moja au mbili, nafasi au vifungu vidogo vinashughulikiwa kwa usahihi.

tafuta / tmp-jina msingi -type f -print0 | xargs -0 / bin / rm -f

Badala ya -a chaguo unaweza pia kutumia -I bendera inayofafanua kamba ambayo inabadilishwa na mstari wa pembejeo katika hoja za amri kama ilivyo katika mfano huu:

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

Kamba ya uingizwaji inafafanuliwa kama "{}". Hii inamaanisha, matukio yoyote ya "{}" katika hoja za amri hubadilishwa na kipengele cha pembejeo ambacho hupelekwa kwa njia ya uendeshaji wa bomba. Hii inakuwezesha kuweka mambo ya pembejeo kwenye nafasi maalum katika hoja za amri ya kuwa (mara kwa mara) imefanywa.