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 04:44 | Nová verze

    Po více než dvou letech od vydání předchozí verze 2.12 byla vydána nová stabilní verze 2.14 systémového zavaděče GNU GRUB (GRand Unified Bootloader, Wikipedie). Přehled novinek v souboru NEWS a v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    dnes 02:22 | Nová verze

    Google Chrome 144 byl prohlášen za stabilní. Nejnovější stabilní verze 144.0.7559.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 10 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře (YouTube).

    Ladislav Hagara | Komentářů: 1
    dnes 01:55 | Humor

    Microsoft zveřejnil zdrojový kód XAML Studia a uvolnil ho pod MIT licencí. XAML Studio je nástroj ze světa Windows, určený pro tvorbu uživatelského rozhraní aplikací pomocí XAML (Extensible Application Markup Language). Stalo se tak zhruba po osmi letech od prvního prohlášení Microsoftu, že se tento kód chystá zveřejnit.

    NUKE GAZA! 🎆 | Komentářů: 0
    dnes 01:44 | Zajímavý projekt

    TimeCapsule, 'časová kapsle', je jazykový model trénovaný výhradně na datech z určitých míst a časových období, aby se tak napodobila autentická slovní zásoba, způsob vyjadřování a názory dané doby. Na Hugging face jsou k dispozici modely natrénované na historických textech dostupných v oblasti Londýna mezi lety 1800 až 1875.

    NUKE GAZA! 🎆 | Komentářů: 1
    včera 17:55 | Nová verze

    Radicle byl vydán ve verzi 1.6.0 s kódovým jménem Amaryllis. Jedná se o distribuovanou alternativu k softwarům pro spolupráci jako např. GitLab.

    Ladislav Hagara | Komentářů: 0
    včera 13:22 | Upozornění

    Zemřel Scott Adams, tvůrce komiksových stripů Dilbert parodujících pracovní prostředí velké firmy.

    Ladislav Hagara | Komentářů: 3
    včera 13:00 | Nová verze

    Sdružení CZ.NIC vydalo novou verzi Knot Resolveru (6.1.0). Jedná se o první vydanou stabilní verzi 6, která je nyní oficiálně preferovanou a doporučovanou verzí, namísto předešlé verze 5. Více o Knot Resolveru 6 je možné se dočíst přímo v dokumentaci.

    VSladek | Komentářů: 1
    včera 01:22 | Nová verze

    Byl vydán Linux Mint 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ářů: 1
    13.1. 21:33 | Nová verze

    Wine bylo po roce vývoje od vydání verze 10.0 vydáno v nové stabilní verzi 11.0. Přehled novinek na GitLabu. Vypíchnuta je podpora NTSYNC a dokončení architektury WoW64.

    Ladislav Hagara | Komentářů: 5
    13.1. 16:11 | Nová verze

    Byl vydán Mozilla Firefox 147.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Firefox nově podporuje Freedesktop.org XDG Base Directory Specification. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 147 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (5%)
     (0%)
     (8%)
     (19%)
     (3%)
     (6%)
     (3%)
     (11%)
     (44%)
    Celkem 441 hlasů
     Komentářů: 12, poslední včera 21:12
    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: 48
    Jak zjednodušit tento příkaz
    Přečteno: 884×
    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: 48
    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: 48
    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: 48
    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: 48
    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: 48
    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: 48
    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: 48
    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: 48
    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.