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 01:55 | Nová verze

Byla vydána verze 1.13 multiplatformního open source textového editoru Brackets (Wikipedie, GitHub). Přehled novinek v oficiálním oznámení a v poznámkách k vydání. Brackets je nově dostupný také jako balíček ve formátu Flatpak z oficiálního repozitáře Flathub.

Ladislav Hagara | Komentářů: 3
včera 18:44 | Komunita

Oficiální YouTube kanál Blenderu je již několik dní blokován. Důvody jsou zatím nejasné. Pravděpodobně chyba YouTube. Dění lze sledovat na Twitteru Tona Roosendaala.

Ladislav Hagara | Komentářů: 8
včera 17:55 | Zajímavý software

Na GitHubu byly pod open source licencí LLVM zveřejněny zdrojové kódy překladače programovacího jazyka C++ Zapcc vycházejícího z Clangu/LLVM. Překlad pomocí Zapccu je díky lepšímu kešování obvykle několikrát rychlejší než překlad pomocí Clangu. V březnu loňského roku byl vydán Zapcc ve verzi 1.0.

Ladislav Hagara | Komentářů: 0
včera 17:22 | Pozvánky

Červnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 21. 6. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: F-Droid, aneb svobodný software do vašeho mobilu. Kromě toho budou k vidění i vývojové desky HiFive1 se svobodným/otevřeným čipem RISC-V.

xkucf03 | Komentářů: 1
15.6. 22:44 | Zajímavý článek

Na blogu projektu NeoPG (GitHub), kryptografického softwaru vycházejícího z GnuPG, byly zveřejněny 4 příspěvky detailně popisující aktuální bezpečnostní problémy v GnuPG a souvisejících softwarových produktech. V prvním příspěvku je ukázáno, že je možné vytvořit zprávu, o které budou Earlybird, Evolution, Mutt nebo Outlook tvrdit, že jí dešifrovali a přitom ale zpráva vůbec zašifrována nebyla. V druhém příspěvku je popsána

… více »
Ladislav Hagara | Komentářů: 7
15.6. 13:00 | Komunita

GamingOnLinux informuje, že počítačová hra Track Mania Nations Forever (Steam, Wikipedie) pro Windows je nově dostupná také jako snap. Stejně jako v případě winepaku a Flatpaku se k běhu hry používá překladová vrstva Wine.

Ladislav Hagara | Komentářů: 12
14.6. 15:12 | Komunita

Tradiční setkání příznivců operačního systému Linux pod názvem Linux párty Teplice se bude konat v pátek 15. 6. 2018 v Hospůdce u černé Kočky od 18:00 hodin. Setkají se zde pamětníci příkazové řádky, vítáni jsou však i začínající uživatelé.

František Bublík | Komentářů: 21
14.6. 14:00 | Bezpečnostní upozornění

Intel potvrdil (INTEL-SA-00145) další bezpečnostní chybu ve svých procesorech. Jedná se o chybu CVE-2018-3665 s názvem LazyFP.

Ladislav Hagara | Komentářů: 15
14.6. 11:00 | Nová verze

Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 153. brněnský sraz, který proběhne v pátek 15. června od 18:00 v restauraci U OSLŮ na ulici Sokolská 361/10. Pro zájemce proběhne krátké promítání z výletu do Černobylu.

Ladislav Hagara | Komentářů: 0
13.6. 19:58 | Upozornění

Server lupa.cz rozebírá připravovanou reformu copyrightu v EU a dopad jejího článku 13, který dává internetovým platformám povinnost řešit autorské právo za vlastníky práv, což by v podstatě vedlo k automatizované cenzuře a konci internetu tak, jak ho známe dnes. Podobně v otevřeném dopise varují Vint Cerf, Tim Berners-Lee a jiní odborníci, Cory Doctorow upozorňuje na důsledky pro Wikipedii, nebo github na sdílení kódu.

marbu | Komentářů: 117
Jak čtete delší texty z webových stránek?
 (78%)
 (22%)
 (4%)
 (7%)
 (2%)
 (12%)
