Halimbawa ng Paggamit ng "xargs" Command

Paglalarawan at Panimula

Ang command na xargs ay kadalasang ginagamit sa isang command line kung saan ang output ng isang command ay ipinapasa bilang mga argumento ng pag-input sa isa pang command.

Sa maraming mga kaso, walang espesyal na utos tulad ng xargs ang kinakailangan upang magawa iyon, dahil ang mga operator ng "pipe" at "redirection" ay nagsasagawa ng parehong uri ng transaksyon. Gayunpaman, paminsan-minsan may mga isyu sa mga pangunahing mekanismo ng pag-pipe at pag-redirect, halimbawa, kung ang mga argumento ay naglalaman ng mga puwang, na ang mga xarg ay overcomes.

Bukod pa rito, ang mga xargs ay nagpapatakbo ng tinukoy na utos nang paulit-ulit, kung kinakailangan, upang iproseso ang lahat ng mga argumento na ibinigay dito. Sa katunayan, maaari mong tukuyin kung gaano karaming mga argumento ang dapat basahin ang karaniwang stream ng pag-input sa bawat oras na ipapatupad ng xargs ang tinukoy na command.

Sa pangkalahatan, ang command na xargs ay dapat gamitin kung ang output ng isang command ay gagamitin bilang bahagi ng mga opsyon o mga argumento ng isang pangalawang command na kung saan ang data ay na-stream (gamit ang pipe operator "|"). Ang regular na piping ay sapat na kung ang data ay inilaan upang maging (karaniwang) input ng pangalawang utos.

Halimbawa, kung gagamitin mo ang ls command upang bumuo ng isang listahan ng mga pangalan ng file at mga direktoryo, at pagkatapos ay i-pipe ang listahang ito sa command na xargs na isinasagawa ang echo , maaari mong tukuyin kung gaano karaming mga pangalan ng file o mga pangalan ng direktoryo ang naproseso sa pamamagitan ng echo sa bawat pag-ulit tulad ng mga sumusunod :

ls | xargs -n 5 echo

Sa kasong ito, ang echo ay tumatanggap ng limang file o mga pangalan ng direktoryo sa isang pagkakataon. Dahil ang echo ay nagdaragdag ng isang bagong linya ng character sa dulo, limang mga pangalan ay nakasulat sa bawat linya.

Kung nagpapatupad ka ng isang utos na nagbabalik ng isang malaki at hindi nahuhulaang mga numero ng numero (hal. Mga pangalan ng file) na ipinasa sa isa pang command para sa karagdagang pagproseso ito ay isang magandang ideya upang kontrolin ang maximum na bilang ng mga argumento na natatanggap ng pangalawang utos upang maiwasan ang labis na pag-load at pag-crash.

Ang mga sumusunod na command line ay magbubukod ng stream ng mga pangalan ng file na ginawa sa pamamagitan ng paghahanap ng mga grupo ng 200 bago ipasa sa cp command, na nag-kopya sa kanila sa backup na direktoryo.

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

Ang "./" na sangkap sa command ng paghahanap ay tumutukoy sa kasalukuyang direktoryo para sa paghahanap. Ang argumentong "-type f" ay naghihigpit sa paghahanap sa mga file, at ang "-name" *. Txt "na flag ay nagpapalabas ng anumang bagay na walang extension na" .txt ". Ang flag na -i sa xargs ay nagpapabatid na ang { } notasyon ay kumakatawan sa bawat pangalan ng file ng singaw.

Hinahanap ng sumusunod na command ang mga file na pinangalanang core sa o sa ibaba ng direktoryo / tmp at tinatanggal ang mga ito.

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

Tandaan na ito ay gagawin nang hindi tama kung mayroong anumang mga filename na naglalaman ng mga bagong linya, solong o double quote, o mga puwang. Ang sumusunod na bersyon ay nagpoproseso ng mga filename sa isang paraan na ang mga file o mga pangalan ng direktoryo na naglalaman ng solong o dobleng panipi, puwang o mga bagong linya ay wastong hinahawakan.

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

Sa halip ng pagpipiliang -i maaari mo ring gamitin ang -I flag na tumutukoy sa string na pinalitan ng linya ng input sa mga argumento ng command tulad ng sa halimbawang ito:

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

Ang kapalit na string ay tinukoy bilang "{}". Ang ibig sabihin nito, ang anumang mga pangyayari ng "{}" sa mga argumento ng command ay pinalitan ng elemento ng pag-input na ipinapasa sa args sa pamamagitan ng operasyon ng pipe. Ito ay nagbibigay-daan sa iyo upang ilagay ang mga elemento ng pag-input sa mga tiyak na posisyon sa mga argumento ng command na maging (paulit-ulit) pinaandar.