Společnost Fairphone stojící za stejnojmennými mobilními telefony představila (pdf) bezdrátová špuntová sluchátka Fairbuds 2. Opravitelná, s vyměnitelnými bateriemi a tříletou zárukou. Cena 119 eur.
O víkendu 17. a 18. října lze na brněnském výstavišti navštívit s jednou vstupenkou dvě akce: Maker Faire Brno, festival inovací, kreativity a kutilství, a GameDev Connect, akci určenou pro všechny současné a hlavně budoucí herní vývojáře.
Canonical vydal (email) Ubuntu 26.10 Stonking Stingray. Přehled novinek v poznámkách k vydání. Jedná se o průběžné vydání s podporou 9 měsíců, tj. do července 2027.
České Radiokomunikace (CRA) ve čtvrtek odstřelily rozhlasový vysílač Liblice B, dosud nejvyšší stavbu v Česku. O demolici dvou 355 metrů vysokých stožárů rozhodly z důvodu jejich nevyužívání, už v úterý přitom zhasly a demontovaly jejich osvětlení.
Microsoft Defender nově podporuje linuxové desktopy.
Oficiální Epic Games Launcher je v nové preview verzi poprvé dostupný i pro Linux (FAQ). Pracuje se na novém Easy Anti-Cheatu pro Linux (EAC Linux v2) a podpoře hry Fortnite na Linuxu.
Desktopové prostředí KDE Plasma bylo vydáno ve verzi 6.8. Novinky zahrnují lepší podporu vzdálené plochy, sdílení a nahrávání obrazovky a řadu drobností napříč uživatelským rozhraním (úplný seznam změn, shrnutí ve wiki).
Apple představil 7palcový displej Apple HomeView s podporou Apple Intelligence a Siri AI pro ovládání chytré domácnosti, novou řadu vybavení chytré domácnosti Apple Home Collection, další generaci HomePodu mini a novou Apple TV 4K. Apple HomeView není v Evropské unii v prodeji, jelikož umělá inteligence Siri v rámci systému iOS v EU momentálně není k dispozici. Apple spolupracuje s EU a snaží se najít cestu, jak situaci vyřešit.
KDE slaví 30 let. Přesně před 30 lety, 14. října 1996, poslal Matthias Ettrich do diskusní skupiny comp.os.linux.misc zprávu, která započala historii projektu KDE. Důležité milníky jsou zobrazeny na časové ose.
Byl vydán Mozilla Firefox 158.0. Stejně jako Chrome 155 s podporou JPEG XL (test). Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 158 bude brzy k dispozici také na Flathubu a Snapcraftu.
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