Svobodná webová platforma pro sdílení a přehrávání videí PeerTube (Wikipedie) byla vydána v nové verzi 6.1. Přehled novinek i s náhledy v oficiálním oznámení a na GitHubu. Řešeny jsou také 2 bezpečnostní chyby.
Lennart Poettering na Mastodonu představil utilitu run0. Jedná se o alternativu k příkazu sudo založenou na systemd. Bude součástí systemd verze 256.
Hudební přehrávač Amarok byl vydán v nové major verzi 3.0 postavené na Qt5/KDE Frameworks 5. Předchozí verze 2.9.0 vyšla před 6 lety a byla postavená na Qt4. Portace Amaroku na Qt6/KDE Frameworks 6 by měla začít v následujících měsících.
Byla vydána nová verze 2.45.0 distribuovaného systému správy verzí Git. Přispělo 96 vývojářů, z toho 38 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání. Vypíchnout lze počáteční podporu repozitářů, ve kterých lze používat SHA-1 i SHA-256.
Před 25 lety, ve čtvrtek 29. dubna 1999, byla spuštěna služba "Úschovna".
Byla vydána nová verze 24.04.28 s kódovým názvem Time After Time svobodného multiplatformního video editoru Shotcut (Wikipedie) a nová verze 7.24.0 souvisejícího frameworku MLT Multimedia Framework. Nejnovější Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.
Byla vydána verze 5.30 dnes již open source operačního systému RISC OS (Wikipedie).
V aktuálním příspěvku na blogu počítačové hry Factorio (Wikipedie) se vývojář s přezývkou raiguard rozepsal o podpoře Linuxu. Rozebírá problémy a výzvy jako přechod linuxových distribucí z X11 na Wayland, dekorace oken na straně klienta a GNOME, změna velikosti okna ve správci oken Sway, …
Rakudo (Wikipedie), tj. překladač programovacího jazyka Raku (Wikipedie), byl vydán ve verzi #171 (2024.04). Programovací jazyk Raku byl dříve znám pod názvem Perl 6.
Informace o názvu skriptu, počtu předaných argumentů a argumenty samotné jsou uloženy ve speciálních proměnných.
$0
- název skriptu$#
- počet předaných argumentů$IFS
- seznam znaků, který je použit k oddělování slov
atp., např. když shell čte vstup$1
až $9
- první až devátý argument
předaný skriptu${n}
- libovolný n-tý argument předaný skriptu$*
- obsahuje všechny argumenty oddělené prvním znakem
z $IFS
$@
- jako předchozí, ale k oddělení se nepoužívá první
znak z $IFS
Skript argumenty.sh
nám poslouží jako ukázka.
#!/bin/bash
|
Nyní skript spustíme s 10 argumenty.
$ ./argumenty.sh jedna dva tři čtyři pět šest sedm osm devět deset
|
Provádění funkcí je mnohem rychlejší než provádění skriptů, protože
funkce si shell udržuje trvale předzpracované v paměti. Funkce musí být
definována dříve než bude použita. Příkaz export
lze použít i
pro funkce, ale musí být zapnutý mód allexport
.
$ set -o allexport
|
Funkcím můžeme předávat argumenty stejně jako skriptům a získáváme
je stejným způsobem jako u skriptů. Příkaz return
ukončí
funkci a vrací její návratovou hodnotu ve formě celočíselného argumentu.
Po dokončení funkce jsou poziční argumenty skriptu
($#
, $@
...) obnoveny (u starších shellů to
tak být nemusí).
$ funkce_s_argumenty() {
|
Budeme-li chtít vrátit řetězcovou hodnotu, můžeme to udělat např. níže uvedeným způsobem.
#!/bin/bash vrat_retezec() { echo "Řetězec" } promena=$(vrat_retezec) echo $promena exit 0 |
Pomocí klíčového slova local
můžeme také vytvořit lokální
proměnné funkce. Jestliže bude existovat globální proměnná se stejným
názvem, bude ve funkci potlačena.
#!/bin/bash jedna="První globální proměnná" dva="Druhá globální proměnná" lokalni_promena() { local jedna="První lokální proměnná" echo $jedna echo $dva } lokalni_promena echo $jedna echo $dva exit 0 |
Příkazy můžeme rozdělit na zabudované a normální. Zabudované příkazy nemůžeme spustit jako externí programy, ale většinou mají své ekvivalenty ve formě externích programů. Normální příkazy jsou externí programy a jejich vykonání je pomalejší než u zabudovaných příkazů.
break
- vyskočí z cyklu:
- nulový příkazcontinue
- spustí další iteraci cyklu.
- provede příkaz v aktuálním shellueval
- vyhodnotí zadaný výrazshift
- posune poziční parametryread
- načte uživatelský vstup, jako argument se
použije název proměnné, do které se má uložitstty
- mění a vypisuje charakteristiky terminálové
linkyexec
- spustí nový shell nebo jiný zadaný program
a nebo upraví deskriptor souboruexit n
- ukončení skriptu s návratovým kódem n
(n = 0 - úspěšné ukončení, n = 1 až 125
- chyba, ostatní n jsou rezervovány)printf
- není dostupný ve starých shellech a při vytváření
formátovaného výstupu byste mu měli dávat přednost před příkazem
echo
podle specifikace X/OpenNa skriptu prikazy.sh
si ukážeme použití některých výše
uvedených příkazů.
#!/bin/bash for i in 10 20 30 40 50; do if [ $i -eq 40 ]; then break elif [ $i -eq 20 ]; then continue else : fi echo $i done a="abc" nazev_promene="a" promena='$'$nazev_promene echo $promena eval promena='$'$nazev_promene echo $promena while [ "$1" ]; do echo $1 shift done exec date echo "Tato část již nebude provedena!" exit 0 |
Nezapomeneme skript spustit s několika argumenty.
$ ./prikazy.sh první druhý třetí
|
Nyní si ukážeme interaktivní skript read.sh
,
který požádá uživatele o zadání přihlašovacího jména a hesla.
Heslo se nebude vypisovat na obrazovku.
#!/bin/bash echo -n "Přihlašovací jméno: " read jmeno echo -n "Heslo: " # Vypne výpis vstupních znaků stty -echo read heslo # Zapne výpis vstupních stty echo echo if [ "$jmeno" == "fuky" ] && [ "$heslo" == "heslo" ]; then echo "Kód: Příšerně žluťoučký kůň úpěl ďábelské ódy" else echo "Nemáte oprávnění k vypsání kódu" fi exit 0 |
Zadáme-li správné údaje, získáme kód.
$ ./read.sh
|
Na závěr tohoto dílu si ukážeme použití konstrukce
select proměnná in hodnota1 ... hodnotaN; do příkazy; done
.
#!/bin/bash echo "Zadejte vaše pohlaví" select pohlavi in muž žena; do if [ "$pohlavi" ]; then echo "Jste $pohlavi" break else echo "$REPLY je nedefinovaná odpověď" fi done exit 0 |
Po spuštění příkazu select
je uživatel vyzván, aby
zadal číslo jedné z hodnot (hodnota1 ... hodnotaN
v našem
případě muž
nebo žena
).
proměnná $REPLY
obsahuje vždy hodnotu uživatelského vstupu.
proměnná $pohlavi
obsahuje hodnotu pouze v případě, že číslo
odpovídá jedné z voleb. Dotaz se opakuje, dokud se neprovede
v těle příkaz break
.
$ ./select.sh
|
Nástroje: Tisk bez diskuse
Tiskni Sdílej: