Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).
OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.
Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.
R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.
IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.
Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.
Oznámeny byly nové Raspberry Pi Compute Module 4S. Vedle původní 1 GB varianty jsou nově k dispozici také varianty s 2 GB, 4 GB a 8 GB paměti. Compute Modules 4S mají na rozdíl od Compute Module 4 tvar a velikost Compute Module 3+ a předchozích. Lze tak provést snadný upgrade.
Po roce vývoje od vydání verze 1.24.0 byla vydána nová stabilní verze 1.26.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.26.
Byla vydána nová verze 6.2 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.14.
Byla vydána nová verze 30.0.0 frameworku pro vývoj multiplatformních desktopových aplikací pomocí JavaScriptu, HTML a CSS Electron (Wikipedie, GitHub). Chromium bylo aktualizováno na verzi 124.0.6367.49, V8 na verzi 12.4 a Node.js na verzi 20.11.1. Electron byl původně vyvíjen pro editor Atom pod názvem Atom Shell. Dnes je na Electronu postavena celá řada dalších aplikací.
"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!" # exit 1;; esacTo je ekvivalent uvedeného, ale víc jak 20x rychlejší. Nechce hledat přesné omezení na username abych to napsal přesněji.
[[ "$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: