Uživatelské rozhraní

Známé:

Bourne shell:
  Původní Thompson shell /bin/sh. V roce 1979 nový Bourne shell se stejným názvem /bin/sh (autor Stephen Bourne)

Co je shell?
  Interpretačiní programovací jazyk. Čte příkazy z terminálu nebo ze souboru a provádí je.

Obecný formát příkazového řádku:
arg0 arg1 arg2 ...
  Řetězec arg0 je vždy jméno příkazu.
  Příkazy

Ukončovací kód (exit status):
  Každý příkaz při svém ukonření vrací numerický stav.
  Hodnota 0 znamená OK.
  Nenulová hodnota značí chybu.
echo $?

Bílá místa == oddělovač argumentů (nezáleží na počtu.)

; == oddělovač příkazů.

Řídíci znaky

Přesměrování vstupu a výstuppu

mail novak <<EOF
První řádek dopisu
Druhý řádek dopisu
EOF
- Ve variantě `n<<-ukončení` se vypouštějí všechny znaky TAB na začátku čtených řádků.
mail novak <<-EOF
        První řádek dopisu
        Druhý řádek dopisu
EOF

Spojování příkazů do kolon

příkaz1 | příkaz2 [ | příkaz 3 ...]

Job control

Spustění příkazu na pozadí

Job control

  1. Spustíme-li úlohu na pozadá (&), vypíše se identifikace:
ping aisa > /dev/null &
[1] 1234
  1. Běží-li úloha normálně spustěná na popředí a chceme s ní nějak naložit, siskneme snak susp. Shell pošle procesu signál STOP a vypíše se:
ping aisa > /dev/null
^Z
[2]+ Stopped    pring aisa > /dev/null

Příkazy

[1]- Running    ping aisa > /dev/null &
[2]+ Stopped    ping aisa > /dev/null
- `+` znamená current job, `-` znamená previous job
- Na úlohu se zle odkazovat několika způsoby
    - `%+` nebo `%%`

Seznamy

Substituce příkazů

Proměnné

Proměnné používané shellem

Závorkování

Složené příkazy

For

for jméno [ in slovo; ] do seznam; done

Case

case slovo in
vzorek [| vzorek ...]) seznam;;
...
esac

If

if seznam; then seznam; [elif seznam; then seznam; ] ...
[else seznam;] fi

While

while seznam; do seznam; done
until seznam; do seznam; done
break [n]
continue [n]
true
false

Příkaz test

test výraz
[ výraz ]

Testování typu souboru

Testování přístupových práv

Testování charakteristik souborů

Testování řetězců

Numerické testy

[ číslo1 -eq číslo2 ] # číslo1 = číslo2
[ číslo1 -ne číslo2 ] # číslo1 ≠ číslo2
[ číslo1 -lt číslo2 ] # číslo1 < číslo2
[ číslo1 -le číslo2 ] # číslo1 ≤ číslo2
[ číslo1 -gt číslo2 ] # číslo1 > číslo2
[ číslo1 -ge číslo2 ] # číslo1 ≥ číslo2

Logické výrazy

Shell skript - scénář

Shebang

#!/bin/sh

Poziční parametry

$1 $2 $3 ... $9
${1} ${2} ... ${9} ${10} ${11} ...
set -- a b c
echo $1 $2 $3

Zvláštní parametry

Expanze proměnných

Řetězce

Vlnková expanze

Hvězdičková expanze

Funkce v shellu

Proměnné globální a lokální:

Aritmetické expanze

Nalezení a provedení příkazu

  1. shellovské funkce
  2. interní příkazy
  3. normální programy

Volba --