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 19:22 | Bezpečnostní upozornění

    Vládní CERT upozorňuje (𝕏) na kritické zranitelnosti v produktech VMware: CVE-2026-59309, CVE-2026-59310 a CVE-2026-47876. Zranitelnosti v VMware vCenter umožňují vzdálenému útočníkovi se síťovým přístupem obejít autentizaci a získat neoprávněný přístup k vCenter, případně zneužít directory traversal ke spuštění libovolného kódu na vCenter.

    Ladislav Hagara | Komentářů: 0
    dnes 18:33 | Bezpečnostní upozornění

    Společnost Coinkite upozorňuje na bezpečnostní chybu svých hardwarových kryptopeněženek Coldcard. Jedná se o kritickou chybu v generování náhodných čísel (RNG). Místo hardwarového generátoru náhodných čísel (TRNG) byl omylem používán softwarový fallback (PRNG).

    Ladislav Hagara | Komentářů: 0
    dnes 14:11 | Zajímavý projekt

    Představena byla nová linuxová distribuce Shadowfetch Linux. Na rozdíl od mnoha nováčků, které nabízejí převážně jiné téma a výběr softwaru, tato distribuce založená na Debianu Testing s desktopovým prostředím KDE Plasma 6.6, klade lokálně běžící umělou inteligenci do centra svého desktopového zážitku.

    Pinhead | Komentářů: 0
    včera 17:22 | Zajímavý projekt

    Max Leiter v roce 2019 zkusil zprovoznit X server na iPadu (iOS). Nyní se k tématu vrátil a s pomocí LLM a balíčkovacích nástrojů Procursus rozběhl desktop s X11 i Waylandem. Jeho balíčky jsou dostupné v repozitáři xiOS.

    |🇵🇸 | Komentářů: 16
    včera 13:33 | IT novinky

    Společnost Google Cloud dnes oznámila, že její infrastruktura a služby byly oficiálně zařazeny do Katalogu cloud computingu vedeného Digitální a informační agenturou (DIA). Tato certifikace potvrzuje, že infrastruktura a služby Google Cloud splňují přísné bezpečnostní a regulační požadavky České republiky pro provoz cloudových služeb ve veřejném sektoru.

    Ladislav Hagara | Komentářů: 6
    včera 13:11 | IT novinky

    Vůbec poprvé v historii se stát při testování digitálních služeb obrací na širokou veřejnost. Digitální a informační agentura (DIA) a Ministerstvo vnitra zvou občany k zapojení do zátěžového testu eDokladů, které od loňského podzimu prošly optimalizací aplikace a posílením infrastruktury. Test proběhne 13. srpna ve 13:00 a pro jeho úspěch bude potřeba zapojení několika desítek tisíc občanů. Zapojení do testu je zcela dobrovolné a úkol

    … více »
    Ladislav Hagara | Komentářů: 39
    včera 13:00 | Nová verze

    FireDragon je webový prohlížeč, doposud založený na Floorpu, jednom z forků Firefoxu s větším důrazem na ochranu soukromí a přizpůsobení uživatelského rozhraní. Spravuje ho člen komunity distribuce Garuda Linux. Nové vydání verze 13 opouští Floorp a přechází přímo na Firefox s patchi z LibreWolfu a vlastními úpravami. Dostupný je také na Flathubu.

    |🇵🇸 | Komentářů: 0
    včera 05:44 | Zajímavý software

    picogame (GitHub) je malý 2D herní engine pro mikrokontroléry jako RP2040, čip uvnitř kapesní konzole Picopad. Hru napíšeš v Pythonu a vyzkoušíš ji v prohlížeči nebo desktopovém simulátoru. Až bude hotová, zkopíruješ ji na podporovanou desku. Na začátku nepotřebuješ C, sestavení firmwaru ani hardware.

    Ladislav Hagara | Komentářů: 1
    29.7. 19:22 | Nová verze

    Multiplatformní prohlížeč elektronických knih KOReader byl vydán ve verzi 2026.07 "Sailing Walrus". U PDF souborů s SMask lze vyčistit pozadí. Přibyla podpora Kobo v5 nebo základní podpora OPDS 2.0.

    Ladislav Hagara | Komentářů: 2
    29.7. 14:22 | Komunita

    Společnost Valve sponzoruje a společnost Collabora portuje RADV (open source Vulkan ovladač pro AMD GPU z projektu Mesa) na Windows.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (18%)
     (30%)
     (5%)
     (6%)
     (2%)
     (15%)
     (23%)
    Celkem 2290 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


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

    9.3.2013 14:41 Standa
    řešení problému v bash
    Přečteno: 1009×
    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.