Celkem 208 hlasů
 Komentářů: 36, poslední včera 21:16
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Dotaz: Jak zjednodušit tento příkaz

    pepe_ avatar 8.11.2013 00:55 pepe_ | skóre: 47
    Jak zjednodušit tento příkaz
    Přečteno: 790×
    celkem=$(ls -1 /usr/share/fortune/cs/*.dat | wc -l ) ; soubor=$(( $RANDOM % $celkem )) ; rec=$(ls -1 /usr/share/fortune/cs/*.dat | head -n $soubor | tail -1) ; fortunik=${rec%%.*} ; fortune $fortunik

    Je vyžadován nainstalovaný program fortune,fortune-mod-cs

    Řešení dotazu:


    Odpovědi

    8.11.2013 06:29 Petr MOTEJLEK | skóre: 6
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz
    Ahoj,

    Jen, jestli tomu dobře rozumím - tobě jde o vybrání náhodného souboru z konkrétního adresáře a spuštění programu fortune nad tím souborem, ano?
    pepe_ avatar 8.11.2013 09:24 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz

    Ano , v archu mám :

    ls /usr/share/fortune/cs
    cimrman      citat.dat  hornicek        ignac.dat   klasik-cz      lkml.dat    mikulas      murphy.dat     plihal        pratchett.dat  reddwarf      stoa1.dat   vodnansky      wodehouse.dat
    cimrman.dat  filmy      hornicek.dat    jerome      klasik-cz.dat  lodge       mikulas.dat  parafraze      plihal.dat    prislovi       reddwarf.dat  stopar      vodnansky.dat  wright
    citace       filmy.dat  chesterton      jerome.dat  klasik-sk      lodge.dat   mladik       parafraze.dat  pocitace      prislovi.dat   skala         stopar.dat  wikiquote      wright.dat
    citace.dat   guth       chesterton.dat  josef       klasik-sk.dat  market      mladik.dat   parkinson      pocitace.dat  rdvcitaty      skala.dat     valka       wikiquote.dat  zemeplocha
    citat        guth.dat   ignac           josef.dat   lkml           market.dat  murphy       parkinson.dat  pratchett     rdvcitaty.dat  stoa1         valka.dat   wodehouse      zemeplocha.dat
    
    

    Chci dát do bashrc kde nyní mám

    #
    # ~/.bashrc
    #
    
    # If not running interactively, don't do anything
    [[ $- != *i* ]] && return
    
    alias ls='ls --color=auto'
    PS1="\[\033[0;37m\]\342\224\214\342\224\200\$([[ \$? != 0 ]] && echo \"[\[\033[0;31m\]\342\234\227\[\033[0;37m\]]\342\224\200\")[$(if [[ ${EUID} == 0 ]]; then echo '\[\033[0;31m\]\h'; else echo '\[\033[0;33m\]\u\[\033[0;37m\]@\[\033[0;96m\]\h'; fi)\[\033[0;37m\]]\342\224\200[\[\033[0;32m\]\w\[\033[0;37m\]]\n\[\033[0;37m\]\342\224\224\342\224\200\342\224\200\342\225\274 \[\033[0m\]"
    alias pacman='sudo pacman'
    alias nmap='sudo nmap -sV -O -v '
    alias ssh='ssh -X -C '
    export EDITOR="mcedit"
    celkem=$(ls -1 /usr/share/fortune/cs/*.dat | wc -l ) ; soubor=$(( $RANDOM % $celkem )) ; rec=$(ls -1 /usr/share/fortune/cs/*.dat | head -n $soubor | tail -1) ; fortunik=${rec%%.*} ; echo -e "Hláška '"${fortunik##*/}"'\n" ; fortune $fortunik
    



    alias kec= .....          ale ten dlouhej příkaz ze stejnou funkcí mi to nežere

     

    takže potřebuju něco aby ve složce usr/share/fortune/cs/ spočítalo počet souborů bez koncovky .dat , pak náhodně jeden vybralo a spustilo se správným parametrem fortune.

    8.11.2013 09:11 NN
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz
    Treba, ale urcite se najde optimalnejsi nahodny vyber:
    fortune `find * -name '*.txt' -print | sort -R | head -n1 | sed s/\.txt//`
    pepe_ avatar 8.11.2013 09:26 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz

    Jo je to asi lepší :   find /usr/share/fortune/cs/* -name '*.dat' -print | sort -R | head -n1 | sed s/\.dat//

    8.11.2013 09:41 potato
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz
    find /usr/share/fortune/cs/*

    určitě není lepší. Pokud jsou tam jen soubory, není zapotřebí find vůbec

    ls /usr/share/fortune/cs/*.dat

    Pokud tam jsou i adresáře, tak je nesmysl expandovat argument findu

    find /usr/share/fortune/cs -name '*.dat'
    pepe_ avatar 8.11.2013 09:46 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz

    Asi nerozumíš jednoduchému dotazu že se nesmí zobrazovat soubory .dat  ale bez přípony a to s uvedením cesty nijak nezkrátí. příkaz.

    To co je ve složce je již v předchozích příspěvcích ukázáno.

    8.11.2013 09:50 potato
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz
    Asi nerozumíš tomu, že mluvím o findu. Musím ti tam skutečně nakopírovat celý zbytek té roury, který se nemění?
    pepe_ avatar 8.11.2013 10:07 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz

    rec=$(find /usr/share/fortune/cs -name '*.dat' | sort -R | head -n1 | sed s/\.dat//) ; echo -e "Hláška -"${rec##*/}"-\n" ; fortune $rec ; echo

     

    Dobře , zkráceno podle tebe (nějak sem si přečetl jen začátek a konec tvé reakce)

    Fuky avatar 9.11.2013 10:08 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz
    sort -R | head -n1

    lze zkrátit na:

    shuf -n1

    How can I select random files from a directory in bash?
    pepe_ avatar 9.11.2013 11:08 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz

    Děkuji , to jsem vůbec nikde nenašel .

    rADOn avatar 8.11.2013 13:46 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz
    To co chces je standartni chovani programu fortune (plus ti to jeste znormalizuje podle poctu fortunek v jednotlivych souborech), co te nuti objevovat zrovna tohle kolo?
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    pepe_ avatar 8.11.2013 23:46 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz

    Bohuzel standartni chovani neni vypsat nazev databaze hlasek ze ktere se prave ukazuje text a take ze nechci jinou nez slozku cesky .

    Řešení 2× (Cubic, Patrik Uhrak)
    rADOn avatar 13.11.2013 14:47 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz
    fortune -c /usr/share/fortune/cs
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    pepe_ avatar 13.11.2013 15:18 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz

    To je opravdu easy , díky !

    rADOn avatar 13.11.2013 17:11 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz
    Doufám že sis z toho vzal poučení :-)
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    9.11.2013 10:52 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz

    A takto by to neslo:

    fortunecz(){ set *.dat; chosen=$(( $RANDOM % $# )); eval fortune \${${chosen}%%.*};}

    a dat to do ~/.bashrc napr. ako ste navrhli ?

    pepe_ avatar 9.11.2013 11:07 pepe_ | skóre: 47
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz

    #fortunecz
    fortune:/bin/bash not a fortune file or directory
    No fortunes found

    ne takto mi to nefunguje

    9.11.2013 11:30 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz

    Nefunguje, bo som zabudol na adresar:

    fortunecz(){ dir=/usr/share/fortune/cs/; set "$dir"/*.dat; chosen=$(( $RANDOM % $# )); eval fortune \${${chosen}%%.*}; }

    Som to odskusal priamo v adresare s nimi, tak sa chybicka vloudila. Ale inak u mna to funguje.

    9.11.2013 12:08 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz

    Taktiez je problem, ze premenna chosen niekedy ma hodnotu 0, co je shell samotny. Bud zavolat random znova, alebo jednoducho takto ( a ma tu mozno za to aj dakto zozerie :) ):

    fortunecz(){ dir=/usr/share/fortune/cs/; set "$dir"/*.dat; chosen=$(( $RANDOM % $# + 1 )); eval fortune \${${chosen}%%.*}; }
    9.11.2013 12:29 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz

    Ok, ja dneska koncim uz, lebo co je moc, to je moc. Fortune sice vzdy vrati daco, ale problem je, ze tym pripocitanim 1 sa sice odstrani chyba ohladne volania $0, ale na hornom konci rozsahu bude hodnota $n prazdna a fortune zoberie hlasku aj z ineho ako ceskeho adresara. Takze takto by to mohlo byt, aspon ja by som bol spokojny:

    fortunecz(){ dir=/usr/share/fortune/cs/; set "$dir"/*.dat; chosen=$(( $RANDOM % $# )); [[ $chosen -eq 0 ]] && let chosen++; eval fortune \${${chosen}%%.*}; }

    Mojim cielom bolo cisto v bash-i to vyriesit, lebo si osobne myslim, ze volat find, tail, sort pre tuto ulohu je zbytocne. p.s: Asi by som mal mat daky casovy limit vynuteny po zobrazeni nahladu, kedy sa postavim zo stolicky a zacnem aj premyslat, nez nieco odoslem. :)

    Fuky avatar 9.11.2013 18:31 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz
    Lze to řešit i následovně:

    $ f=( /path/*.dat ) result="${f[RANDOM%${#f[@]}]%.dat}" && fortune "${result##*/}"

    Nevidím jediný rozumný důvod proč to řešit čistě v Bashi. Oproti volání find a shuf je to výrazně méně čitelné.

    BTW: Jinak co se týče Bashe, určitě bych se snažil vyhnout psát v něm co rozsáhlejšího, skripty jsou hodně nečitelné a špatně udržovatelné. Rozhodně je mnohem lepší použít Python.
    13.11.2013 17:18 Pavel
    Rozbalit Rozbalit vše Re: Jak zjednodušit tento příkaz
    Nebo Perl... :-D

    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.