1 SHELL JAKO PROSTŘEDEK PRO KOMUNIKACI S UNIXEM

<<vzad obsah vpřed>>

    2 BOURNŮV SHELL

2.1    Vyvolání shellu

sh [ -acefhiknrstuvx ] [argumenty ]

rsh [ -acefhiknrstuvx ][ argument... ]

2.2    Volby shellu

-r
omezený shell, rovnocenné vyvolání rsh
-f
vypne použití expanzních znaků při generování jmen souborů
-n
pouze čte příkazy, ale nevykonává je
-v
opisuje načtené vstupní řádky na standardní výstup
-x
tiskne příkazy a jejich argumenty při jejich provádění (vhodné pro ladění scénářů)
<<vzad obsah vpřed>>

2.3    Struktura příkazového řádku

Obecný tvar:

arg0 arg1 arg2 ...

Např.
$ ls -al
$ wc dopis
$ wc -l dopis zprava
<<vzad obsah vpřed>>

2.4    Vyhledávání povelů

2.5    Expanzní znaky pro jména souborů

<<vzad obsah vpřed>>

2.6    Standardní vstup a výstup příkazů

Většina příkazů může číst data z klávesnice terminálu a výsledky vypisuje na obrazovku

2.7    Přesměrování vstupů a výstupů

Přesměrování standardního vstupu

Např.

tr "[a-z]" "[A-Z]" <seznam.txt .

Přesměrování standardního výstupu

Přesměrování ostatních vstupních/výstupních kanálů

Např.
 $ cc soub1.c 2 > chyby.prekladu;
 $ cc *.c 2 >> chyby.prekladu

Např.
 $ ls -R /home >adresare.home 2>&1
<<vzad obsah vpřed>>

2.8    Spojení příkazů rourou

zdroj_dat | spotřebič_dat.

Např.:

 $ who | grep host
 $ who | grep host | sort
 $ who | grep host | wc -l
Např.
 $ cc modul.c 2>&1 | tee chyby.prc | more
<<vzad obsah vpřed>>

2.9    Metaznaky shellu a jejich zamaskování

Např.
$ echo "sterilní Mc'Donald"
sterilní Mc'Donald
$
$ echo 'levicový "intelekuál"'
levicový "intelekuál"

Má-li text pokračovat na několika řádcích, uzavře se do apostrofů nebo se konec řádky zamaskuje \, který se na výstupu nezobrazuje. Na pokračovací řádce se zobrazí tzv. sekundární výzva k zadání textu:

$ echo 'Timur
> a jeho parta
'
Timur
a jeho parta
$ echo Prezident\
>a jeho poradci
Prezident
a jeho poradci

Zpětné lomítko se zamaskuje zpětným lomítkem nebo apostrofy čí uvozovkami:

$ echo \\/\\/\\/
\/\/\/
$
$ echo '\/\/\/'
\/\/\/
<<vzad obsah vpřed>>

2.10    Proměnné

Poziční parametry shellu

Např.
 while [ $1 ]
 do
	echo $1
	shift
 done

Obecně lze použít povel ve tvaru shift [n]:

Parametrům $1 a dalším lze explicitně přiřadit hodnotu příkazem set:

$ set Toto je pět pozičních parametrů
$ echo $1 $2 $2 $3 $4 $5
Toto je pět pozičních parametrů

Uživatelské proměnné

Př.
$ editor=joe
$ echo $editor
joe
$ dnesni_datum_a_cas=`date`
$ echo $den_a_cas
Mon Oct 14 10:23:45 GMT 1994
$ echo ${editor}-textový editor
joe-textový editor

Př. Skript vratny

den_a_cas=`date`
echo $den_a_cas
zapis="Vratny: ${1} ${den_a_cas}: kontrola objektu"
echo $zapis >> denik.sluzby

Na jednom řádku může být více přiřazovacích příkazů, které se vyhodnocují zprava doleva:

$ y = "y = ${x}" x ="f(x)"
$
$ echo $x
f(x)
$ echo $y
y=f(x)

Proměnné, které nastavuje shell a jež mohou být uživatelem modifikovány

Značí se velkými písmeny :

HOME
Domovský adresář uživatele. Je nastaven po přihlášení do systému programem login; k přepnutí do něj slouží příkaz cd bez parametrů.
IFS
Vnitřní oddělovač polí v shellu. Odděluje argumenty příkazové řádky shellu, příkazu read, set a pod. Počáteční nastavení: mezera, tabulátor a nová řádka.
MAIL
Úplná cestu souboru, sloužícího jako schránka pro elektronickou poštu.
MAILCHECK
Schránky elektronické pošty se prohlížejí každou MAILCHECK - tou sekundu
MAILPATH
Seznam úplných cest na další poštovní schránky, oddělené dvojtečkami
PATH
Seznam cest na adresáře v nichž hledá shell příkazy, oddělených dvojtečkou. Pořadí vyhledávání je dáno pořadím v seznamu. Standardně PATH=:/bin:/usr/bin, tedy aktuální adresář (prázdný argument), adresář /bin a adresář /usr/bin.
PS1
Primární výzva shellu; standardně $, následovaný mezerou, očekává se příkaz.
PS2
Sekundární výzva shellu, zobrazí se při pokračování příkazu na další řádce, očekává dokončení příkazu.
SHELL
cesta k aktuálnímu interpretu shellu
TERM
typ terminálu
TZ
označení časové zóny a její poloha vzhledem ke Greenwichskému poledníku

Průběžně akualizované proměnné

?
Návratový kód posledního příkazu. U většiny příkazů po bezchybném provedení je roven nule
#
počet pozičních argumentů předaných do scénáře (argument příkazové řádky bez názvu scénáře)
$
číslo aktuálního prosesu (PID). Nejčastější použití je pro jednoznačné označení dočasných souborů- např. tempfile$$
!
číslo posledního procesu spuštěného v pozadí
-
aktuálně nastavené volby shellu ( zadané z příkazové řádky nebo povelem set.

Výpis všech proměnných

set

Zrušení proměnných

unset identifikátor [identifikátor...]

Proměnné, kterým byla přiřazena hodnota, jsou známe v aktuálním shellu, předání do podřízených shellů příkazem
export [identifikátor...]
export
bez argumentů vypíše všechny proměnné, exportované z aktuálního shellu.

Zákaz přepsání:

<<vzad obsah vpřed>>