Xargs

Linux.fista
Versio hetkellä 23. kesäkuuta 2007 kello 21.22 – tehnyt Pb (keskustelu | muokkaukset) (alkua)
(ero) ← Vanhempi versio | Nykyinen versio (ero) | Uudempi versio → (ero)
Siirry navigaatioon Siirry hakuun

Xargs-komentorivityökalu mahdollistaa STDIN:in kautta sille syötettävän tekstin antamisen riveittäin tai sanoittain toiselle ohjelmalle argumentiksi. Esimerkiksi komento

ls kjk*|xargs rm

poistaisi kaikki ls:n listaamat kjk-alkuiset tiedostot. Pelkkä

ls kjk*|rm

ei toimi, sillä tässä koko ls:n tuloste putkitetaan rm:lle yhtenä klönttinä, mitä rm ei ymmärrä.

Syötettävillä riveillä on usein välilyöntejä ja muita erikoismerkkejä, joita vastaanottava ohjelma ei useinkaan ymmärrä sinällään. Vastaanottava ohjelma saattaa myös haluta syötteen joksikin muuksi kuin viimeiseksi argumentikseen. Tällöin on yhtenä ratkaisuna käyttää seuraavan komennon kaltaista syntaksia:

tac valilyonnit.txt|xargs -I'{}' dd if=/dev/urandom of='{}' bs=1024 count=2048

Tässä luodaan väärinpäin tulostetun tiedoston valilyonnit.txt jokaisesta rivistä samanniminen tiedosto, joka sisältää 2 Mt satunnaista dataa. Apuna käytetään valitsinta -I, jolle annetaan argumenttina se merkki tai merkkijono, jota käytetään merkitsemään vastaanottavan ohjelman argumentin paikkaa. {}:tä käytetään sangen usein tähän tehtävään, mutta halutetessaan voi käyttää vaikkapa å:ta. Nämä merkit kannattaa laittaa yksinkertaisiin lainausmerkkeihin ('), mikäli ne ovat komentotulkin käyttämiä erikoismerkkejä.

Katso myös