Od soboty do úterý probíhá v Hamburku konference 39C3 (Chaos Communication Congress) věnovaná také počítačové bezpečnosti nebo hardwaru. Program (jiná verze) slibuje řadu zajímavých přednášek. Streamy a záznamy budou k dispozici na media.ccc.de.
Byl představen nový Xserver Phoenix, kompletně od nuly vyvíjený v programovacím jazyce Zig. Projekt Phoenix si klade za cíl být moderní alternativou k X.Org serveru.
XLibre Xserver byl 21. prosince vydán ve verzi 25.1.0, 'winter solstice release'. Od založení tohoto forku X.Org serveru se jedná o vůbec první novou minor verzi (inkrementovalo se to druhé číslo v číselném kódu verze).
Wayback byl vydán ve verzi 0.3. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.
Byla vydána verze 4.0.0 programovacího jazyka Ruby (Wikipedie). S Ruby Box a ZJIT. Ruby lze vyzkoušet na webové stránce TryRuby. U příležitosti 30. narozenin, první veřejná verze Ruby 0.95 byla oznámena 21. prosince 1995, proběhl redesign webových stránek.
Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.
Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.
Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.
Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.
Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.
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