Muokataan sivua Xargs

Siirry navigaatioon Siirry hakuun
Varoitus: Et ole kirjautunut sisään. IP-osoitteesi näkyy julkisesti kaikille, jos muokkaat. Jos kirjaudut sisään tai luot tunnuksen, muokkauksesi yhdistetään käyttäjänimeesi ja saat paremman käyttökokemuksen.

Kumoaminen voidaan suorittaa. Varmista alla olevasta vertailusta, että haluat saada aikaan tämän lopputuloksen, ja sen jälkeen julkaise alla näkyvät muutokset.

Nykyinen versio Oma tekstisi
Rivi 1: Rivi 1:
{{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}}
Xargs-[[komentorivi|komentorivityökalu]] mahdollistaa [[STDIN]]:in kautta sille syötettävän tekstin antamisen riveittäin tai sanoittain toiselle ohjelmalle argumentiksi. Esimerkiksi komento
'''xargs'''-[[komentorivi|komentorivityökalu]] mahdollistaa [[STDIN]]:in kautta sille syötettävän tekstin antamisen riveittäin tai sanoittain toiselle ohjelmalle argumentiksi. Esimerkiksi komento
  [[find]] -name 'kjk*' | xargs [[rm]]
  $ [[find]] -name 'kjk*' | xargs [[rm]]
poistaisi kaikki ls:n listaamat kjk-alkuiset tiedostot. Pelkkä
poistaisi kaikki ls:n listaamat kjk-alkuiset tiedostot. Pelkkä
  $ find -name 'kjk*' | rm
  find -name 'kjk*' | rm
ei toimi, sillä tässä koko find-komennon tuloste putkitetaan rm:lle yhtenä klönttinä, mitä rm ei ymmärrä.
ei toimi, sillä tässä koko find-komennon 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:
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
  [[tac]] valilyonnit.txt | xargs -I'{}' [[dd]] if=/dev/urandom of='{}' bs=1024 count=2048
Tässä luodaan takaperin riveittäin tulostetun tiedoston valilyonnit.txt jokaisesta rivistä samanniminen tiedosto, joka sisältää 2 Mt satunnaista dataa. Apuna käytetään valitsinta <tt>-I</tt>, 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 [[komentotulkki|komentotulkin]] käyttämiä erikoismerkkejä.
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 <tt>-I</tt>, 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 [[komentotulkki|komentotulkin]] käyttämiä erikoismerkkejä.


Välilyöntien ja erikoismerkkien ongelmaa voi yrittää ratkaista myös valitsimella <tt>-0</tt>, joka määrittää syötettävien merkkijonojen rajaksi nollamerkin normaalien välilyönnin tai rivinvaihdon sijaan. Tälle sopivaa tulostetta tuottaa ainakin [[find]] valitsimella <tt>-print0</tt>. Esimerkiksi
Välilyöntien ja erikoismerkkien ongelmaa voi yrittää ratkaista myös valitsimella <tt>-0</tt>, joka määrittää syötettävien merkkijonojen rajaksi nollamerkin normaalien välilyönnin tai rivinvaihdon sijaan. Tälle sopivaa tulostetta tuottaa ainakin [[find]] valitsimella <tt>-print0</tt>. Esimerkiksi
  $ find -lname '*s*' -print0 | xargs -0 [[file]]
  find -lname '*s*' -print0 | xargs -0 [[file]]
näyttäisi nykyisen hakemiston ja sen alihakemistojen sisältämien [[symbolinen linkki|symbolisten linkkien]] joiden nimessä on s-kirjain, kohdetiedostot.
näyttäisi nykyisen hakemiston ja sen alihakemistojen sisältämien [[symbolinen linkki|symbolisten linkkien]] joiden nimessä on s-kirjain, kohdetiedostot.


Valitsimella <tt>-d</tt> voidaan määritellä syötettävien merkkijonojen rajaksi vapaavalinteinen yhden tavun mittainen merkki (esimerkiksi [[Unicode]]-ä ei siis käy). Valitsimella <tt>-a</tt> voidaan suoraan valita xargsin syötteeksi annettava tiedosto. Esimerkiksi komento
Valitsimella <tt>-d</tt> voidaan määritellä syötettävien merkkijonojen rajaksi vapaavalinteinen yhden tavun mittainen merkki (esimerkiksi [[Unicode]]-ä ei siis käy). Valitsimella <tt>-a</tt> voidaan suoraan valita xargsin syötteeksi annettava tiedosto. Esimerkiksi komento
  $ xargs -d w -a t.txt [[touch]]
  xargs -d w -a t.txt [[touch]]
loisi touchin avulla tiedostot b.txt n.txt ja m.txt, kun tiedoston t.txt sisältönä on
loisi touchin avulla tiedostot b.txt n.txt ja m.txt, kun tiedoston t.txt sisältönä on
  b.txtwn.txtwm.txtw
  b.txtwn.txtwm.txtw


==Katso myös==
== Katso myös ==
*[[Find]]
*[[Find]]


[[Luokka:Komentorivin perustyökalut]]
[[Luokka:Komentorivin perustyökalut]]
Wikin materiaali on kaikkien vapaasti käytettävissä Creative Commons 3.0 - nimi mainittava -lisenssin alaisuudessa. TEKIJÄNOIKEUDEN ALAISEN MATERIAALIN KÄYTTÄMINEN ILMAN LUPAA ON EHDOTTOMASTI KIELLETTYÄ!

Muokataksesi tätä sivua vastaa alla olevaan kysymykseen (lisätietoja):

Peruuta Muokkausohjeet (avautuu uuteen ikkunaan)
Noudettu kohteesta ”https://www.linux.fi/wiki/Xargs