Microsoft v příspěvku na svém blogu věnovaném open source oznámil, že textové adventury Zork I, Zork II a Zork III (Wikipedie) jsou oficiálně open source pod licencí MIT.
První prosincový týden proběhne SUSE Hack Week 25. Zaměstnanci SUSE mohou věnovat svůj pracovní čas libovolným open source projektům, například přidání AI agenta do Bugzilly, implementaci SSH v programovacím jazyce Zig nebo portaci klasických her na Linux. Připojit se může kdokoli.
Google oznámil, že Quick Share na Androidu funguje s AirDropem na iOS. Zatím na telefonech Pixel 10. Uživatelé tak mohou snadno přenášet soubory z telefonů s Androidem na iPhony a obráceně.
Byla vydána nová verze 8.5 (8.5.0) skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Přináší řadu novinek a vylepšení (URI Extension, Pipe Operator, Clone With, …). Vydána byla také příručka pro přechod z předchozích verzí.
Evropská komise zahájila tři vyšetřování týkající se cloudových platforem Amazon Web Services (AWS) a Microsoft Azure. Evropská exekutiva, která plní také funkci unijního antimonopolního orgánu, chce mimo jiné určit, zda jsou americké společnosti Microsoft a Amazon v cloudových službách takzvanými gatekeepery, tedy hráči, kteří významně ovlivňují provoz internetu a musí dle nařízení o digitálních trzích (DMA) na společném trhu
… více »Společnost Meta Platforms vyhrála ostře sledovaný spor o akvizici sítě pro sdílení fotografií Instagram a komunikační aplikace WhatsApp. Podle amerického soudu firma jejich převzetím neporušila antimonopolní zákon, protože si tak nemonopolizovala trh sociálních sítí. Žalobu na Metu podala před pěti lety americká Federální obchodní komise (FTC). FTC argumentovala, že Meta, tehdy známá jako Facebook, koupila tyto dvě společnosti v letech 2012 a 2014 proto, aby s nimi nemusela soutěžit.
Home Assistant včera představil svůj nejnovější oficiální hardware: Home Assistant Connect ZBT-2 pro připojení zařízení na sítích Zigbee nebo Thread.
Byla vydána verze 9.1 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 informačním videu.
Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem zůstává El Capitan od HPE (Cray) s výkonem 1,809 exaFLOPS. Druhý Frontier má výkon 1,353 exaFLOPS. Třetí Aurora má výkon 1,012 exaFLOPS. Nejvýkonnější superpočítač v Evropě JUPITER Booster s výkonem 1,000 exaFLOPS je na čtvrtém místě. Nejvýkonnější český superpočítač C24 klesl na 192. místo. Karolina, GPU partition klesla na 224. místo a Karolina, CPU partition na 450. místo. Další přehledy a statistiky na stránkách projektu.
Microsoft představil Azure Cobalt 200, tj. svůj vlastní SoC (System-on-Chip) postavený na ARM a optimalizovaný pro cloud.
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:
V případě mnoha malých souborů bude toto řešení samozřejmě
mnohem rychlejší, ale čím větší bude velikost souborů tím menší
bude rozdíl v rychlosti. A navíc u rychlejšího řešení nastává
níže uvedený problém.
bash: /usr/bin/md5sum: Příliš dlouhý seznam argumentů
To je hlavní nevýhoda rychlého řešení, takže rychleji neznamená
vždy nejlépe
)
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
. Ale myslim, ze v puvodnim dotazu byl vypis jmena souboru pouze jako priklad.
touch \*\ \*\ \*\ pokus touch \*\ \*\ \*\ pokus\ \* for i in "`ls`";do echo "$i";donebye :)
Ale ja chtel uvezt priklad, ktery tu jeste nebyl - a resi
problemy mezer, koncu radku, hvezdicek a jinych zhovadilosti v nazvech souboru:
find . -exec sh -c 'echo "$0" ' {} \;
Enjoy
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.