Eżempju Użi tal-Kmand "xargs"

Deskrizzjoni u Introduzzjoni

Il-kmand xargs huwa tipikament użat f'linja tal-kmand fejn l-output ta 'kmand wieħed jgħaddi bħala argument ta' input għal kmand ieħor.

F'ħafna każijiet, l-ebda kmand speċjali bħal xargs mhu meħtieġ biex jitwettaq dan, peress li l-operaturi "pajp" u "direzzjoni mill-ġdid" iwettqu l-istess tranżazzjoni. Madankollu, xi drabi hemm kwistjonijiet mal-pajp bażiku u l-mekkaniżmu ta 'direzzjoni mill-ġdid, eż., Jekk l-argumenti fihom spazji, li jegħleb ix-xargs.

Barra minn hekk, xargs iwettaq il-kmand speċifikat ripetutament, jekk meħtieġ, biex jipproċessa l-argumenti kollha mogħtija lilu. Fil-fatt, tista 'tispeċifika kemm l-argumenti għandhom jinqraw mit-taqsima tad-dħul standard kull darba li l-xargs iwettaq il-kmand speċifikat.

B'mod ġenerali, il-kmand xargs għandu jintuża jekk l-output ta 'kmand wieħed għandu jintuża bħala parti mill-għażliet jew l-argumenti ta' kmand ieħor li d-data hija streaming (bl-użu tal-operatur tal-pajp "|"). Il-pajpijiet regolari huma biżżejjed jekk id-data hija maħsuba biex tkun l-input (standard) tat-tieni kmand.

Per eżempju, jekk tuża l-kmand ls biex tiġġenera lista ta 'ismijiet ta' fajls u direttorji, u mbagħad ittella 'din il-lista fil-kmand ta' l-eċċess li jesegwixxi, tista 'tispeċifika kemm ismijiet ta' fajls jew ismijiet tad-direttorju huma pproċessati b'ossew fuq kull iterazzjoni kif ġej :

ls | xargs -n 5 echo

F'dan il-każ, l- eku jirċievi ħames fajls jew ismijiet ta 'direttorju kull darba. Peress li l- echo żżid karattru ġdid fl-aħħar, ħames ismijiet jinkitbu fuq kull linja.

Jekk tesegwixxi kmand li jirritorna oġġetti numerużi u imprevedibbli (eż. Ismijiet tal-fajls) li jgħaddu għal kmand ieħor għal aktar proċessar, hija idea tajba li tikkontrolla n-numru massimu ta 'argumenti li t-tieni kmand jirċievi biex jevita tagħbija żejda u jiġġarrfu.

Il-linji ta 'kmand tal-kmand li ġejjin in-nixxiegħa tal-ismijiet tal-fajls prodotti minn isibu l -gruppi ta' 200 qabel mgħoddija lill-kmand tal- pc , li jkopruhom fid-direttorju backup .

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

L-element "./" fil-kmand tas-sejba jispeċifika d-direttorju kurrenti għat-tiftix. L-argument "-type f" jirrestrinġi t-tfittxija għal fajls, u l-band "-name" * .txt "tkompli tipprojbixxi kull ħaġa li m'għandhiex estensjoni" .txt ". Il-bandiera -i tinnota li l- } notazzjoni tirrappreżenta kull isem tal-fajl tal-fwar.

Il-kmand li ġej isib fajls imsejħa qalba ġewwa jew taħt id-direttorju / tmp u jħassarhom.

isibu / tmp-isem qalba-tip f -print | xargs / bin / rm -f

Innota li dan se jaħdem b'mod żbaljat jekk hemm xi isem tal-fajl li jkun fih linji ġodda, kwotazzjonijiet singoli jew doppji, jew spazji. Il-verżjoni li ġejja tipproċessa l-ismijiet tal-fajl b'tali mod li l-ismijiet tal-fajl jew tad-direttorju li jkun fihom kwotazzjonijiet jew spazji doppji jew spazji ġodda jiġu ttrattati b'mod korrett.

isibu / tmp-isem qalba-tip f -print0 | xargs -0 / bin / rm -f

Minflok l-għażla -i tista 'wkoll tuża l-bandiera -I li tispeċifika s-sekwenza li hija sostitwita bil-linja ta' l-input fl-argumenti tal-kmand bħal f'dan l-eżempju:

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

Is-sekwenza ta 'sostituzzjoni hija definita bħala "{}". Dan ifisser li kwalunkwe okkorrenza ta '"{}" fl-argumenti tal-kmand tinbidel bl-element ta' input mgħoddi lil args permezz tal-operazzjoni tal-pajp. Dan jgħinuk tqiegħed l-elementi ta 'input f'pożizzjonijiet speċifiċi fl-argumenti tal-kmand li għandhom jiġu (ripetutament) eżegwiti.