Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: JA5U - 22.10.21 - klo:23.13
-
Tervehdys
Eli miten saa ajettua esim. where komennon listaamat tiedostot? Ja vielä --version argumentilla
Kokeilin säveltää ja sovittaa -exec ja | xargs ym, mutta tuloksetta.
Lähimmäksi taisi viedä tämä, mutten saanut tuota version argumenttia mukaan.
where npm | tr "\n" ";" | xargs -0 -d ";" bash -c '"$1"' --version
Ja kyllä, systeemi on solmussa, monta eri versiota erilaisten asennusten jäljiltä etc. - yleensä yhtä dependecy helliä näiden nodejuttujen kanssa.
-
Anna bashin -c:lle arvoksi tuo koko komento. Käytännössä siis siirrä viimeinen puolilainausmerkki (') ihan loppuun. Tuo on vähän sellainen erikoisuus tuon -c vivun kanssa:
tomi@tomin-xps ~> bash -c echo foo
tomi@tomin-xps ~> bash -c 'echo foo'
foo
tomi@tomin-xps ~>
-
Anna bashin -c:lle arvoksi tuo koko komento. Käytännössä siis siirrä viimeinen puolilainausmerkki (') ihan loppuun. Tuo on vähän sellainen erikoisuus tuon -c vivun kanssa:
tomi@tomin-xps ~> bash -c echo foo
tomi@tomin-xps ~> bash -c 'echo foo'
foo
tomi@tomin-xps ~>
No näihhä se oli :)
Ja tämän myötä selkis, että se luo tuloksista muuttujat tuon delimiterin mukaisesti $0...n riippuen tulosten määrästä.
Ja lopulta sisäistin nuo xargs argumentit ja toimivaan ratkaisuun johti "-n 1", joka rajoittaa em. muuttujien määrän 1 per kutsu:
where npm | tr "\n" ";" | xargs -n 1 -0 -d ";" bash -c '"$0" --version'
Ja hieman paranneltu eli näyttää alkuperäisen where tulosteen eli suoritettavan tiedoston polun :)
where npm | tr "\n" ";" | xargs -n 1 -0 -d ";" bash -c 'echo -n "$0 => "; "$0" --version'