Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek i s náhledy aplikací v Týden v GNOME a Týden v KDE.
Organizace Apache Software Foundation (ASF) vydala verzi 20 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
Desktopové prostředí Cinnamon, vyvíjené primárně pro distribuci Linux Mint, dospělo do verze 6.0. Seznam změn obsahuje především menší opravy a v říjnovém přehledu novinek v Mintu avizovanou experimentální podporu Waylandu.
OpenZFS (Wikipedie), tj. implementace souborového systému ZFS pro Linux a FreeBSD, byl vydán ve verzích 2.2.2 a 2.1.14. Přináší důležitou opravu chyby vedoucí k možnému poškození dat.
V ownCloudu byly nalezeny tři kritické zranitelnosti: CVE-2023-49103, CVE-2023-49104 a CVE-2023-49105 s CVSS 10.0, 8.7 a 9.8. Zranitelnost CVE-2023-49103 je právě využívána útočníky. Nextcloudu se zranitelnosti netýkají.
I letos vychází řada ajťáckých adventních kalendářů. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2023. Pro programátory v Perlu je určen Perl Advent Calendar 2023. Zájemci o UX mohou sledovat Lean UXmas 2023. Pro zájemce o kybernetickou bezpečnost je určen Advent of Cyber 2023…
Byla vydána verze 2.12 svobodného video editoru Flowblade (GitHub, Wikipedie). Přehled novinek v poznámkách k vydání. Videoukázky funkcí Flowblade na Vimeu. Instalovat lze také z Flathubu.
Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 23.11 Topi. Přehled novinek v Changelogu.
Po 4 měsících vývoje byla vydána nová verze 4.2 multiplatformního open source herního enginu Godot (Wikipedie, GitHub). Přehled novinek i s náhledy v příspěvku na blogu a na YouTube.
Byla vydána nová stabilní verze 23.11 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Tapir. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.
"cat /etc/passwd | grep ^[^:]*:[^:]*:[^:]*|cut -f 1 -d ":""je nesmysl, to se expanduje na ten řetězec v uvozovkách, měls asi na mysli $(...) nebo `...`, i tak by to moc nefungovalo. No nic, nejlepší co jsem vymyslel je
if cut -d: -f1 | grep -F -x -q "$1"; then echo "OK" else echo "neexistuje" finajdi si v man grep co ty optiony znamenají (btw asi nebudou přenositelné) Aby to bylo skutečně korektní, tak by to chtělo C prográmek, co zavolá
getpwnam(argv[1])
.
#!/usr/bin/env python import pwd user = 'all' if (cmp(user,'all')): try: print pwd.getpwnam(user) except KeyError: print "Tento uzivatel neexistuje" else: print "Tohle se tyka vsech uzivatelu"Odteďka chci mít všude login "all"
if egrep -q "^${1}:" /etc/passwd || [ "x$1" = xall ]; then echo OK else echo chyba fi
x=`echo "$1" | LC_CTYPE=C tr -cd '[a-zA-Z0-9_]'` if [ "x$1" != "x$x" ]; echo "Nech toho, darebáku, sic ti hnáty zpřerážím!" # :-) exit 1 fi
Na druhou stranu, kdyby si s tím člověk trochu pohrál, mohl by v tom být i určitý záměr: mohl by se zadávat regulární výraz a hledaly by se procesy kteréhokoli uživatele, který mu vyhovuje (nebo co to měl ten skript dělat)… :-)
test "x$param" = "xvalue" ^ ^? Používá to i Autoconf, takže asi existoval systém, kde nefungoval
test
s prázdným parametrem, ale netuším jaký (PDP-11 ve škole nemáme test
. Nějak se mi ale nedaří vyrobit nějaký dostatečně úderný příklad ('test -e = -f
' i 'test -e = -e
' mi kupodivu fungují správně s interním i externím test
em).
$ uname -srv IRIX64 6.5 04091957 $ /usr/bin/test -n = blabla; echo $? 0Takže smysl to asi má pořád.
To se nám to krásně zjednodušilo. Až na ten fork, fork, exec a přitom je to úplně zbytečné.x=`echo "$1" | LC_CTYPE=C tr -cd '[a-zA-Z0-9_]'` if [ "x$1" != "x$x" ]; echo "Nech toho, darebáku, sic ti hnáty zpřerážím!" # :-) exit 1 fi
case "$1" in *[^a-zA-Z0-9_]*) echo "Nech toho, darebáku, sic ti hnáty zpřerážím!" #To je ekvivalent uvedeného, ale víc jak 20x rychlejší. Nechce hledat přesné omezení na username abych to napsal přesněji.exit 1;; esac
[[ "$1" == *[^a-zA-Z0-9_]* ]] && { echo "Nech toho, darebáku, sic ti hnáty zpřerážím!" #exit 1 }
if ! id "$1" >&/dev/null && [ "x$1" != xall ] then echo "Zadali jste uzivatele, ktery neexistuje, tudiz nespustil zadne procesy" exit 1 fiP.S.: Ano, opravdu tam má být
&&
a ne ||
protože chyba nastane, když uživatel není a zároveň není zadáno all.
$ finger chroustal; echo $? finger: chroustal: no such user. 0
~$1
, ale když jsem zjistil, že pořadí expanzí je opačné, než bych potřeboval, opustil jsem tuto cestu a vrhnul se na parsování /etc/passwd
. Na druhou stranu, v praxi bych to asi stejně radši napsal v céčku…
Tiskni
Sdílej: