Bash script

Kezdőlap Fórumok Programozás Bash script

10 bejegyzés megtekintése - 351-360 / 438
  • Szerző
    Bejegyzés
  • #2053529
    uzsolt
    Felhasználó

      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 egy

      Code:
      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)

      #2053530
      pointux
      Felhasználó
        Code:
        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

        #2053531
        birno
        Felhasználó

          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.

          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”. 🙂

          #2053532
          uzsolt
          Felhasználó
            birno 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.
            #2053533
            birno
            Felhasználó
              Code:
              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

              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.

              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.

              #2053534
              uzsolt
              Felhasználó
                birno 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; done

                Nekem olyan 7-8%-ról kb. 20-ra „felugrott” a proci (na jó, egy cel2ghz-ről van szó).

                #2053535
                pointux
                Felhasználó
                  birno 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”.

                  #2053536
                  birno
                  Felhasználó
                    vizsla 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.

                    #2053537
                    birno
                    Felhasználó

                      A 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; done

                      Nekem 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/sh

                      echo $* >> ~/.awesome/file

                      if [ $# -eq 0 ]
                      then
                      echo „Nem adtál meg paramétert.”
                      exit 1
                      fi

                      file=$(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 0

                      Az 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.mp3

                      Ha 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.mp3

                      Vagyis 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?

                      #2053538
                      pointux
                      Felhasználó

                        Most 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 valami

                        ebből:

                        Code:
                        „valami” „valami”

                        és

                        Code:
                        valami valami

                        ebbő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.

                      10 bejegyzés megtekintése - 351-360 / 438
                      • Be kell jelentkezni a hozzászóláshoz.