abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 02:11 | Komunita

    Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.

    Ladislav Hagara | Komentářů: 8
    dnes 02:00 | Nová verze

    Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 1
    včera 18:33 | Nová verze

    Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.

    Ladislav Hagara | Komentářů: 0
    včera 13:55 | Nová verze

    Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | Nová verze

    Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.

    Ladislav Hagara | Komentářů: 0
    22.12. 23:44 | Nová verze

    Byla vydána nová verze 5.4.0 programu na úpravu digitálních fotografií darktable (Wikipedie). Z novinek lze vypíchnout vylepšenou podporu Waylandu. Nejnovější darktable by měl na Waylandu fungovat stejně dobře jako na X11.

    Ladislav Hagara | Komentářů: 0
    21.12. 05:00 | Nová verze

    Byla vydána beta verze Linux Mintu 22.3 s kódovým jménem Zena. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze, že nástroj Systémová hlášení (System Reports) získal mnoho nových funkcí a byl přejmenován na Informace o systému (System Information). Linux Mint 22.3 bude podporován do roku 2029.

    Ladislav Hagara | Komentářů: 2
    21.12. 01:55 | Nová verze

    GNU Project Debugger aneb GDB byl vydán ve verzi 17.1. Podrobný přehled novinek v souboru NEWS.

    Ladislav Hagara | Komentářů: 0
    19.12. 17:22 | IT novinky

    Josef Průša oznámil zveřejnění kompletních CAD souborů rámů tiskáren Prusa CORE One a CORE One L. Nejsou vydány pod obecnou veřejnou licenci GNU ani Creative Commons ale pod novou licencí OCL neboli Open Community License. Ta nepovoluje prodávat kompletní tiskárny či remixy založené na těchto zdrojích.

    Ladislav Hagara | Komentářů: 14
    19.12. 17:00 | Komunita

    Nový CEO Mozilla Corporation Anthony Enzor-DeMeo tento týden prohlásil, že by se Firefox měl vyvinout v moderní AI prohlížeč. Po bouřlivých diskusích na redditu ujistil, že v nastavení Firefoxu bude existovat volba pro zakázání všech AI funkcí.

    Ladislav Hagara | Komentářů: 1
    Kdo vám letos nadělí dárek?
     (30%)
     (1%)
     (10%)
     (3%)
     (1%)
     (3%)
     (13%)
     (23%)
     (14%)
    Celkem 69 hlasů
     Komentářů: 17, poslední dnes 00:24
    Rozcestník

    Dotaz: řešení problému v bash

    9.3.2013 14:41 Standa
    řešení problému v bash
    Přečteno: 935×
    Zdravim, poradi nekdo s timto problemem? O co se jedna. Mam promenou sel, sum a max, promena sel obsahuje cislo aktivni polozky, promena sum obsahuje hodnotu celkovy pocet vsech polozek a promena max obsahuje odnotu kolik zobrazit max polozek na stranku. Potrebuji vypsat polozky tak aby kdyz priklad bude celekem 20 polozek v promene sum a v promene max bude nastaveno 5 tak aby se vypsaly polozky 1 az 5 az do doby kdy hodnota v promene sel max+1 a oak uz vzdy po jedne dolu, nahoru bude stejny zpusob, zacne se posunovat az dosahne prvni vypsane položky. Seru se s tím již dvy dny a nejsem schopen s tim hnout. Poradi prosim nekdo. Díky moc

    Řešení dotazu:


    Odpovědi

    pepe_ avatar 9.3.2013 14:46 pepe_ | skóre: 48
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Nějak nerozumim kde je problém. Pár IF a je hotovo ne.  Zkus se rozepsat pro co to vlastně chceš popřípadě vložit kód co máš. Nerozumim tomu co ti nejde.

    9.3.2013 16:25 Standa
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Par podminek :( ale jakych? Dik

    tady je kod

    #!/bin/bash
    
    ttt=("aaa" "bbb" "ccc" "ddd" "eee" "fff" "ggg" "hhh" "iii" "jjj")
    sel=0
    sum=${#itm[@]}
    max=5
    while [ 1 ]
    do
      clear
      for ((i=0; i<$max; i++ ))
      do
        if [ $sel = $i ]
        then
          echo -e "\e[5;31m ${ttt[i]} \e[0m"
        else
          echo "${ttt[i]}"
        fi
      done
    #sel=$((sel-1)) sel=$((sel+1)) sleep 1 done
    pepe_ avatar 9.3.2013 20:59 pepe_ | skóre: 48
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Tohle ?   (Pohyb  kurzorovejma klávesama  UP/DOWN)  ESC konec

    #!/bin/bash
    ttt=("aaa" "bbb" "ccc" "ddd" "eee" "fff" "ggg" "hhh" "iii" "jjj")
    sel=0
    sum=${#itm[@]}
    max=10
    while [ 1 ]
    do
      clear
      for ((i=0; i<$max; i++ ))
      do
        if [ $sel = $i ]
        then
          echo -e "\e[5;31m ${ttt[i]} \e[0m"
        else
          echo "${ttt[i]}"
        fi
    done
    echo $k
    read -sn1 -t1 c
    l=`perl -e "printf('%d',ord('$c'));"`
    k="$l"
    if ((k == 66)) && ((sel < max -1 )) ; then
    let sel++
    fi
    if ((k == 65)) && ((sel > 0)); then
    let sel--
    fi
    if ((k == 27)) ; then
    break
    fi
    done
    
    pepe_ avatar 9.3.2013 21:10 pepe_ | skóre: 48
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Teda tohle      UP/DOWN   a stop je ctrl+c

     

    #!/bin/bash
    ttt=("aaa" "bbb" "ccc" "ddd" "eee" "fff" "ggg" "hhh" "iii" "jjj")
    sel=0
    sum=${#itm[@]}
    max=10
    while [ 1 ]
    do
      clear
      for ((i=0; i<$max; i++ ))
      do
        if [ $sel = $i ]
        then
          echo -e "\e[5;31m ${ttt[i]} \e[0m"
        else
          echo "${ttt[i]}"
        fi
    done
    read -sn1 -t1 c
    l=`perl -e "printf('%d',ord('$c'));"`
    k="$l"
    
    if ((k == 66)) && ((sel < max -1 )) ; then
    let sel++
    fi
    
    if ((k == 65)) && ((sel > 0)); then
    let sel--
    fi
    
    
    pepe_ avatar 9.3.2013 21:52 pepe_ | skóre: 48
    Rozbalit Rozbalit vše Re: řešení problému v bash

    No ještě jedna verze   (vypisuje jen 5 ale roluje)

     

     

    #!/bin/bash
    ttt=("aaa" "bbb" "ccc" "ddd" "eee" "fff" "ggg" "hhh" "iii" "jjj")
    sel=0
    sum=${#ttt[@]}
    max=5
    pos=0
    while [ 1 ]
    do
      clear
    
      for ((i=$pos; i<($pos+$max); i++ ))
      do
        if [ $sel = $i ]
        then
          echo -e "\e[5;31m ${ttt[i]} \e[0m"
        else
          echo "${ttt[i]}"
        fi
    done
    read -sn1 -t1 c
    l=`perl -e "printf('%d',ord('$c'));"`
    k="$l"
    
    if ((k == 66)) && ((sel < (sum -1) )) ; then
    let sel++
    
     if (((pos +5) < sum)); then
     let pos++
     fi
    
    fi
    
    if ((k == 65)) && ((sel > 0)); then
    let sel--
    
     if (( (pos ) > 0 )); then
     let pos--
     fi
    
    fi
    
    done
    
    10.3.2013 00:15 Standa
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Díky za kód, funguje mi pouze ten poslední ale není to jak bych to potřeboval, viz můj poslední příklad. Díky
    25.3.2013 16:23 kei.101
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Jděte doháje s těma polema v shellu :/ Až to budete potřebovat spustit někde jinde, tak se z toho zblázníte..
    David Watzke avatar 26.3.2013 09:52 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Proč by z toho bláznili? Stačí mít potřebné závislosti. Stanovíš-li si, že závislost bude Bash (určité verze), tak se pak nemůžeš divit, že to nefunguje v nějakém prehistorickém či nekompatibilním shellu.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    27.3.2013 13:27 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Tos ještě neviděl asociativní pole :D
    27.3.2013 13:45 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Nebo implementaci vícerozměrného pole ;).
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    28.3.2013 23:47 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: řešení problému v bash
    :D
    9.3.2013 18:41 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: řešení problému v bash
    az do doby kdy hodnota v promene sel max+1 a oak uz vzdy po jedne dolu,

    od slov až do doby dál už je zadání nejasné, nechybí tam nějaká slova, kusy věty či operátory? ... sel bude max+1 a pak už vždy po jedné dolů (ale co to znamená "pak už vždy po jedné dolů"? Vypisovat po jedné dolů? Jak po jedné co po jedné? Nemělo se to vypisovat po pěti? A sel se v průběhu výpisu mění?
    10.3.2013 00:14 Standa
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Přikládám ještě názornou ukázku pro mé lepší vyjádření. Výpis při nastavení proměnné MAX=5

    Spustím program a dostanu výsledek
    
    >1111111111<
     2222222222
     3333333333
     4444444444
     5555555555
    
    stisk klávesy dolů, výsledek
    
     1111111111
    >2222222222<
     3333333333
     4444444444
     5555555555
    
    stisk klávesy dolů, výsledek
    
     1111111111
     2222222222
    >3333333333<
     4444444444
     5555555555
    
    stisk klávesy dolů, výsledek
    
     1111111111
     2222222222
     3333333333
    >4444444444<
     5555555555
    
    stisk klávesy dolů, výsledek
    
     1111111111
     2222222222
     3333333333
     4444444444
    >5555555555<
     
    stisk klávesy dolů, ted prijde zmena výsledek
    
     2222222222
     3333333333
     4444444444
     5555555555
    >6666666666<
    
    stisk klávesy dolů, výsledek, tohle se opakuje až po poslední položku
    
     3333333333
     4444444444
     5555555555
     6666666666
    >7777777777<
    
    
    ***********************************
    ted stisk klávesy nahoru, výsledek
    ***********************************
    
     3333333333
     4444444444
     5555555555
    >6666666666<
     7777777777
    
    stisk klávesy nahoru, výsledek
    
     3333333333
     4444444444
    >5555555555<
     6666666666
     7777777777
    
    stisk klávesy nahoru, výsledek
    
     3333333333
    >4444444444<
     5555555555
     6666666666
     7777777777
    
    stisk klávesy nahoru, výsledek
    
    >3333333333<
     4444444444
     5555555555
     6666666666
     7777777777
    
    stisk klávesy nahoru, ted prijde zmena výsledek
    
    >2222222222<
     3333333333
     4444444444
     5555555555
     6666666666
     
    stisk klávesy nahoru, výsledek
    
    >1111111111<
     2222222222
     3333333333
     4444444444
     5555555555
    Děkuji
    pepe_ avatar 10.3.2013 01:07 pepe_ | skóre: 48
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Tady ?

     

    #!/bin/bash
    ttt=("aaa" "bbb" "ccc" "ddd" "eee" "fff" "ggg" "hhh" "iii" "jjj")
    sel=0
    sum=${#ttt[@]}
    max=5
    pos=0
    center=0
    while [ 1 ]
    do
      clear
    
      for ((i=$pos; i<($pos+$max); i++ ))
      do
        if [ $sel = $i ]
        then
          echo -e ">\e[5;31m${ttt[i]}\e[0m<"
        else
          echo " ${ttt[i]} "
        fi
    done
    read -sn1 -t1 c
    l=`perl -e "printf('%d',ord('$c'));"`
    k="$l"
    
    if ((k == 66)) && ((sel < (sum -1) )) ; then
    let sel++
    
      if ((center < max)); then
      let center++
      fi
    
      if ((center == max )) && (((pos +5) < sum)); then
      let pos++
      fi
     
    fi
    
    if ((k == 65)) && ((sel > 0)); then
    let sel--
    
      if ((center > 0)); then
      let center--
      fi
    
    
     if ((center == 0 )) && (( (pos ) > 0 )); then
     let pos--
     fi
    
    fi
    
    done
    10.3.2013 15:29 Standa
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Super, díky moc za tvou ochotu a čas! Poslední otázka... ;-) a číslo účtu??
    pepe_ avatar 10.3.2013 15:38 pepe_ | skóre: 48
    Rozbalit Rozbalit vše Re: řešení problému v bash

    To je nekonečná práce , přidat ještě tunu IF proti všem možnejm kombinacím , přidat  ( http://www.bashguru.com/2010/04/how-to-handle-cursor-movement-in-shell.html )   pozici zobrazení , orámování , a stále bude co vylepšovat. Nakonec to raději udělá někdo za pomoci ncurses v céčku. :)

    10.3.2013 21:53 Standa
    Rozbalit Rozbalit vše Re: řešení problému v bash
    To je nabídka? ;-)
    11.3.2013 21:52 Někdo jiný | skóre: 18 | blog: Někde jinde
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Už udělal: dialog
    24.3.2013 12:23 Veronika
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Ahoj, měla bych taky dotaz, prozradí mě někdo vzorec pro získání obsahu proměné $pos a $center když znám jenom proměnou $sel? Děkuji
    25.3.2013 17:40 Veronika
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Jasně, zase pitomá ženská co se s3r3 do programování..... Hlavně jí nikdo neraďte!!! :-(
    pepe_ avatar 25.3.2013 17:54 pepe_ | skóre: 48
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Ať to čtu jak to čtu stále nevím co vlastně chcete ...

     

    Zkuste svůj požadavek upřesnit.

     

    Hodnotu těch proměnných   echo $prommena   si můžete vypsat.  Nebo nechápete princip ?  O co jde ?

    pepe_ avatar 25.3.2013 18:15 pepe_ | skóre: 48
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Nebo jdi sem , pokud tam budu nebo někdo bude  :  http://cz3dtc.cz/linux.htm

    pepe_ avatar 25.3.2013 20:38 pepe_ | skóre: 48
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Aha , celej kód je naprd , oprava bude : http://pastebin.com/9etQa14z

     

    Teda až to předělam.

    Děkuji za informace Veroniky která vyšťourala že je to celé na prd :)

    pepe_ avatar 26.3.2013 21:25 pepe_ | skóre: 48
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Tak zde je opravená verze :

    #!/bin/bash
    start=1
    clear
    tput civis      -- invisible
    trap "stty $(stty -g)" EXIT
    stty -echo -icanon time 2 || exit $?
    KEYS="" ; IFS=$'\a'
    ttt=("Volba  1" "Volba  2" "Volba  3" "Volba  4" "Volba  5" "Volba  6" "Volba  7" "Volba  8" "Volba  9" "Volba 10" "Volba 11" "Volba 12" "Volba 13" "Volba 14" "Volba 15")
    ap=0; let start--
    pp=${#ttt[@]}
    mp=5
    if ((pp < mp)) ; then let mp=pp ; fi
    posun_seznamu=0
    center=0
    acc=5
    function zobraz ()
    {
    let tmpap=ap ; let tmpap++  
    echo -en "\033[1;1H"
    echo "ESC = Konec , ENTER = výběr volby"
    let posa=$posun_seznamu ; let posb=($posun_seznamu+$mp)
    let posa=($posa + $center) ; let posb=($posb + $center)
    echo -e "\033[1m\033[46m          \e[0m"
    for ((i=$posa; i<($posb); i++ ))
    do
    if [ $ap = $i ]
    then
    echo -e "\033[1m\033[46m \e[0m\033[1m\033[44m${ttt[i]}\e[0m\033[1m\033[46m \e[0m"
    else
    echo -e "\033[1m\033[46m \e[0m\033[30m\033[47m${ttt[i]}\e[0m\033[1m\033[46m \e[0m"
    fi
    done
    echo -e "\033[1m\033[46m          \e[0m"
    }
    
    for ((l=0; l<($start); l++ ))
    do
    zobraz
     if ((ap < (pp -1 ) )) ; then
     let ap++
     if (((center + (mp -1)) < ap)) ; then let center++ ; fi
     fi
    done
    zobraz
    while [ 1 ]; do
    while read -t 0 ; do read -s -r -d "" -N 1 -t 0.2 CHAR && KEYS="$KEYS$CHAR" || break
    done
    if [ -z "$KEYS" ]; then sleep 0.05 ; continue ; fi
    case "$KEYS" in
    $'\x1B\x5B\x42'*) 
    KEYS="${KEYS##???}"
    if ((ap < (pp -1 ) )) ; then
    let ap++
    if (((center + (mp -1)) < ap)) ; then let center++ ; fi
    fi
    zobraz
    ;;
    $'\x1B\x5B\x41'*) 
    KEYS="${KEYS##???}"
    if ((ap > 0)); then
    let ap--
    if ((ap < posa )) ; then let center-- ; fi
    fi
    zobraz
    ;;
    $'\n'*|$'\r'*) 
    KEYS="${KEYS##?}"
    echo "Vybraná položka : ${ttt[ap]} "
    tput cnorm   -- normal
    exit 0
    ;;
    $'\x1B') 
    KEYS="${KEYS##?}"
    echo "Program ukončen ..."
    tput cnorm   -- normal
    exit 0
    ;;
    [$'\x01'-$'\x1F'$'\x7F']*) 
    KEYS="${KEYS##?}"
    ;;
     *) 
    KEY="${KEYS:0:1}"
    KEYS="${KEYS#?}"
    ;;
    esac
    done
    
    pepe_ avatar 28.3.2013 14:20 pepe_ | skóre: 48
    Rozbalit Rozbalit vše Re: řešení problému v bash

    Na pastebin  http://pastebin.com/tq2XgnGe  je verze se zakázaným ctrl+c a klávesou pause (Finální verze).

    27.3.2013 13:25 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: řešení problému v bash
    Poradil bych, ale já ten váš dotaz také nepochopil, tak jsem doufal, že někdo jiný se chytne.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.