DuckDuckGo AI Chat umožňuje "pokecat si" s GPT-3.5 Turbo od OpenAI nebo Claude 1.2 Instant od Anthropic. Bez vytváření účtu. Všechny chaty jsou soukromé. DuckDuckGo je neukládá ani nepoužívá k trénování modelů umělé inteligence.
VASA-1, výzkumný projekt Microsoftu. Na vstupu stačí jediná fotka a zvukový záznam. Na výstupu je dokonalá mluvící nebo zpívající hlava. Prý si technologii nechá jenom pro sebe. Žádné demo, API nebo placená služba. Zatím.
Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 140 (pdf) a HackSpace 77 (pdf).
ESPHome, tj. open source systém umožňující nastavovat zařízení s čipy ESP (i dalšími) pomocí konfiguračních souborů a připojit je do domácí automatizace, například do Home Assistantu, byl vydán ve verzi 2024.4.0.
LF AI & Data Foundation patřící pod Linux Foundation spustila Open Platform for Enterprise AI (OPEA).
Neziskové průmyslové konsorcium Khronos Group vydalo verzi 1.1 specifikace OpenXR (Wikipedie), tj. standardu specifikujícího přístup k platformám a zařízením pro XR, tj. platformám a zařízením pro AR (rozšířenou realitu) a VR (virtuální realitu). Do základu se z rozšíření dostalo XR_EXT_local_floor. Společnost Collabora implementuje novou verzi specifikace do platformy Monado, tj. open source implementace OpenXR.
Byla vydána nová verze 0.38.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 4.4 nebo novější a také libplacebo 6.338.2 nebo novější.
ClamAV (Wikipedie), tj. multiplatformní antivirový engine s otevřeným zdrojovým kódem pro detekci trojských koní, virů, malwaru a dalších škodlivých hrozeb, byl vydán ve verzích 1.3.1, 1.2.3 a 1.0.6. Ve verzi 1.3.1 je mimo jiné řešena bezpečnostní chyba CVE-2024-20380.
Digitální a informační agentura (DIA) oznámila (PDF, X a Facebook), že mobilní aplikace Portál občana je ode dneška oficiálně venku.
#HACKUJBRNO 2024, byly zveřejněny výsledky a výstupy hackathonu města Brna nad otevřenými městskými daty, který se konal 13. a 14. dubna 2024.
Popis příkazů nebudu rozebírat do podrobností, od toho máme manuálové stránky. Jen stručně nastíním k čemu jednotlivé příkazy slouží. Abyste věděli, pod kterým příkazem se skrývá vámi požadovaná činnost, a měli jste se na začátku čeho chytit.
cp
- kopíruje souboryrm
- ruší souborymkdir
- vytváří adresářermdir
- ruší prázdné adresářeln
- vytvoří odkazy na souborychmod
- změní přístupová práva k souborůmls, dir, vdir
- vypíše obsah adresářůfind
- vyhledávání souborůwhich
- zobrazí absolutní cestu k programudf
- vypisuje informace o připojených FSps
- informace o spuštěných procesechcat, less
- výpis souboru na obrazovkuxargs
- spustí zadaný příkaz a zbylé argumenty čte ze standardního vstupugrep
- tiskne řádky, které odpovídají zadanému vzoruwc
- vypíše počet písmen, slov a řádkůsort
- setřídí řádkyPříklad použití archivačního programu tar (je to standardní nástroj, takže ho naleznete snad v každé distribuci).
$ tar zcvf archiv.tgz ./adresar
|
Mimo archivace tar použije i kompresi z
- gzip, j
- bzip2. Volba x
- rozbalí archív, c
- vytvoří archív, v
- vypisuje informace.
Příkazy dostávájí opravdovou moc teprve díky rourám a přesměrováním.
Roura (značí se pomocí operátoru |
) připojuje výstup
jednoho procesu na vstup druhého procesu.
Operátory přesměrování.
>
- přesměrování standardního výstupu do souboru, jestliže soubor existuje bude přepsán>>
- jako předchozí, ale data přídá na konec souboru<
- přesměrování standardního vstupu do souboru<<text
- jako předchozí, ale při výskytu řetězce text
zašle znak konce souboruChcete-li zabránit přepsání souboru při přesměrování, můžete toto implicitní nastavení změnit následujícím příkazem.
$ set -o noclobber
|
Před operátorem přesměrování můžeme použít deskriptor souboru.
0
standardní vstup1
standardní výstup2
standardní chybový výstupDvě ukázky přesměrovaní standardního výstupu a standardního
chybového výstupu do stejného souboru. Jako soubor použijeme
/dev/null
(o všechno, co do tohoto speciálního
souboru přesměrujeme, přijdeme). Zkuste si příklad upravit tak,
aby se vám na obrazovku vypisoval jen standardní chybový výstup
a pak jen standardní výstup. Před zkoušením si nastavte jako
aktuální adresář nějaký, který obsahuje podadresáře a soubory.
$ find | xargs cat &> /dev/null
|
První příklad použití programu tar by šel zapsat i následujícím způsobem za použití roury a přesměrování do souboru.
$ tar cv ./adresar/ | gzip > archiv.tgz
|
Potřebujeme vytvořit kontrolní součet všech souborů v aktuálním
adresáři a jeho podadresářích za pomocí md5sum a uložit do souboru
md5sum.txt
(u tohoho souboru nebudeme provádět kontrolní
součet).
Ukáži vám dvě řešení. To druhé jsem vytvořil, než jsem se v konferenci
dozvěděl o příkazu xargs
.
$ find . \! -path './md5sum.txt' -type f | xargs -i md5sum {} > md5sum.txt
|
Program find
předá programu xargs
cestu
ke všem souborům (na každém řádku je cesta k jednomu souboru), ten
vezme řádek, dá ho do uvozovek a předá jako argument programu
md5sum
, načte další řádek... Dokud nezpracuje celý
vstup. Standardní výstup programu md5sum
se přesměruje
do souboru md5sum.txt
.
find
\!
- neguje následující podmínku-path './md5sum.txt'
- najde soubory, jejichž jména odpovídají './md5sum.txt'
-type f
- jsou nalezeny běžné souboryxargs
-i
- všechny výskyty dvojice znaků {}
jsou nahrazeny cestou k souboru ze standardního vstupu, mezery neuzavřené v uvozovkách nejsou považovány za ukončení argumentuJe zbytečné psát takhle dlouhý příkaz, když ho budeme často používat.
Proto si do souboru ~/.bashrc
přídáme alias.
alias md5sumr='find . \! -path './md5sum.txt' -type f | xargs -i md5sum {} > md5sum.txt'
|
Po dalším spustění BASHE stačí, když zadáte jen md5sumr
.
Druhé řešení je vytvoření skriptu md5sumr.sh
. Je to jen
pro ukázku, aby bylo vidět, že to jde udělat i mnohem složitějším
způsobem.
#!/bin/bash koren=$(pwd) vystup="md5sum.txt" cesta="./" Md5sum() { local tmp for soubor in *; do if [ "$soubor" == "*" ]; then break fi if [ -d "$soubor" ]; then cd "./$soubor" tmp="$cesta" cesta="$cesta$soubor/" Md5sum cd "../" cesta="$tmp" else if [ "$soubor" != "$vystup" ] || [ "$cesta" != "./" ]; then pwd=$(pwd) cd "$koren" md5sum "$cesta$soubor" >> "./$vystup" cd "$pwd" fi fi done } Md5sum |
Na příště si připravte svůj oblíbený editor. Jestli žádný takový ještě nemáte, určitě vyzkoušejte Emacs a vi a jeden z nich si vyberte, časem určitě oceníte jejich kvality. Výše uvedený kód jsem úmyslně nekomentoval. Až dočtete tento seriál, měli byste ho pochopit.
Nástroje: Tisk bez diskuse
Tiskni Sdílej:
for soubor in .* *; do echo "$soubor"; doneviz.
[work]# touch wd\ kuk\$.aj\* [work]# ls wd kuk$.aj* [work]# for soubor in *; do echo "$soubor"; done wd kuk$.aj*
touch \*\ \*\ \*\ pokusa pak třeba
for i in `ls`;do echo "$i";donea pak pro změnu třeba
for i in `ls`;do echo $i;doneExpanze je sfiňa V prvním případě to jednou expanduje v příkazu for a v druhém projistoru ještě jednou v příkazu echo a jestli tam dáš ls, nebo ls -1 na tom nic nezmění. Trochu overkill řešení zadání mě napadlo:
ls|tee /dev/null
touch \*\ \*\ \*\ pokus touch \*\ \*\ \*\ pokus\ \* for i in "`ls`";do echo "$i";donebye :)
find
jak se da udelat kdyz mam př:
strace příkaz 2>&1
a potřebuji aby se ten příkaz měnil podle zadaní argumentu pri spousteni skriptu. Mam například skript ./ahoj.sh FUNKCE ls, takze bych potreboval aby se ten strace vypisoval jako strace ls.