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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 1
včera 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 5
včera 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

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

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
včera 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
včera 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
1.12. 15:16 | Komunita

Na GOG.com začal zimní výprodej. Řada zlevněných her běží oficiálně také na Linuxu. Hru Neverwinter Nights Diamond lze dva dny získat zdarma. Hra dle stránek GOG.com na Linuxu neběží. Pomocí návodu ji lze ale rozběhnout také na Linuxu [Gaming On Linux].

Ladislav Hagara | Komentářů: 1
1.12. 13:14 | Bezpečnostní upozornění

Byla vydána verze 2.7.1 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Řešeno je několik bezpečnostních problémů. Aktualizován byl především Tor Browser na verzi 6.0.7. Tor Browser je postaven na Firefoxu ESR (Extended Support Release) a právě ve Firefoxu byla nalezena a opravena vážná bezpečnostní chyba MFSA 2016-92 (CVE-2016-9079, Firefox SVG Animation

… více »
Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 759 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama
Š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: 46
Jak zjednodušit tento příkaz
Přečteno: 778×
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: 46
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: 46
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: 46
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: 46
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: 46
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: 46
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: 46
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: 46
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.