Kezdőlap › Fórumok › Programozás › Bash script
- This topic has 437 hozzászólás, 56 résztvevő, and was last updated 13 years, 7 months telt el by
Goosfrabaa.
-
SzerzőBejegyzés
-
2008-04-25-13:47 #2053529
Gondolom, az awesome-hoz kell 🙂
Ha nem nagyon mélyedtél még bele a moc-ba, akkor ajánlom az mpd-t, ahhoz úgyis van „támogatás” az awesome-status-ban 😉 Most nézem ezt a moc-ot, látom, az is valamilyen démon, amivel valahogy lehet kommunikálni. Szóval ha egy-két hónapot vársz, akkor lehet, hogy lesz moc-támogatás is…Amúgy igen, lehet. A legtriviálisabb módja, hogy a kimenetet egy fájlba (mktemp generál egy biztosan jó ideiglenes fájlnevet) ill. egy változóba benyomod 😉
De ha úgyis az awesome-hoz kell, akkor egyCode:sed -r „s@Artist: (.*)@0 sb_name tb_artist text 1@ ; @Songtitle: (.*)@0 sb_name tb_title text 1@ ; és így tovább”Már persze ez akkor jó, ha külön-külön szövegdobozokba megy. Ha egy szövegdobozba akarod, akkor inkább egy awk-t javasolnék.
Második problémád: nem értem egészen pontosan, mit és hogyan akarod, de ha a parancsok végére egy &-jelet biggyesztenél? (háttérben futás)
2008-04-25-13:55 #2053530Code:exitsignal_1=”0″
exitsignal_2=”0″loop_1() {
while [ ${exitsignal_1} ]; do
echo -e „loop_1()n”
sleep 30
# load_exitsignal_1
done
}loop_2() {
while [ ${exitsignal_2} ]; do
echo -e „loop_2()n”
sleep 60
# load_exitsignal_2
done
}loop_1 & loop_2
2008-04-25-14:09 #2053531Fájlba irányításra én is gondoltam, de az megint viszonylag „nagy” munka a procinak, a változó viszont pont jó lesz, köszönöm mindkettőtöknek.
A másiknál meg azért nem jó a háttérbe küldés, mert kb. 15-20 sornyi parancsról van szó(egy-egy ciklus plusz pár apróság) s mindegyik mögé nem akarok „&” biggyeszteni. 🙂
A scriptet ki fogom próbálni ha otthon leszek, addig igyekszem értelmezni. 🙂mpd amúgy azért nem tetszik, mert fix adatbázissal dolgozik s ha egy új számot akarok meghallgatni vagy más könyvtárban van, akkor lehet újraépíteni az egészet.
Ja és egy box-ba ment, igazából már működik is, csak nem akarom nagyon elszaporítani a scripteket, főleg ha hasonló feladatot látnak el.Viszont holnap lehet jövök majd még egy kérdéssel, de előtte azért megpróbálom még „debuggolni”. 🙂
2008-04-25-14:16 #2053532birno wrote:Fájlba irányításra én is gondoltam, de az megint viszonylag „nagy” munka a procinak
Milyen géped van? Egy kHz-es 10 bájt rammal? Ennél nagyobb dolgok is zajlanak a háttérben, még ha nem is tudsz róla 🙂birno wrote:A másiknál meg azért nem jó a háttérbe küldés, mert kb. 15-20 sornyi parancsról van szó(egy-egy ciklus plusz pár apróság) s mindegyik mögé nem akarok „&” biggyeszteni. 🙂
Na, akkor úgy érzem, ma is egy új dolgot fogsz tanulni (ha jól értem a gondod):Code:( while true; do /home/zsolt/awesome-resources/statusbar/awesome-rss ; sleep 1m; done ) &
( while true; do echo 0 widget_tell sb_status tb_todo text $(calcurse -t | grep -v „to do:” | wc -l) teendõ | awesome-client ; sleep 1m ; done) &Ja, ez az én ~/.xinitrc fájlomból való részlet 😉
birno wrote:mpd amúgy azért nem tetszik, mert fix adatbázissal dolgozik s ha egy új számot akarok meghallgatni vagy más könyvtárban van, akkor lehet újraépíteni az egészet.
Hm? Ha csak meghallgatni akarok egy számot egyszer, akkor egy mplayer-rel teszem meg. Ha esetleg többször, akkor berakom az mpd-be. Addig minek. És nem kell újraépíteni az egész adatbázist, egyszerűen hozzáadod az újakat oszt’ kész (az mpc pont erre való). Törölni, a playlist-et üríteni hasonlóan bonyolult. Nem telik (észrevehetően) több idő, ha szimplán beolvasnád egy xmms-be, ami lekéri az infókat.2008-04-25-14:23 #2053533Code:Milyen géped van? Egy kHz-es 10 bájt rammal? Ennél nagyobb dolgok is zajlanak a háttérben, még ha nem is tudsz rólaAthlon Xp 2500+ és érdekes mód az mocp ffrissítését végző script(négyszer lekéri az infót és küldi awesome-clientnek 0.9 másodpercenként) 10-15%-os plusz proci terhelést jelent, ami szerintem sok.
Code:Na, akkor úgy érzem, ma is egy új dolgot fogsz tanulni (ha jól értem a gondod)Bakker, ezt tényleg nem tudtam, nagyon király, köszi!
mocp-al viszont szabadon váltogathatok a könyvtárakban, egy szám meghallgatására is tökéletes, nem kell egy külön progi(nem mintha nem használnám az mplayert is:)).
Nekem egyenlőre jobban bejött, könnyebb a kezelhetősége számomra.2008-04-25-14:33 #2053534birno wrote:Athlon Xp 2500+ és érdekes mód az mocp ffrissítését végző script(négyszer lekéri az infót és küldi awesome-clientnek 0.9 másodpercenként) 10-15%-os plusz proci terhelést jelent, ami szerintem sok.
Az nem a fájlmegnyitás/írás stb. miatt van. Legalábbis túlnyomórészt. Hanem a rajzolgatás miatt, ha 0.9sec-enként négyszer rajzolsz…
Próbáld ki:Code:for i in $(seq 1 1000) ; echo 0 widget_tell sb_statusbar tb_textbox text $i | awesome-status; sleep 0.2; doneNekem olyan 7-8%-ról kb. 20-ra „felugrott” a proci (na jó, egy cel2ghz-ről van szó).
2008-04-25-15:12 #2053535birno wrote:Fájlba irányításra én is gondoltam, de az megint viszonylag „nagy” munka a procinak, a változó viszont pont jó lesz, köszönöm mindkettőtöknek.Különben a file-ba írás, meg szintén a memóriában történik, amíg nem „kell” szinkronizálni. Próbáld ki, hogy egy lassú usb-s cuccra, vagy floppy-ra milyen gyorsan lehet „írni”.
2008-04-25-16:41 #2053536vizsla wrote:Különben a file-ba írás, meg szintén a memóriában történik.Erről jut eszembe, tmpfs-re kellene írni ha mégis azt választanám, így szinkronizáláskori lassulás is ki lenne lőve, na majd tesztelem melyik a jobb.
2008-04-26-10:13 #2053537A változó nem vált be, ugyanis egybesűrítette az egész szöveget, de fájlba írva működik és csak 5-10%-ot eszik.
Code:for i in $(seq 1 1000) ; echo 0 widget_tell sb_statusbar tb_textbox text $i | awesome-status; sleep 0.2; doneNekem olyan 7-8%-ról kb. 20-ra „felugrott” a proci (na jó, egy cel2ghz-ről van szó).
Nekem max 5%-os plusz terhelést generált.
A másik scriptet még nem próbáltam ki, mert most egy érdekes hibával szívok.
Adott ez a scriptecske:
Code:#/bin/shecho $* >> ~/.awesome/file
if [ $# -eq 0 ]
then
echo „Nem adtál meg paramétert.”
exit 1
fifile=$(echo „$*”|sed ‘s/ /\ /g’|sed ‘s/(/\(/g’|sed ‘s/)/\)/g’|sed ‘s/[/\[/g’|sed ‘s/]/\]/g’|sed ‘s/^-.\ //g’)
while getopts „:spkach” kapcs
do
case $kapcs in
„s”)
mocp
sh /home/norbi/.awesome/mocp-status &
;;
„p”)
mocp -p
sh /home/norbi/.awesome/mocp-status &
;;
„k”)
mocp -s&&sleep 3&&killall sh mocp &> /dev/null
;;
„a”)
echo $file|tee -a ~/.awesome/file|xargs mocp -a
;;
„c”)
mocp -c
echo $file|xargs mocp -a
;;
„h”)
mocp -c
echo $file|xargs mocp -a
mocp -p
sh /home/norbi/.awesome/mocp-status &
;;
„?”)
echo „Hibás kapcsoló”; exit 2
;;
esac
done
exit 0Az elején lévő „echo” és az „a”-nál lévő „tee” parancs persze csak diagnosztizálás végett van benne.
Terminálból:
Code:~/.awesome$./mocp -a /media/files/Zene/Melechesh/[2003] Sphynx/01 Of Mercury And Mercury.mp3
~/.awesome$Vagyis hozzáadta a playlisthez az adott fájlt, ilyenkor a „~.awesome/file”-ban ez van:
Code:-a /media/files/Zene/Melechesh/[2003] Sphynx/01 Of Mercury And Mercury.mp3
/media/files/Zene/Melechesh/[2003] Sphynx/01 Of Mercury And Mercury.mp3Ha Thunarból próbálok hozzáadni egy fájlt, „~/.awesome/mocp -a %F”(%F adja hozzá a fájlokat elérési úttal együtt) parancs segítségével, a „~/.awesome/file” így néz ki:
Code:-a /media/files/Zene/Melechesh/[2003] Sphynx/01 Of Mercury And Mercury.mp3
/media/files/Zene/Melechesh/[2003] Sphynx/01 Of Mercury And Mercury.mp3Vagyis ugyanazt kapja meg mint parancssorból, de a fájlnév átalakításakor mégsem dolgozza fel a
Code:sed ‘s/[/\[/g’|sed ‘s/]/\]/g’részt.
Vajon miért?2008-04-26-11:45 #2053538Most nem fejtem meg ezeket, mert jojózik a szemem ezektól a backslashektől. :)))
De ami miatt nem működhet, az valószínűleg a space-ek.
Ha egy feldolgozandó parancsorban, scriptben, fileban csak ” ” van, az a következő paramétert jelenti, ha ” „, akkor az a ” ” jelenti.
Tehát:Code:valami valamiebből:
Code:„valami” „valami”és
Code:valami valamiebből:
Code:„valami valami”Na most, ha ezt a bináris stringet scriptként akarod feldolgozni (unix módon), akkor vagy „” között kell megadni, vagy helyettesíteni a ” „-eket ” „-ekkel, de ha binárisként, akkor a ” „-ből soha nem lesz ” „!
A legegyszerűbb mód – amit legalábbis én szoktam csinálni – az az, hogy a ” „-eket egy nem használt karakterre cserélem, pl: „&”. Minden módosítás ezen hajtódik végre. Ha ez egy lista, akkor ” ” -> „&” csere után a „n”-t pedig ” „-re cserélem. Majd, ha minden műveletet végrehajtottam rajta, akkor fordított sorrendben visszacserélem őket és továbbadom a paramétereket. „valami valami” helyett, pedig ha lehet „”valami valami””-t szoktam használni… átláthatóbb.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz