- Stahuj zápisky z přednášek a ostatní studijní materiály
- Zapisuj si jen kvalitní vyučující (obsáhlá databáze referencí)
- Nastav si své předměty a buď stále v obraze
- Zapoj se svojí aktivitou do soutěže o ceny
- Založ si svůj profil, aby tě tví spolužáci mohli najít
- Najdi své přátele podle místa kde bydlíš nebo školy kterou studuješ
- Diskutuj ve skupinách o tématech, které tě zajímají
Studijní materiály
Zjednodušená ukázka:
Stáhnout celý tento materiálměnné)
Základní příkazy (pro demonstraci vlastností shellu)
----------------------------------------------------
cat - výpis obsahu souboru
cat file1 výpis obsahu souboru file1
cat file1 file2 file3 výpis obsahu souborů
cut - výběr určitých polí (sloupců) souboru
cut -f2 file1 vypiš druhý sloupec
implicitním oddělovačem je tab
cut -f1,3 -d" " file1 vypiš první a třetí sloupec
oddělovačem je mezera
head - zobrazení prvních několika řádků souboru
head -n 2 file1 první dva řádky souboru file1
tail - zobrazení několika posledních řádků souboru
tail -n 2 file1 poslední dva řádky souboru file1
tail -n +2 file1 od druhého řádku do konce souboru
more - výpis po obrazovkách
more file1
sort - setřídění souboru
sort file1
grep - hledání řetězce v souboru
grep xnovak00 seznam vypíše řádky souboru seznam, které obsahují
řetězec xnovak00
wc - (word count) počítá slabiky, slova nebo řádky souboru
wc -l file1 spočítá řádky souboru file1
wc file1 spočítá všechno
Všechny tyto příkazy mohou fungovat i jako filtry.
Vstup, výstup, přesměrování
---------------------------
Každý program otevírá aspoň 3 soubory: stdin (0), stdout (1) a stderr (2)
Přesměrování:
stdin <
cat file1 = cat >
cat file2 = file2 cat
stderr 2>, 2>>
rm neex_file 2>err
Přklady:
1) cat file1 >file2 2>error
Pokud file1 existuje, vypíše se do file2, pokud neexistuje, chybová
hláška se zapíše do souboru error.
2) cat file1 >file2 2>&1
Standardní i chybový výstup do sterného souboru file2.
Here document - umožňuje zapsat standardní vstup pro příkaz na příkazovou
řádku (využívá se hlavně v dávkách)
Př.: $ sort text
> bude
> seřazen
> podle
> abecedy
> END
Vytvoření prázdného souboru:
>file
Zahození výstupu:
program > /dev/null
Roury (kolony, pipe)
--------------------
Příklad: Zjistíme, zda je přihlášen uživatel xnovak00.
1) Bez použití roury (dočasný soubor).
who >tmp
grep xnovak00 tmp
rm tmp
2) Pomocí roury.
who | grep xnovak00
tee - odbočka z kolony
who | wc -l kolik lidí je přihlášených
who | cut -f1 -d" " | tee WHO | wc -l
kolik lidí je přihlášených a navíc
bude jejich seznam v souboru WHO
Proměnné
--------
Speciální (systémové) HOME, PATH, LOGNAME, PS1, ...
env - výpis speciálních proměnných
Definované uživatelem (měly by být malými psímeny).
Nemají typ, zachází s nimi podle potřeby.
a=123 Přiřazení hodnoty proměnné a (bez mezer).
b=$a Přiřazení obsahu proměnné a do proměnné b (bez mezer).
echo $b Zjištění obsahu proměnné b.
Přiřazení výstupu programu do proměnné.
c=`pwd` !!! zpětné apostrofy
echo $c
set Výpis všech proměnných.
unset Zruší proměnnou (nebude už definována)
Proměnné se samy od sebe nepředávají do subshellů, musí se použít příkaz export.
$ export DISPLAY
$proměnná, ${proměnná} obsah proměnné
${#proměnná} délka obsahu proměnné
${proměnná:-náhrada} Pokud proměnná není definována, nebo obsahuje
prázdný řetězec, tak se vypíše náhrada. Jinak
se vypíše obsah proměnné.
${proměnná:=náhrada} Pokud proměnná není definována, nebo obsahuje
prázdný řetězec, tak se do ní přiřadí náhrada
a vypíše se. Jinak se vypíše obsah proměnné.
${proměnná:+náhrada} Pokud proměnná je definována, tak se vypíše
náhrada. Jinak se neděje nic.
${proměnná#reg.výraz}
${proměnná##reg.výraz} Pokud začátek obsahu proměnné odpovídá regulárnímu
výrazu, tak se vypíše bez tohoto začátku, jinak se
vypíše celý obsah proměnné. # je pro nejmenší
začátek odpvídající reg. výrazu, ## je pro největší.
${proměnná%reg.výraz}
${proměnná%%reg.výraz} Jako #, ##, ale na konec.
typeset - nastavuje vlastnosti proměnných
Př.: $ typeset -l a # proměnná bude převádět velká písmena na malá
$ typeset +l a # zruší předchozí vlastnost
$ typeset # vypíše vlastnosti všech proměnných
vlastnosti:
-L[n] - omezení velikosti obsahu na n znaků zleva
-R[n] - omezení velikosti obsahu na n znaků zprava
-Z[n] - omezení velikosti obsahu na n znaků zprava, pokud je prvním znakem
číslice, tak se zleva doplní nuly tak, aby celková délka obsahu byla n
-i - s proměnnou se zachází jako s číslem, pokud se do ní přiřadí nějaký
text, převede se na 0
-l - převod na malá písmena
-r proměnná bude read only (konstanta)
-u - převod na velká písmena
-x - proměnná se bude exportovat do subshellů
Procesy
-------
ps - výpis procesů
$ ps -u xnovak00 vypiš všechny procesy uživatele xnovak00
kill - zaslání signálu procesu
$ kill -s KILL 14397 = $ kill -9 14397
zabije proces 14397.
$ man 5 signal seznam signálů
Práce na pozadí
---------------
Přkazy, které trvají dlouho, nebo grafické aplikace spouštěné z příkazové
řádky spouštíme na pozadí. Shell pak bude opět schopen přijímat příkazy.
Výstupy programu spuštěného na pozadí je vhodné přesměrovat do souborů,
aby se nevypisovaly na terminál.
Znak & se aplikuje na celou rouru, protože roura se považuje za nový příkaz.
Příklad:
find / -name bin -print >vysl 2>/dev/null &
Vyhledá všechny soubory (adresáře) bin v systému souborů.
Výsledek hledání zapíše do souboru vysl a chybová hlášení se
zahodí (/dev/null). Proces se spustí na pozadí (&), takže je
shell schopen přijímat další příkazy. Na obrazovku se vypíše
číslo jobu a PID posledního procesu v přpadné rouře.
[1] 14071
Job na popředí se dá pozastavit Ctrl-Z.
jobs - výpis jobů
bg - přenese pozastavený job na pozadí
bg %1
fg - přenese pozastavený job na popředí
fg %1
kill - ukončí job
kill %1
Spouštění více příkazů z jedné příkazové řádky
----------------------------------------------
; - odděluje příkazy stejně jako Enter
$ date; ls; who
& - spustí všechny příkazy paralelně na pozadí
$ xterm & xterm & xterm &
&& - druhý přkaz se spustí, pokud první příkaz skončil úspěšně
|| - druhý přkaz se spustí, pokud první příkaz skončil neúspěšně
$ gcc -o myprog myprog.c && myprog
Pokud skončí překlad programu myprog.c úspěšně, je spuštěn.
$ gcc -o myprog myprog.c || vi myprog.c
Pokud skončí neúspěšně, spusť edit
Vloženo: 4.06.2009
Velikost: 23,11 kB
Komentáře
Tento materiál neobsahuje žádné komentáře.
Copyright 2025 unium.cz


