Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: jarmala - 17.10.21 - klo:14.31

Otsikko: Komentorivistä skriptiksi
Kirjoitti: jarmala - 17.10.21 - klo:14.31
Paremman musiikkisoittimen puutteessa kekkasin käyttää mpg123:a seuraavasti:

Koodia: [Valitse]
ls -1 musa/jazz/Max* >foo && mpg123 -@ foo && rm foo
Se toimii kyllä, mutta jotenkin olisi elegantimpaa, jos sen saisi skriptatuksi. Silloin voisi komentaa vaan sujuvasti

Koodia: [Valitse]
soita musa/jazz/Max*
Yritin väkertää siitä skriptiä, mutta en saanut millään tuota valintapeitettä (*) toimimaan skriptissä. Olisiko helppiä tälläiseen aloittelijan kysymykseen? Saan aina vaan listan ensimmäisen tiedoston, mutta en niitä kaikkia...

Siis miten tätä pitää muuttaa, että se kävisi läpi koko valintapeitteen kattaman listan?

Koodia: [Valitse]
#!/bin/bash
for name in "$1"; do
  echo "$name"
done

Vaihtoehtoisesti voi ehdottaa jotain helppokäyttöistä musiikkisoitinta, joka näpsästi hallitsisi jotain 10000 kappaletta...
Otsikko: Vs: Komentorivistä skriptiksi
Kirjoitti: Tomin - 17.10.21 - klo:14.53
Tuo $1 viittaa ensimmäiseen argumenttiin. Voit viitata kaikkiin argumentteihin kirjoittamalla $@.
Otsikko: Vs: Komentorivistä skriptiksi
Kirjoitti: jarmala - 17.10.21 - klo:19.58
Tuo $1 viittaa ensimmäiseen argumenttiin. Voit viitata kaikkiin argumentteihin kirjoittamalla $@.

Ensimmäinen argumentti on juuri tuo musa/jazz/Max*

Siitä haluaisin laajentaa kaikki tiedostot, jotka mätsäävät tuohon.
Otsikko: Vs: Komentorivistä skriptiksi
Kirjoitti: Tomin - 17.10.21 - klo:20.13
Tuo $1 viittaa ensimmäiseen argumenttiin. Voit viitata kaikkiin argumentteihin kirjoittamalla $@.

Ensimmäinen argumentti on juuri tuo musa/jazz/Max*

Siitä haluaisin laajentaa kaikki tiedostot, jotka mätsäävät tuohon.

