Byla vydána nová verze 1.12.0 dynamického programovacího jazyka Julia (Wikipedie) určeného zejména pro vědecké výpočty. Přehled novinek v příspěvku na blogu a v poznámkách k vydání. Aktualizována byla také dokumentace.
V Redisu byla nalezena a v upstreamu již opravena kritická zranitelnost CVE-2025-49844 s CVSS 10.0 (RCE, vzdálené spouštění kódu).
Ministr a vicepremiér pro digitalizaci Marian Jurečka dnes oznámil, že přijme rezignaci ředitele Digitální a informační agentury Martina Mesršmída, a to k 23. říjnu 2025. Mesršmíd nabídl svou funkci během minulého víkendu, kdy se DIA potýkala s problémy eDokladů, které některým občanům znepříjemnily využití možnosti prokázat se digitální občankou u volebních komisí při volbách do Poslanecké sněmovny.
Společnost Meta představila OpenZL. Jedná se o open source framework pro kompresi dat s ohledem na jejich formát. Zdrojové kódy jsou k dispozici na GitHubu.
Google postupně zpřístupňuje českým uživatelům Režim AI (AI Mode), tj. nový režim vyhledávání založený na umělé inteligenci. Režim AI nabízí pokročilé uvažování, multimodalitu a možnost prozkoumat jakékoliv téma do hloubky pomocí dodatečných dotazů a užitečných odkazů na weby.
Programovací jazyk Python byl vydán v nové major verzi 3.14.0. Podrobný přehled novinek v aktualizované dokumentaci.
Bylo oznámeno, že Qualcomm kupuje Arduino. Současně byla představena nová deska Arduino UNO Q se dvěma čipy: MPU Qualcomm Dragonwing QRB2210, na kterém může běžet Linux, a MCU STM32U585 a vývojové prostředí Arduino App Lab.
Multiplatformní open source voxelový herní engine Luanti byl vydán ve verzi 5.14.0. Podrobný přehled novinek v changelogu. Původně se jedná o Minecraftem inspirovaný Minetest v říjnu loňského roku přejmenovaný na Luanti.
Byla vydána nová stabilní verze 6.10 (YouTube) multiplatformního frameworku a GUI toolkitu Qt. Podrobný přehled novinek v poznámkách k vydání.
tempfile=`tempfile 2>/tmp/null` || tempfile=/tmp/test$$ trap "rm -f $tempfile" 0 1 2 5 15
tak presne nevim, ale prvni radek se pokusi nastavit do promenne docasny nazev souboru pomoci prikazu tempfile, presmerovava error vystup, pokud se to nepovede, naplni promennou tempfile cestou /temp/test<pid>. Potom se spusti prikaz trap, ktery neznam ale manual by mel napomoci. Asi to dela neco ze v pripade ze nastane jeden ze signalu 0 1 2 5 nebo 15 tak provede akci "rm -f atd". Ale opravdu jen hadam
trap
provede to, co je v uvozovkách za ním - v tomto případě odstraní ten dočasný soubor, pokud odchytí některý ze signálů uvedených těmi čísly na konci. Seznam signálů tady:
$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX
Ještě dodám, že "signál 0" v tomto kontextu znamená normální ukončení skriptu.
Jinak v zájmu toho, kdo má ten skript používat, doufám, že to /tmp/null
je ve skutečnosti jen špatně opsané /dev/null
. A ten "plán B" taky vypadá dost nebezpečně.
mkdir /home/aaa 2>/dev/null cat /home/virt/doc/index.php 2>/dev/null ls /home/aaa 2>/dev/null atd.. ??
A ten "plán B" taky vypadá dost nebezpečně.to jako tohle? tempfile=/tmp/test$$ a co konkrétně?
Hm, díky za pomoc, ale to mi chcete říct, že bych měl za každý příkaz dávat 2>/dev/null
?
Ne, jen za takový, u kterého chcete zahodit případný chybový výstup.
to jako tohle? tempfile=/tmp/test$$
a co konkrétně?
Vysvětloval jsem to např. tady.
tempfile=$(mktemp /tmp/result.XXXXXXXXXXXXXXXXX) #vytvoří /tmp/result.4bYDvkblOsfKPTMDR
tempfile=/tmp/test$$ # vytvoří /tmp/test25723tudíž i při použití test$$ by byla velká náhoda aby se do toho někdo trefil, ne? Jinak tento zápis
tempfile=$(mktemp /tmp/result.XXXXXXXXXXXXXXXXX)je totéž jako tento?
tempfile=`mktemp /tmp/result.XXXXXXXXXXXXXXXXX`
tmp=$(mktemp /tmp/result.XXXXXXXXXXXXXXXXX) mkdir /home/aaa 2>>$tmp cat /home/virt/doc/index.php 2>>$tmp ls /home/aaa 2>>$tmptohle? Bude účel stejny?
function foo () { tmp=$(mktemp /tmp/result.XXXXXXXXXXXXXXXXX) mkdir /home/aaa cat /home/virt/doc/index.php ls /home/aaa } foo 2>>$tmpDíky
1. V bashi je to totéž, u některých starších shellů by $(...)
nemuselo fungovat. Na druhou stranu, varianta s $(...)
je IMHO trochu přehlednější, zejména pokud chcete příkazové substituce vnořovat.
2. Ta druhá varianta nebude vůbec fungovat, protože přesměrování provedete ještě předtím, než proměnné tmp
přiřadíte hodnotu. Musel byste řádek 2 přesunout někam na "8.5".
tmp=$(mktemp /tmp/result.XXXXXXXXXXXXXXXXX) function aaa () { #tady bude chyba } function bbb () { aaa } bbb 2> $tmp
Mně to funguje:
mike@unicorn:~> cat x #!/bin/bash tmp=out function aaa () { echo ahoj >&2 } function bbb () { aaa } bbb 2> $tmp mike@unicorn:~> rm -f out mike@unicorn:~> ./x mike@unicorn:~> cat out ahoj
bbb 2> $tmpkdyž ve funkci aaa () máte echo ahoj >&2, ne? Jinak teď se dívám že používate něco jiného, patrně jistě lepšího než já.. jaký v tom je rozdíl? Díky
echo ahoj >&2 echo ahoj 2>/$tmp
echo ahoj 2>/$tmpmi nedává smysl, protože
echo
neprodukuje chybový výstup. Ten se dá vyrobit právě příkazem echo ahoj >&2
Je v tom podstatný rozdíl. Měl by ses konečně podívat do manuálu....Ten se dá vyrobit právě příkazemTo jste mi to tedy vysvětlil..echo ahoj >&2
>&2
" přesměruje standardní výstup do standardního chybového výstupu. Asi jsi to v manuálu přehlédl. Je to jedno ze základních pravidel.
1 vstup 1 standardní výstup 1 standardní chybový výstupPokud by byla pravda to co píšete (bez urážky), že: >&2 přesměruje standardní výstup do standardního chybového výstupu a já bych tento výstup přesměroval jak píšete, tak bych přece nic na obrazovce neviděl, ne? Čili tohle je evidentně špatně (potom ale nevím proč to funguje
ERROR_LOG=$(mktemp /tmp/tmp.XXXXXXXXXXXXXXXXX) (eval ${TOKS[1]}) 2>> $ERROR_LOGa takto je to dobře ?
ERROR_LOG=$(mktemp /tmp/tmp.XXXXXXXXXXXXXXXXX) (eval ${TOKS[1]}) >&2 $ERROR_LOGDěkuji..
Standardní chybový výstup se standardně vypisuje na obrazovce.Souhlasím..
Je to proto, aby se chybová hlášení nevypisovala do výstupních dat.Taky souhlasím..
To je také v manuálu.Nevím, neumím americky...
Předpoklad byl chybný, zbytek tedy nemá smysl komentovat.Má, pořád nevím co je tedy to 2>. Taky je ale otázkou je, co je myšleno tím standardním výstupem. Chápu to tedy dobře? Když použiju echo "Nazdar dědku" předpokládám, že se to odešle na standardní výstup, čili obrazovka, ok? Když použiju ls /home, je to taky odesláno do standardního výstupu čili na obrazovku, pokud ale použiju ls /hhome a dostanu na obrazovku ls: cannot access /homed: No such file or directory tak se nejedná o standardní výstup ale o standardní chybový výstup, ok? No a když ten příkaz použiju takto ls /hhome >&2 /tmp/error.log tak neuvidím na obrazovce vůbec nic, taky ok? Díky
Nevím, neumím americky...
A to je snad náš problém, súdruh Haluška?
Pokud by byla pravda to co píšete (bez urážky), že: >&2 přesměruje standardní výstup do standardního chybového výstupu a já bych tento výstup přesměroval jak píšete, tak bych přece nic na obrazovce neviděl, ne?
Však se také v tom mém příkladu na terminál nic nevypsalo.
Začínám nějak tápat v tom, jestli jsem žádal o radu já vás nebo vy nás. Začínám mít pocit, že my jsme všichni blbci, kteří tomu nerozumíme a prosíme vám, abyste nám poradil… :-(
A teď poslední pokus vám vysvětlit, co se děje. Jestliže uvnitř funkce použijete
echo ahoj >&2
pak se standardní výstup (deskriptor 1) toho příkazu připojí k chybovému (deskriptor 2). Jetliže tu funkci pak zavoláte jako
funkce 2>/tmp/foo
pak se její chybový výstup (což je to slovo ahoj) přesměruje do příslušného souboru.
mkdir /home/foo 2>/tmp/loga tohle je dobře
mkdir /home/foo >2& /tmp/log
když ve funkci aaa () máte echo ahoj >&2, ne?
A v čem se to podle vás liší od kteréhokoli jiného příkazu, který něco napíše na chybový výstup? Zkuste si tam dát něco jiného a dopadne to stejně.
Tiskni
Sdílej: