Defnyddiau Enghreifftiol o'r Reoliad "xargs"

Disgrifiad a Chyflwyniad

Fel arfer, defnyddir y gorchymyn xargs mewn llinell orchymyn lle mae allbwn un gorchymyn yn cael ei basio fel dadleuon mewnbwn i orchymyn arall.

Mewn llawer o achosion, nid oes angen gorchymyn arbennig megis xargs i gyflawni hynny, gan fod y gweithredwyr "pibell" a "ailgyfeirio" yn cyflawni'r un math o drafodion. Fodd bynnag, weithiau mae yna broblemau gyda'r mecanwaith pipio a ailgyfeirio sylfaenol, ee, os bydd dadleuon yn cynnwys mannau, mae xargs yn gorchfygu.

Yn ogystal, mae xargs yn gweithredu'r gorchymyn penodedig dro ar ôl tro, os oes angen, i brosesu'r holl ddadleuon a roddir iddo. Yn wir, gallwch nodi faint o ddadleuon y dylid eu darllen o'r ffrwd fewnbwn safonol bob tro mae'r xargs yn gweithredu'r gorchymyn penodedig.

Yn gyffredinol, dylid defnyddio'r gorchymyn xargs os yw allbwn un gorchymyn i'w ddefnyddio fel rhan o opsiynau neu ddadleuon ail orchymyn y mae'r data yn cael ei ffrydio (gan ddefnyddio'r gweithredydd pibell "|"). Mae pibellau rheolaidd yn ddigonol os bwriedir i'r data fod yn fewnbwn (safonol) yr ail orchymyn.

Er enghraifft, os ydych chi'n defnyddio'r gorchymyn ls i greu rhestr o enwau a chyfeirlyfrau ffeiliau, yna pibellwch y rhestr hon i mewn i'r gorchymyn xargs sy'n gweithredu yn adleisio , gallwch nodi faint o enwau ffeiliau neu enwau cyfeirlyfr sy'n cael eu prosesu gan adleisio ar bob ailadrodd fel a ganlyn :

ls | xargs -n 5 echo

Yn yr achos hwn, mae adleisio'n derbyn pum enw ffeil neu gyfeiriadur ar y tro. Gan fod adleisio'n ychwanegu cymeriad llinell newydd ar y diwedd, ysgrifennir pum enw ar bob llinell.

Os ydych chi'n gweithredu gorchymyn sy'n dychwelyd eitemau rhifau mawr ac anrhagweladwy (ee enwau ffeiliau) sy'n cael eu trosglwyddo i orchymyn arall ar gyfer prosesu pellach, mae'n syniad da i reoli'r nifer uchaf o ddadleuon y mae ail orchymyn yn eu derbyn er mwyn osgoi gorlwytho a chwalu.

Mae'r llinellau gorchymyn canlynol yn rhan o'r niferoedd o enwau ffeiliau a gynhyrchir trwy ddod o hyd i'r grwpiau o 200 cyn eu trosglwyddo i'r gorchymyn cp , sy'n eu copïo i'r cyfeiriadur wrth gefn .

darganfyddwch ./ -type f -name "* .txt" -print | xargs -l200 -i cp -f {} ./backup

Mae'r elfen "./" yn y gorchymyn darganfod yn nodi'r cyfeiriadur cyfredol ar gyfer chwilio. Mae'r ddadl "-type" yn cyfyngu'r chwiliad i ffeiliau, ac mae'r "-name" * .txt "yn dangos hidlwyr pellach allan unrhyw beth nad oes ganddo estyniad" .txt ". Mae'r baner -i yn xargs yn dynodi bod y { } nodyn yw enw pob ffeil o'r stêm.

Mae'r gorchymyn canlynol yn canfod ffeiliau a elwir yn craidd yn y cyfeirlyfr / tmp neu yn is na'u dileu.

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

Sylwch y bydd hyn yn gweithio'n anghywir os oes unrhyw enwau ffeiliau sy'n cynnwys llinellau newydd, dyfynbrisiau sengl neu ddwbl, neu fannau. Mae'r fersiwn ganlynol yn prosesu'r enwau ffeiliau yn y fath fodd y caiff enwau ffeiliau neu gyfeirlyfrau sy'n cynnwys dyfynbrisiau, mannau neu linellau newydd sengl neu ddwbl eu trin yn gywir.

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

Yn hytrach na'r opsiwn -i, gallwch hefyd ddefnyddio'r faner -I sy'n pennu'r llinyn y caiff y llinell fewnbwn ei ddisodli yn y dadleuon gorchymyn fel yr enghraifft hon:

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

Diffinnir y llinyn amnewid fel "{}". Mae hyn yn golygu, bydd unrhyw ddigwyddiad o "{}" yn y dadleuon gorchymyn yn cael ei ddisodli gan yr elfen mewnbwn a anfonwyd i args trwy'r gweithrediad pibell. Mae hyn yn eich galluogi i osod yr elfennau mewnbwn mewn swyddi penodol yn y dadleuon o'r gorchymyn sydd i'w (dro ar ôl tro) yn cael eu gweithredu.