Komentotulkin (https://linux.fi/wiki/Komentotulkki) eli kuoren (shell) tehtävä on laajentaa annetut globit (https://linux.fi/wiki/Komentorivin_perusteet#Jokerimerkit), joten ensimmäisen argumentin kuuluisi kyllä olla yksi noista musiikkikappaleista. Toki, jos annettu tähden sisältävä merkkijono ei vastaa mitään tiedostoa, niin ensimmäinen argumentti annetaan sellaisenaan, mutta se kuulostaa vähän huonolta tavalta skriptin kehittämiseen.
Otsikko: Vs: Komentorivistä skriptiksi
Kirjoitti: jekku - 17.10.21 - klo:20.22
Tuo $1 viittaa ensimmäiseen argumenttiin. Voit viitata kaikkiin argumentteihin kirjoittamalla $@.

Ensimmäinen argumentti on juuri tuo musa/jazz/Max*

Siitä haluaisin laajentaa kaikki tiedostot, jotka mätsäävät tuohon.

Koetas jos nappat sen listaan?
Koodia: [Valitse]
LISTA=$(ls  musa/jazz/Max*)
echo LISTA
Otsikko: Vs: Komentorivistä skriptiksi
Kirjoitti: nm - 17.10.21 - klo:20.55
Eiköhän mpg123:lla toimi siirtämällä argumentit sellaisenaan sille. Tässähän bash purkaa globin tiedostolistaksi jo ennen skriptin käynnistämistä, jolloin ne saa muuttujasta $@

Koodia: [Valitse]
#!/bin/sh
mpg123 "$@"
Otsikko: Vs: Komentorivistä skriptiksi
Kirjoitti: jarmala - 17.10.21 - klo:21.29
Eiköhän mpg123:lla toimi siirtämällä argumentit sellaisenaan sille. Tässähän bash purkaa globin tiedostolistaksi jo ennen skriptin käynnistämistä, jolloin ne saa muuttujasta $@

Koodia: [Valitse]
#!/bin/sh
mpg123 "$@"

Jippii, tuollahan se toimiikin!

Nyt voin komentaa hienosti:

Koodia: [Valitse]
soita musa/jazz/Jukka\ Eskola/Jukka\ Eskola\ Orquesta\ Bossa*
ja homma toimii! Hip! Kiitoksia neuvosta.
Otsikko: Vs: Komentorivistä skriptiksi
Kirjoitti: jarmala - 17.10.21 - klo:21.36
Ja jos jatkokeskustelu sallitaan tässä säikeessä, niin mieleen juolahtaa kysymys: miksi bashissa komentorivillä toimiva komento ei toimi sellaisenaan skriptissä? Mitä erikoista skripteissä on, että ne vaativat aivan erilaiset jutut kuin komentorivi? Muistan aikoinaan yli 20 vuotta sitten, kun käytin vielä MS-DOSsia, niin täsmälleen samat komennot toimivat yhtä lailla komentoriviltä kuin bat-tiedostoissakin... Miksi näin ei ole bashissa tai sh:ssa?
Otsikko: Vs: Komentorivistä skriptiksi
Kirjoitti: Tomin - 17.10.21 - klo:21.41
Ja jos jatkokeskustelu sallitaan tässä säikeessä, niin mieleen juolahtaa kysymys: miksi bashissa komentorivillä toimiva komento ei toimi sellaisenaan skriptissä? Mitä erikoista skripteissä on, että ne vaativat aivan erilaiset jutut kuin komentorivi? Muistan aikoinaan yli 20 vuotta sitten, kun käytin vielä MS-DOSsia, niin täsmälleen samat komennot toimivat yhtä lailla komentoriviltä kuin bat-tiedostoissakin... Miksi näin ei ole bashissa tai sh:ssa?

Missä tilanteessa näin käy? Tietääkseni komennot toimivat kyllä ihan samalla tavalla sekä komentorivillä että skripteissä.
Otsikko: Vs: Komentorivistä skriptiksi
Kirjoitti: nm - 17.10.21 - klo:23.35
Nyt voin komentaa hienosti:

Koodia: [Valitse]
soita musa/jazz/Jukka\ Eskola/Jukka\ Eskola\ Orquesta\ Bossa*
ja homma toimii! Hip! Kiitoksia neuvosta.

Jees. Tässähän skripti ei oikeastaan tee mitään, eli vastaavan lopputuloksen saat vaikka luomalla soita-nimisen symbolisen linkin mpg123:een:

Koodia: [Valitse]
sudo ln -s /usr/bin/mpg123 /usr/local/bin/soita
Otsikko: Vs: Komentorivistä skriptiksi
Kirjoitti: elohope - 18.10.21 - klo:07.43
mpg123 on aika mukava soitin.

Alla skripti, jonka avulla voi kuunnella valittuja internetin radioita.
Näppäilyllä Ctrl+c pääsee vaihtamaan asemaa ja Ctrl+z lopettaa
ohjelman toiminnan.

Koodia: [Valitse]
#!/bin/bash

ABC_News () {
station="http://live-radio02.mediahubaustralia.com/PBW/mp3/"
}

ABC_Radio_National() {
station="http://live-radio01.mediahubaustralia.com/2RNW/mp3/"
}

BBC_Radio_4 () {
station="http://stream.live.vc.bbcmedia.co.uk/bbc_radio_fourfm"
}

WNYC_am_820 () {
station="http://am820.wnyc.org/wnycam"
}

BBC_World_Service () {
station="http://stream.live.vc.bbcmedia.co.uk/bbc_world_service"
}

ABC_Jazz () {
station="http://live-radio01.mediahubaustralia.com/JAZW/mp3/"
}

Radio_Clasica () {
station="http://icestreaming.rai.it/5.mp3"
}

Groove_West () {
station="http://west-mp3-128.streamthejazzgroove.com/stream"
}

La_Grosse_Radio_Reggae () {
station="http://hd.lagrosseradio.info:8300"
}

Antenne_Bayern_Workout () {
station="http://stream.antenne.de/workout-hits/stream/mp3?aw_0_1st"
}

NPR () {
station="http://npr-ice.streamguys1.com/live.mp3"
}


Deutschlandfunk () {
station="http://st01.dlf.de/dlf/01/128/mp3/stream.mp3"
}






soitetaan () {
  clear
  mpg123 --no-icy-meta "$station"
}

ohjaus () {
while true
do
cat <<- end
1 ABC Jazz
2 Radio Clasica
3 Groove West
4 La Grosse Radio Reggae
5 Antenne Bayern Workout
6 ABC News
7 BBC Radio 4
8 ABC Radio National
9 WNYCam 820
10 BBC World Service
11 NPR
12 Deutschlandfunk
13 France Musique - Ocora
14 Radio France - FIP
end

  echo -n "Mikä on valintasi? Valitse jokin listatuista numeroista."
  read Valinta

  case "$Valinta" in
  "1")
      ABC_Jazz
      soitetaan
      ;;
  "2")
      Radio_Clasica
      soitetaan
      ;;
  "3")
      Groove_West
      soitetaan
      ;;
  "4")
      La_Grosse_Radio_Reggae
      soitetaan
      ;;
  "5")
      Antenne_Bayern_Workout
      soitetaan
      ;;
  "6")
      ABC_News
      soitetaan
      ;;
  "7")
      BBC_Radio_4
      soitetaan
      ;;
  "8")
      ABC_Radio_National
      soitetaan
      ;;
  "9")
      WNYC_am_820
      soitetaan
      ;;
  "10")
      BBC_World_Service
      soitetaan
      ;;
  "11")
      NPR
      soitetaan
      ;;
  "12")
      Deutschlandfunk
      soitetaan
      ;;
  "13")
      France_Musique_Ocora
      soitetaan
      ;;
  "14")
    Radio_France_FIP
    soitetaan
      ;;
  *) echo "Valitse toimiva vaihtoehto!"
      ;;
  esac
done
}


# Ohjelman suoritus alkaa tästä.
clear

echo "Käynnistä liveRadio painalla Enter. Muu merkki lopettaa ohjelman toiminnan."
read Avausvalinta
if [ "$Avausvalinta" != "" ]
then
    exit
else
  ohjaus
fi

# ~/Radio/liveRadio.sh
Otsikko: Vs: Komentorivistä skriptiksi
Kirjoitti: jarmala - 18.10.21 - klo:13.36
Alla skripti, jonka avulla voi kuunnella valittuja internetin radioita.
Näppäilyllä Ctrl+c pääsee vaihtamaan asemaa ja Ctrl+z lopettaa
ohjelman toiminnan.

Minulla ainakin Ctrl-z suspendoi sen. Ja fg:llä takaisin...
Otsikko: Vs: Komentorivistä skriptiksi
Kirjoitti: elohope - 18.10.21 - klo:19.15

Lainaus
Minulla ainakin Ctrl-z suspendoi sen. Ja fg:llä takaisin...

No näinhän se on.

Lisäsin vielä kaksi asemaa: nro 13 on kovapintaisille maailmanmusiikin harrastajille ja 14 viihtyisää viihdettä,.