Jak si zobrazit pomocí Chrome a na Chromiu založených webových prohlížečích stránky s neplatným certifikátem? Stačí napsat thisisunsafe.
V repozitáři AUR (Arch User Repository) linuxové distribuce Arch Linux byly nalezeny a odstraněny tři balíčky s malwarem. Jedná se o librewolf-fix-bin, firefox-patch-bin a zen-browser-patched-bin.
Dle plánu by Debian 13 s kódovým názvem Trixie měl vyjít v sobotu 9. srpna.
Vývoj linuxové distribuce Clear Linux (Wikipedie) vyvíjené společností Intel a optimalizováné pro jejich procesory byl oficiálně ukončen.
Byl publikován aktuální přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie).
V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 12.0 (Mastodon). Forgejo je fork Gitei.
Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 155 (pdf) a Hello World 27 (pdf).
Hyprland, tj. kompozitor pro Wayland zaměřený na dláždění okny a zároveň grafické efekty, byl vydán ve verzi 0.50.0. Podrobný přehled novinek na GitHubu.
Patrick Volkerding oznámil před dvaatřiceti lety vydání Slackware Linuxu 1.00. Slackware Linux byl tenkrát k dispozici na 3,5 palcových disketách. Základní systém byl na 13 disketách. Kdo chtěl grafiku, potřeboval dalších 11 disket. Slackware Linux 1.00 byl postaven na Linuxu .99pl11 Alpha, libc 4.4.1, g++ 2.4.5 a XFree86 1.3.
Ministerstvo pro místní rozvoj (MMR) jako první orgán státní správy v Česku spustilo takzvaný „bug bounty“ program pro odhalování bezpečnostních rizik a zranitelných míst ve svých informačních systémech. Za nalezení kritické zranitelnosti nabízí veřejnosti odměnu 1000 eur, v případě vysoké závažnosti je to 500 eur. Program se inspiruje přístupy běžnými v komerčním sektoru nebo ve veřejné sféře v zahraničí.
function clean() { if test -f "Makefile" then rm -f "Makefile" fi if test -f "install.sh" rm -f "install.sh" fi #tu mi to hlásí chybu unexpected token fi if test -f "$DEST_DIR/toolkit-config" rm -f "$DEST_DIR/toolkit-config" fi }
clean() { if [ -f "Makefile" ]; then rm -f "Makefile" fi }Uvedeni slova "function" me nefunguje v cistem sh. Dal bych proto prednost neuvadeni jej. V praxi se lze ovsem setkat i s necim takovymhle:
clean() { MAKEFILE="Makefile" [ -f Makefile ] && rm -f Makefile }To uz ovsem silne pripomina zkratky jak je zavadi C a perl a ja osobne se jim snazim kvuli prehlednosti vyhybat.
clean() { MAKEFILE="Makefile" [ -f "$MAKEFILE" ] && rm -f $MAKEFILE }
test
, tak jeho alias [
jsou built-in příkazy bash
e. A na rozdíl od vámi propagovaného [[...]]
, což je čirá bashovina, fungují i v jiných bourne-like shellech, pouze trochu pomaleji.
$ which [ /usr/bin/[Na interny prikaz toho vykonava sakra vela:
$ strace [ execve("/usr/bin/[", ["["], [/* 78 vars */]) = 0 uname({sys="Linux", node="semo", ...}) = 0 brk(0) = 0x804f000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=89324, ...}) = 0 mmap2(NULL, 89324, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f0b000 close(3) = 0 open("/lib/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0200\213"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1201624, ...}) = 0 mmap2(0x4989e000, 1141980, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x4989e000 madvise(0x4989e000, 1141980, MADV_SEQUENTIAL|0x1) = 0 mmap2(0x499af000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x110) = 0x499af000 mmap2(0x499b3000, 7388, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x499b3000 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f0a000 mprotect(0x499af000, 4096, PROT_READ) = 0 mprotect(0x4989a000, 4096, PROT_READ) = 0 set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f0aa90, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 munmap(0xb7f0b000, 89324) = 0 open("/dev/urandom", O_RDONLY) = 3 read(3, "b\\\300\"", 4) = 4 close(3) = 0 open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) brk(0) = 0x804f000 brk(0x8070000) = 0x8070000 open("/usr/share/locale/locale.alias", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=2586, ...}) = 0 mmap2(NULL, 131072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7eea000 read(3, "# Locale name alias data base.\n#"..., 131072) = 2586 read(3, "", 131072) = 0 close(3) = 0 munmap(0xb7eea000, 131072) = 0 open("/usr/lib/locale/en_US/LC_IDENTIFICATION", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=378, ...}) = 0 mmap2(NULL, 378, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f20000 close(3) = 0 open("/usr/lib/locale/en_US/LC_MEASUREMENT", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=28, ...}) = 0 mmap2(NULL, 28, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f1f000 close(3) = 0 open("/usr/lib/locale/en_US/LC_TELEPHONE", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=64, ...}) = 0 mmap2(NULL, 64, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f1e000 close(3) = 0 open("/usr/lib/locale/en_US/LC_ADDRESS", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=160, ...}) = 0 mmap2(NULL, 160, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f1d000 close(3) = 0 open("/usr/lib/locale/en_US/LC_NAME", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=82, ...}) = 0 mmap2(NULL, 82, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f1c000 close(3) = 0 open("/usr/lib/locale/sk_SK/LC_PAPER", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=39, ...}) = 0 mmap2(NULL, 39, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f1b000 close(3) = 0 open("/usr/lib/locale/en_US/LC_MESSAGES", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFDIR|0755, st_size=80, ...}) = 0 close(3) = 0 open("/usr/lib/locale/en_US/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=57, ...}) = 0 mmap2(NULL, 57, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f1a000 close(3) = 0 open("/usr/lib/locale/en_US/LC_MONETARY", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=291, ...}) = 0 mmap2(NULL, 291, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f19000 close(3) = 0 open("/usr/lib/locale/en_US/LC_COLLATE", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=21499, ...}) = 0 mmap2(NULL, 21499, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f13000 close(3) = 0 open("/usr/lib/locale/en_US/LC_TIME", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=2456, ...}) = 0 mmap2(NULL, 2456, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f12000 close(3) = 0 open("/usr/lib/locale/en_US/LC_NUMERIC", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=59, ...}) = 0 mmap2(NULL, 59, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f11000 close(3) = 0 open("/usr/lib/locale/sk_SK/LC_CTYPE", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=178464, ...}) = 0 mmap2(NULL, 178464, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7ede000 close(3) = 0 open("/usr/share/locale/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) write(2, "[: ", 3[: ) = 3 write(2, "missing `]\'\n", 12missing `]' ) = 12 close(1) = 0 exit_group(2) = ? Process 387 detached
To ovšem vůbec neznamená, že to není interní příkaz. Za prvé:
mike@lion:~> echo -n > ~/bin/history mike@lion:~> chmod +x ~/bin/history mike@lion:~> which history /home/mike/bin/history mike@lion:~> history | wc -l 1000
Znamená to snad podle vás, že history
není builtin příkaz shellu? Za druhé: pokud spustíte 'strace [
', je jasné, že se spustí externí verze, pokud ale spustíte jen '[
', spustí se builtin. A konečně za třetí: vytvořte si skript jménem showpid
s tímto obsahem:
#!/bin/bash echo $$a zkuste spustit:
./showpid ; ./showpid ; test -e blabla ; ./showpid ; /usr/bin/test -e blabla ; ./showpid
Pokud se vám do toho něco nepřiplete, vypíše vám to tři po sobě jdoucí čísla a čtvrté, které je o dva větší než třetí. Přesně stejně to dopadne i v případě, že místo test
použijete levou hranatou závorku. Dokážete to vysvětlit za předpokladu, že test
není interní příkaz bashe?
test
interní příkaz bashe, proč je uváděn jako builtin jak v manuálové stránce k bashi samotnému, tak v manuálové stránce jeho builtin příkazů?
chmod 000 /usr/bin/test test a = a && echo "a=a" test a = b && echo "a=b" chmod 755 /usr/bin/test
$ time for ((i=0; i<10000; i++)); do [ a == a ]; done real 0m0.183s user 0m0.168s sys 0m0.016s
$ time for ((i=0; i<10000; i++)); do test a == a; done real 0m0.178s user 0m0.172s sys 0m0.004s
$ time for ((i=0; i<10000; i++)); do [[ a == a ]]; done real 0m0.123s user 0m0.116s sys 0m0.004sPre porovnanie skutocne externy prikaz (je teda jasne, ze nic z vyssieho nebude externe):
$ time for ((i=0; i<10000; i++)); do /usr/bin/test a = a ; done real 0m30.510s user 0m7.212s sys 0m23.281sZaujimave uz len ostava, preco ku rovnakym prikazom (aj ked pod inym menom) sa sprava rozne. Dokonca aj [ sa lisi od test.
Tiskni
Sdílej: