Výzkumníci ze společnosti ESET objevili 11 zapomenutých UEFI shim zavaděčů, které byly podepsány společností Microsoft, a které umožňují útočníkům obejít ochranu UEFI Secure Boot na většině zařízení. Microsoft je zneplatnil (přidal jejich hash do databáze dbx) v rámci aktualizace Patch Tuesday dne 9. června 2026. Uživatelé Linuxu mohou databází aktualizovat pomocí LVFS. Ověřit zneplatnění zavaděčů lze pomocí skriptu uefi-dbx-audit. Jedná se o CVE-2026-8863 a CVE-2026-10797.
pico-usb-wifi je open source firmware pro Raspberry Pi Pico W, který jej promění v USB Wi-Fi adaptér. Po připojení k počítači se objeví jako zařízení USB CDC-NCM.
Americká společnost Google ze skupiny Alphabet bude muset podle nových požadavků Evropské unie umožnit společnosti OpenAI i dalším konkurentům v oblasti umělé inteligence (AI) a internetových vyhledávačů přístup ke svým službám. Ve svém rozhodnutí o tom včera informovala Evropská komise (EK). Opatření má zajistit dodržování pravidel, jejichž cílem je omezit v EU tržní sílu velkých technologických firem. Google s tím nesouhlasí.
… více »Nové verze webových prohlížečů Chrome a Firefox jsou vydávány každé 4 týdny. Aktuální verze Chrome je 150. Aktuální verze Firefoxu je 152. V březnu bylo oznámeno, že od září přejde Chrome na dvoutýdenní cyklus vydávání verzí. To by znamenalo, že Chrome v číslování verzí Firefox brzy přeskočí. Vývojáři Firefoxu proto také od září přecházejí na dvoutýdenní cyklus vydávání verzí. :-)
Microsoft Comic Chat (Wikipedie), tj. grafický IRC klient z devadesátek, který převáděl konverzace na IRC do podoby komiksových panelů, a který zpopularizoval font Comic Sans, je dnešním dnem open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Byla vydána (𝕏) nová verze 26.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 26.7 je Xenial Xenops. Přehled novinek v příspěvku na fóru.
Na Seznam nepovolených internetových her (Wikipedie) se k 13. 7. 2026 dostala predikční platforma Polymarket.
Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 167 (pdf) a Hello World 30 (pdf).
Byla vydána nová verze 3.22.0 grafického vývojového prostředí a platformy Gambas (Wikipedie) založené na interpretru programovacího jazyka Basic s rozšířením o objektově orientované programování. Přehled novinek v poznámkách k vydání. Zdrojové kódy jsou k dispozici na GitLabu.
FreeBSD odstranilo poslední GPL kód ze základního systému. Konkrétně dpv, libdpv, libfigpar a dialog. Instalátor před čtyřmi lety přešel z dialogu na bsddialog.
Umožňují předat vstup příkazu ze samotného skriptu. Ukážeme si to na skriptu here.sh.
#!/bin/bash
|
Ještě si skript spustíme.
# ./here.sh
$USER=root
|
Lze je použít k neúplnému zadání jména souboru.
POZOR neztotožňujte metaznaky shellu s regulárními výrazy, jsou to dvě různé věci. Metaznaky expanduje přímo shell. A proto když chceme nějakému programu předat regulární výraz, musíme ho uzavřít například do apostrofů.
* - libovolný řetězec (může být i nulové délky)? - libovolný jeden znak~ - domovský adresář ($HOME)~UJ - domovský adresář uživatele UJ~+ - aktuální pracovní adresář ($PWD)~- - předchozí pracovní adresář ($OLDPWD)[abc...] - jakýkoliv znak uvedený v [], lze použít - k
zápisu intervalu znaků např a-z, 0-9[!abc...] - opak předchozího (tj. jakýkoliv znak mimo
uvedených znaků v [])První příkaz smaže zálohy souborů (soubory končící na ~).
Znak ~ nebude v tomto případě expandován.
$ rm *~
|
Jsou (mými slovy, přesná definice je "trochu" složitější
)
vzory, s jejichž pomocí lze definovat společné rysy několika různých
řádků a tím pádem je reprezentovat jako jeden regulární výraz.
Níže uvedené speciální znaky jsou použitelné např. v grep,
egrep, sed, ed, ex,
awk.
. - jakýkoliv znak (mimo znaku nového řádku)* - libovolný počet (i nulový) opakování předchozího
znaku (lze použít i regulární výraz)^ - následující výraz musí odpovídat začátku řádku$ - předchozí výraz musí odpovídat konci řádku\ - vypíná speciální význam následujícího znaku[] - jakýkoliv znak uvedený v hranatých závorkách,
speciální znaky zde mají normální význam, mimo
- tu lze použít pro zápis intervalů
(a-z atd.) a znak ^ uvedený jako
první způsobí negaci (tj. jakýkoliv znak
neuvedený v ...)Použijeme programy cat, grep a všechno
si poctivě vyzkoušíme.
$ cat << END > ./retezce.txt > abclinuxu > alfa > aaa > abcabcabc > znak $ > a1a > aAa > END $ cat ./retezce.txt | grep '.*' abclinuxu alfa aaa abcabcabc znak $ a1a aAa $ cat ./retezce.txt | grep '.* \$' znak $ $ cat ./retezce.txt | grep '^a[a-z]*a$' alfa aaa $ cat ./retezce.txt | grep '^a[a-z0-9]*a$' alfa aaa a1a |
Jsou programy, které ze vstupu podle zadaného vzoru odfiltrují
jen námi požadovaná data a pošlou je na výstup. Jsou jimi např.
grep, egrep (grep -E) a
fgrep (grep -F), jsou to vlastně stejné
programy. Pro nás je důležité, že grep používá pro
zápis regulárních výrazů starší notaci a egrep naopak
novější notaci. Níže uvedené speciální znaky patří do novější notace
a chceme-li je použít ve filtru grep, musíme před ně
zapsat znak \.
+ - jeden a více výskytů předchozího výrazu.? - jeden nebo žádný výskyt předchozího výrazu.| - předcházející nebo následující výraz.() - text odpovídající výrazu mezi závorkami se
uloží do paměti a lze ho použít pomocí
\1 až \9, čísluje se
od vnějších závorek směrem dovnitř
(např. ((abc)linuxu) \1
= "abclinuxu") a \2 = "abc". Nebo
lze použít závorky k definování priority
vyhodnocení.{n,m} - interval opakování předchozího výrazu,
{n} - opakuje se n-krát, {n,} n-krát a více,
{n,m} n-krát až m-krátPro lepší pochopení uvedu opět několik příkladů.
$ cat ./retezce.txt | grep '^a\+$'
aaa
$ cat ./retezce.txt | egrep '^a+$'
aaa
$ cat ./retezce.txt | egrep '^abcl?'
abclinuxu
abcabcabc
$ cat ./retezce.txt | egrep '^c|z'
znak $
$ cat ./retezce.txt | egrep '(abc)+'
abclinuxu
abcabcabc
$ cat ./retezce.txt | egrep '^(.*)\1\1$'
aaa
abcabcabc
$ cat ./retezce.txt | egrep '^a{3}$'
aaa
$ cat ./retezce.txt | egrep '^a{2,}$'
aaa
$ cat ./retezce.txt | egrep '^a{1,3}$'
aaa
|
Z názvu je zřejmé, že slouží k proudové editaci dat. O načítání vstupu
se starají sami. Mají k dispozici sadu příkazů, pomocí které data upravují
(obvykle pracují s jedním řádkem), např. sed a nebo na
složitější věci awk.
Syntaxe příkazu:
Začátek,Konec!InstrukceArgumenty
Začátek - číslo řádku ($ značí poslední řádek) nebo
/regulární výraz/Konec - číslo řádku nebo /regulární výraz/! - neguje předchozí bodyInstrukce - mají jedno písmenoArgumenty - k některým instrukcímNení-li uveden Začátek a Konec, aplikuje
se instrukce na každý vstupní řádek. Je-li uveden pouze
Začátek, aplikuje se instrukce pouze na odpovídající řádek
(či řádky) a je-li uvedeno obojí, tak od řádku odpovídajícímu
Začátek se budou aplikovat instrukce a od řádku
odpovídajícímu Konec se aplikovat přestanou.
Níže jsou uvedeny některé Instrukce a jejich
Argumenty.
s/vzorek/náhrada/příznaky - nahradí první nalezený
vzorek náhradou. Příznaky:
n - nahradí n-tý výskyt vzorku (1 až 512),
g - nahradí všechny výskyty vzorku.w soubor - do souboru uloží vstupní řádek (řádky)r soubor - soubor načte do vstupup - vypíše vstupní řádek na výstupn - přesune se na další vstupní řádekd - vstupní řádek je smazány/původní znaky/nové znaky/ - přeloží znaky
(man tr): - označí řádek skriptu pro odskok
Instrukcí t nebo bt - byla-li provedena substituce, skočí na následující
značku :, není-li uvedena, skočí
na konec skriptu{} - zajistí aplikaci více příkazů na jednu adresu
$ cat ./retezce.txt | sed '2,$s/a/?/g'
abclinuxu
?lf?
???
?bc?bc?bc
zn?k $
?1?
?A?
$ cat ./retezce.txt | sed -n '2p'
alfa
$ cat ./retezce.txt | sed -n '1{
> n
> p
> }'
alfa
$ cat ./retezce.txt | sed '2p
> d'
alfa
$ cat ./retezce.txt | sed '4y/a/?/
> 4!d'
?bc?bc?bc
|
Na závěr uvedu ještě jeden příklad ve formě skriptu
sed.sh.
#!/bin/bash spojka="je bydliště" cat <<EOF | sed \ "s/^\(.\+j\) \(.\+\)o:\(.\+\)\$/\3 $s \1e \2a/ t s/^\(.\+j\) \(.\+\):\(.\+\)\$/\3 $s \1e \2a/ t s/^\(.\+\) \(.\+\)o:\(.\+\)\$/\3 $s \1a \2a/ t s/^\(.\+\) \(.\+\):\(.\+\)\$/\3 $s \1a \2a/" Petr Novák:Praha Viktor Igo:Brno Blažej Vodník:Plzeň Jan Hugo:Hradec Králové Metoděj Sporák:Ostrava EOF exit 0 |
Výstup skriptu vypadá následovně.
$ ./sed.sh Praha je bydliště Petra Nováka Brno je bydliště Viktora Iga Plzeň je bydliště Blažeje Vodníka Hradec Králové je bydliště Jana Huga Ostrava je bydliště Metoděje Sporáka |
V případě, že bychom chtěli zajistit správné skloňování úplně pro všechny jména a přijmení, určitě by výše uvedené řešení nebylo to nejkratší a nejvhodnější, berte ho pouze jako ukázku.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Diskuse byla administrátory uzamčena
$ sed -n '1p' < ./soubor
První řádek
$ sed -n '$p' < ./soubor
Poslední řádek
$ sed -n '1!p' < ./soubor
Druhý řádek
Třetí řádek
Poslední řádek
Chce ještě někdo zodpovědět nějaký konkrétní příklad?
#!/bin/bash
mv $1 $1.old
sed 's/ahoj/nazdar/' $1.old > $1
#rm $1.old
exit 0
$ find -type f | xargs -i ../skript.sh {}
$ cat soubor nazdarahojnazdarahojnazdarahojnazdar $ sed 's/ahoj/\n/g' < ./soubor nazdar nazdar nazdar nazdar $ sed 's/\(ahoj\)/\n\1\n/g' < ./soubor nazdar ahoj nazdar ahoj nazdar ahoj nazdar
$ cat soubor Řádek 1 Error 2 Řádek 3 Error 4 $ egrep -v '^Error.+$' < ./soubor Řádek 1 Řádek 3
Můžeš např. všechno kromě čísel a mezer smazat.
$ echo "1234 ahoj 4321" | sed -n 's/[^0-9 ]//gp' 1234 4321
Ale podle mě bude lepší zkontrolovat všechny argumenty a v případě, že uživatel v některém z nich zadá cokoliv jiného než číslo, zakřičí se na něj a program se ukončí.
for argument in $@; do
if [ $(echo $argument | grep '[^0-9]' | wc -l) -ne 0 ]; then
echo "Argument '$argument' není číslo!!!"
exit 1
fi
done
Rádi Ti pomůžeme, ale specifikuj prosím Tvůj problém jednoznačně, nejlepší bude když uvedeš konkrétní příklad, co máš a co z toho chceš dostat.
$ cat pocet_tagu.sh
#!/bin/bash
if [ $# -ne 1 ]; then
echo "Usage: $0 file.xml"
exit
fi
echo -e "\n$1:"
tags_all=$(cat $1 |sed -n 's/[^>]*\(<[^ >]\+[ >]\)/\1\n/gp' |grep "^<[^\/]" |sort)
tags_uniq=$(echo $tags_all |sed 'y/ /\n/' |uniq)
for tag in $tags_uniq; do
count=$(echo $tags_all |sed 'y/ /\n/' |grep $tag |wc -l)
printf " %-20s %10i\n" $tag $count
done
$ find -type f -regex ".*\.xml" |xargs -i ./pocet_tagu.sh {}
./soubor02.xml:
<accelerator 2
<!DOCTYPE 1
<glade-interface> 1
<child> 236
<child 250
<packing> 206
<placeholder/> 2
<property 2521
<signal 36
<widget 258
<?xml 1
./soubor01.xml:
<kocka> 2
<pes> 2
<xml> 1
<zvire> 2
IFS="<";
set -- $(cat "$1");
for tag in "$@" ; do
IFS=" >";
set -- $tag;
echo "$1";
done | sort | uniq -c
IFS="<";
set -- $(cat "$1");
for tag in "$@" ; do echo "${tag%%[ >]*}"; done | sort | uniq -c
$ echo ~ /home/jozef $ echo a~ a~ $ echo a\ ~ a ~
$ ./configure --prefix=~/myprogs configure: error: expected an absolute directory name for --prefix: ~/myprogs $ ./configure --prefix=$HOME/myprogs checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes ... atd. (takhle mi to už funguje) ...P.S. Takhle kompiluju software pokud nechci spouštět
make install jako root. Prostě jsem si do .bash_profile přidal příkaz který přidal ~/myprogs/bin do PATH a můžu takhle zkompilovaný a nainstalovaný programy normálně spouštět jako kdyby byli kompilované instalované "normálním způsobem". Zatím mi všechny takhle kompilované a instalované programy fungovali bez problémů (mezi nimi jsou i takové fajnové vychytávky jako třeba mplayer). Dělám to tak, protože jsem poněkud paranoidní co se týče poskytování ROOT oprávnění neznámým skriptům a programům (čti: normální sysadmin).