Programovací jazyk JavaScript (Wikipedie) dnes slaví 30 let od svého oficiálního představení 4. prosince 1995.
Byly zveřejněny informace o kritické zranitelnosti CVE-2025-55182 s CVSS 10.0 v React Server Components. Zranitelnost je opravena v Reactu 19.0.1, 19.1.2 a 19.2.1.
Bylo rozhodnuto, že nejnovější Linux 6.18 je jádrem s prodlouženou upstream podporou (LTS). Ta je aktuálně plánována do prosince 2027. LTS jader je aktuálně šest: 5.10, 5.15, 6.1, 6.6, 6.12 a 6.18.
Byla vydána nová stabilní verze 3.23.0, tj. první z nové řady 3.23, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie) postavené na standardní knihovně jazyka C musl libc a BusyBoxu. Přehled novinek v poznámkách k vydání.
Byla vydána verze 6.0 webového aplikačního frameworku napsaného v Pythonu Django (Wikipedie). Přehled novinek v poznámkách k vydání.
Po více než 7 měsících vývoje od vydání verze 6.8 byla vydána nová verze 6.9 svobodného open source redakčního systému WordPress. Kódové jméno Gene bylo vybráno na počest amerického jazzového klavíristy Gene Harrise (Ray Brown Trio - Summertime).
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za listopad (YouTube).
Google Chrome 143 byl prohlášen za stabilní. Nejnovější stabilní verze 143.0.7499.40 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 13 bezpečnostních chyb.
Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu dosáhl 3,2 %. Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 26,42 %. Procesor AMD používá 66,72 % hráčů na Linuxu.
Canonical oznámil (YouTube), že nově nabízí svou podporu Ubuntu Pro také pro instance Ubuntu na WSL (Windows Subsystem for Linux).
Signály zaslané skriptu můžeme odchytávat pomocí příkazu
trap.
trap příkaz signál - jestliže jako příkaz
uvedeme znak "-", nastaví se pro signál původní
akce a když '', neprovede se nic (trap -l
vypíše signály, které lze odchytnout).Vyzkoušejte skript trap.sh.
#!/bin/bash
konec() {
echo -n "Uklízím"
i=0
while [ "$i" -le 10 ]; do
i=$((i + 1))
echo -n "."
sleep 0,1
done
echo
echo "Konec"
}
trap '' INT
echo "Ctrl+C neudělá nic"
sleep 3
trap - INT
echo "Ctrl+C ukončí skript"
sleep 3
trap 'konec; exit 0' INT
echo "Ctrl+C spustí funkci konec a ukončí skript"
sleep 3
konec
echo "Skript proběhl až do konce"
exit 0
|
Následující módy shellu nám mohou usnadnit ladění.
verbose - před vykonáním příkaz vypíšextrace - jako předchozí, ale napřed provede expanzi;
$PS4 na začátku řádku určuje
stupeň expanzenounset - je-li použita nedefinovaná proměnná, ukončí
běh skriptu a vypíše chybovou hlášku
#!/bin/bash set -o verbose echo $PWD set -o xtrace echo $PWD echo $(pwd) set +o verbose set +o xtrace set +o nounset echo $nedefinovana_promena set -o nounset echo $nedefinovana_promena echo "Tento řádek se již nevypíše" exit 0 |
Nyní si skript ladeni.sh spustíme a podíváme se na
jeho výpis.
$ ./ladeni.sh echo $PWD /root/fuky/clanky/bash set -o xtrace echo $PWD + echo /root/fuky/clanky/bash /root/fuky/clanky/bash echo $(pwd) pwd ++ pwd + echo /root/fuky/clanky/bash /root/fuky/clanky/bash set +o verbose + set +o verbose + set +o xtrace ./ladeni.sh: nedefinovana_promena: unbound variable |
Máme libovolnou adresářovou strukturu a v ní jsou uložené soubory *.wav, *.ogg a *.mp3.
oggVytvoříme si skript oggwavmp3.sh.
#!/bin/bash
case "$1" in
*.wav )
#cesta="${1%/*}/"
cesta=$(echo $1 | sed
's/^\(.\+\/\)\([^/]\+wav\)$/\1/')
if [ -d "${cesta}ogg" ]; then
:
else
mkdir "${cesta}ogg"
fi
#soubor="${1%.*}.ogg"
#soubor="${soubor##*/}"
soubor=$(echo $1 | sed
's/^\(.\+\/\)\([^/]\+\)\.wav$/\2.ogg/')
oggenc "$1" -Q -b 192 -o "${cesta}ogg/$soubor"
;;
*.ogg )
#soubor="${1%.*}.wav"
soubor=$(echo $1 |
sed 's/\(.\+\)\.\(ogg\)$/\1.wav/')
if [ "$soubor" ]; then
sox "$1" "$soubor"
rm "$1"
fi
;;
*.mp3 )
#soubor="${1%.*}.wav"
soubor=$(echo $1 | sed
's/\(.\+\)\.\(mp3\)$/\1.wav/')
if [ "$soubor" ]; then
mpg123 "$1" -q -w "$soubor"
rm "$1"
fi
;;
* )
;;
esac
exit 0
|
Do souboru ~/.bashrc si přidáme alias a po dalším
spuštění shellu můžeme začít využívat náš nový příkaz.
alias oggwavmp3='find -type f | xargs -i ~/bash/oggwavmp3.sh {}'
|
Na závěr si zkuste udělat hru Oběšenec. Nastavení hry se provádí pomocí konfiguračního souboru. Lze vybrat, zda se bude rozlišovat diakritika či velikost písmen. Slova či věty jsou uloženy v souborech podle složitosti a jedna z možností nastavení je právě výběr jen některých souborů se slovy (větami). A nakonec je zde i možnost časového omezení při zadávání znaku (příkazu) - v případě, že čas vyprší, bude hráč ihned oběšen. Samozřejmě, že vám dám k dispozici i mé řešení obesenec-1.1.tgz, ale podívejte se na něj až problém sami vyřešíte nebo budete-li opravdu v úzkých.
A to je z našeho seriálu opravdu vše
. Máte poslední možnost zeptat
se na věci, které se do našeho seriálu nevešly, nebo se na ně zapomnělo.
Děkuji všem, kteří seriál průběžně komentují.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
basename a dirname. Jo a jen tak mimochodem, nejsou to regulerni, ale regulárni vyrazy.
)
> Vubec se nechytaji, kdyz nekdo bude chtit prevedet soubory
bez zapisu cesty - v aktualnim adresari (tj. napr. prikazem
"oggwavmp3.sh *.wav") nebo (i kdyz je to prasarna, ale i s
tim by se melo pocitat) soubory v korenovem adresari (tj.
napr. prikazem "oggwavmp3.sh /1.wav")
POZOR asi jste si nevšiml aliasu, ten skript je dělaný pro
něj:
alias oggwavmp3='find -type f | xargs -i ~/bash/oggwavmp3.sh {}'
Vlezu si do adresáře obsahující soubory, které chci převést a
zadám pouze
$ oggwavmp3
, vytvoření argumentů nechám na příkazu find
)
> basename, dirname
Díky za připomínku, existuje mnoho řešení a já zrovna zvolil to
složitější, člověk se stále učí a nikdo neví vševědoucí
sleep 0,1 nemelo by tam by sleep 1?
Takhle to chybuje:
Uklízím.sleep: invalid time interval `0,1' Více informací získáte příkazem `sleep --help'. .sleep: invalid time interval `0,1' Více informací získáte příkazem `sleep --help'. .sleep: invalid time interval `0,1'atd.
Díky za upozornění, nějak se mi tam vloudil překlep, místo čárky tam má být tečka sleep 0.1