Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: jarmala - 17.10.21 - klo:14.31
-
Paremman musiikkisoittimen puutteessa kekkasin käyttää mpg123:a seuraavasti:
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
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?
#!/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...
-
Tuo $1 viittaa ensimmäiseen argumenttiin. Voit viitata kaikkiin argumentteihin kirjoittamalla $@.
-
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.
-
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.
-
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?
LISTA=$(ls musa/jazz/Max*)
echo LISTA
-
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 $@
#!/bin/sh
mpg123 "$@"
-
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 $@
#!/bin/sh
mpg123 "$@"
Jippii, tuollahan se toimiikin!
Nyt voin komentaa hienosti:
soita musa/jazz/Jukka\ Eskola/Jukka\ Eskola\ Orquesta\ Bossa*
ja homma toimii! Hip! Kiitoksia neuvosta.
-
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?
-
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ä.
-
Nyt voin komentaa hienosti:
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:
sudo ln -s /usr/bin/mpg123 /usr/local/bin/soita
-
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.
#!/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
-
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...
-
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ä,.