SZZ materiály

Operační systémy

Užitečné odkazy

man

man [příkaz]
man ls
Klávesa Význam
q ukončení
/text hledání textu
n další nalezený výskyt
PgUp / PgDown pohyb
šipky pohyb

Rychlá nápověda

[příkaz] --help
ls --help

pwd

pwd

ls

ls [parametry] [adresář]

Výpis obsahu pracovního adresáře

ls

Výpis obsahu konkrétního adresáře

ls documents

Důležité parametry

Parametr Význam
-l detailní výpis
-a zobrazí skryté soubory
-h čitelné velikosti souborů
-R rekurzivní výpis
-t řazení podle času
-r obrácené pořadí

cd

cd [adresář]

Přechod do adresáře

cd documents

Přechod o úroveň výš

cd ..

Přechod do domovského adresáře

cd ~

Přechod do absolutní cesty

cd /home/ondra/projects

Přechod do předchozího adresáře

cd -

Speciální symboly

Symbol Význam
. aktuální adresář
.. nadřazený adresář
~ domovský adresář

mkdir

mkdir [adresář]

Vytvoření jednoho adresáře

mkdir documents

Vytvoření více adresářů

mkdir images videos backups

Vytvoření včetně nadřazených adresářů

mkdir -p projects/python/app

Důležité parametry

Parametr Význam
-p vytvoří i chybějící nadřazené adresáře

cp

cp [zdroj] [cíl]

Kopírování souboru

cp file.txt backup.txt

Kopírování do adresáře

cp file.txt documents/

Kopírování více souborů

cp file1.txt file2.txt backups/

Rekurzivní kopírování adresáře

cp -r projects backups/

Důležité parametry

Parametr Význam
-r rekurzivní kopírování adresářů
-i potvrzení před přepsáním
-v verbose režim
-u kopíruje pouze novější soubory

mv

mv [zdroj] [cíl]

Přesunutí souboru

mv file.txt documents/

Přejmenování souboru

mv old.txt new.txt

Přesunutí více souborů

mv file1.txt file2.txt backups/

Přesunutí adresáře

mv projects/ backups/

Důležité parametry

Parametr Význam
-i potvrzení před přepsáním
-v verbose režim
-n nepřepisuje existující soubory

rm

rm [soubor]

Odstranění souboru

rm file.txt

Odstranění více souborů

rm file1.txt file2.txt

Rekurzivní odstranění adresáře

rm -r projects/

Vynucené odstranění

rm -f file.txt

Důležité parametry

Parametr Význam
-r rekurzivní odstranění adresářů
-f vynucené odstranění
-i potvrzení před odstraněním
-v verbose režim

find

find [cesta] [podmínka]

Vyhledání podle názvu

find . -name "*.txt"

Vyhledání adresářů

find . -type d

Vyhledání souborů

find . -type f

Vyhledání podle velikosti

find . -size +10M

Vyhledání podle názvu bez ohledu na velikost písmen

find . -iname "*.jpg"

Důležité parametry

Parametr Význam
-name hledání podle názvu
-iname hledání bez ohledu na velikost písmen
-type f pouze soubory
-type d pouze adresáře
-size hledání podle velikosti
-empty prázdné soubory/adresáře

cat

cat [soubor]

Výpis obsahu souboru

cat file.txt

Výpis více souborů

cat file1.txt file2.txt

Spojení souborů do nového souboru

cat file1.txt file2.txt > output.txt

Důležité parametry

Parametr Význam
-n číslování řádků
-b číslování neprázdných řádků

grep

grep [vzor] [soubor]

Vyhledání textu

grep "error" log.txt

Vyhledání bez ohledu na velikost písmen

grep -i "error" log.txt

Rekurzivní vyhledávání

grep -r "TODO" .

Počet nalezených řádků

grep -c "error" log.txt

Důležité parametry

Parametr Význam
-i ignoruje velikost písmen
-r rekurzivní vyhledávání
-n zobrazí čísla řádků
-c počet nalezených řádků
-v invertuje výsledek

cut

cut [parametry] [soubor]

Výběr znaků

cut -c 1-5 file.txt

Výběr sloupců podle oddělovače

cut -d ":" -f 1 /etc/passwd

Důležité parametry

Parametr Význam
-c výběr znaků
-d oddělovač
-f číslo sloupce

tr

tr [znaky] [znaky]

Převod na malá písmena

echo "HELLO" | tr 'A-Z' 'a-z'

Odstranění znaků

echo "hello123" | tr -d '0-9'

Nahrazení znaků

echo "a,b,c" | tr ',' ';'

Důležité parametry

Parametr Význam
-d odstranění znaků
-s sloučení opakujících se znaků

sort

sort [soubor]

Seřazení souboru

sort names.txt

Reverzní řazení

sort -r names.txt

Numerické řazení

sort -n numbers.txt

Odstranění duplicit

sort -u names.txt

Důležité parametry

Parametr Význam
-r obrácené pořadí
-n numerické řazení
-u odstranění duplicit

uniq

uniq [soubor]

Odstranění duplicit

uniq names.txt

Počet výskytů řádků

uniq -c names.txt

Pouze duplicitní řádky

uniq -d names.txt

Důležité parametry

Parametr Význam
-c počet výskytů
-d pouze duplicitní řádky
-u pouze unikátní řádky

wc

wc [soubor]

Počet řádků

wc -l file.txt

Počet slov

wc -w file.txt

Počet znaků

wc -c file.txt

Důležité parametry

Parametr Význam
-l počet řádků
-w počet slov
-c počet znaků
-m počet znaků (Unicode)

ps

ps [parametry]

Výpis procesů aktuálního shellu

ps

Výpis všech procesů

ps aux

Výpis konkrétního procesu

ps -p 1234

Důležité parametry

Parametr Význam
a procesy všech uživatelů
u detailní informace
x procesy bez terminálu
-p konkrétní PID

top

top

Ukončení programu

q

Důležité informace

Sloupec Význam
PID ID procesu
%CPU využití CPU
%MEM využití paměti
USER vlastník procesu
COMMAND spuštěný příkaz

kill

kill [PID]

Ukončení procesu

kill 1234

Vynucené ukončení procesu

kill -9 1234

Důležité parametry

Parametr Význam
-9 SIGKILL
-15 SIGTERM
-l seznam signálů

jobs

jobs

Výpis běžících úloh

jobs

Význam výstupu

Symbol Význam
[1] číslo úlohy
Running běží
Stopped pozastaveno

bg

bg [job]

Pokračování poslední úlohy

bg

Pokračování konkrétní úlohy

bg %1

fg

fg [job]

Přesunutí poslední úlohy

fg

Přesunutí konkrétní úlohy

fg %1

cron

crontab [parametry]

Úprava cron úloh

crontab -e

Výpis cron úloh

crontab -l

Odstranění cron úloh

crontab -r

Formát cron výrazu

* * * * * příkaz
- - - - -
| | | | |
| | | | +--- den v týdnu (0-7)
| | | +----- měsíc (1-12)
| | +------- den v měsíci (1-31)
| +--------- hodina (0-23)
+----------- minuta (0-59)

Každý den ve 3:00

0 3 * * * /home/ondra/backup.sh

Každých 5 minut

*/5 * * * * /home/ondra/script.sh

Každé pondělí v 8:00

0 8 * * 1 /home/ondra/report.sh

Důležité parametry

Parametr Význam
-e editace cron úloh
-l výpis cron úloh
-r odstranění cron úloh

Linux práva

Typy práv

Právo Význam
r read
w write
x execute

Výpis práv

ls -l

Příklad výstupu:

-rwxr-xr-- 1 ondra users 120 file.sh

Význam jednotlivých částí

-rwxr-xr--
Část Význam
- typ souboru
rwx práva vlastníka
r-x práva skupiny
r-- práva ostatních

Typy souborů

Symbol Význam
- běžný soubor
d adresář
l symbolický odkaz

Změna práv pomocí chmod

chmod [práva] [soubor]

Přidání práva pro spuštění

chmod +x script.sh

Odebrání práva zápisu

chmod -w file.txt

Numerická práva

Hodnota Práva
7 rwx
6 rw-
5 r-x
4 r--

Nastavení práv numericky

chmod 755 script.sh

Význam:

755
Číslo Význam
7 vlastník = rwx
5 skupina = r-x
5 ostatní = r-x

Změna vlastníka

chown ondra file.txt

Změna skupiny

chgrp developers file.txt

Řízení procesů

Výpis procesů

ps

Výpis všech procesů

ps aux

Interaktivní sledování procesů

top

Ukončení procesu pomocí PID

kill 1234

Vynucené ukončení procesu

kill -9 1234

Spuštění procesu na pozadí

python app.py &

Výpis úloh spuštěných na pozadí

jobs

Přesunutí úlohy na pozadí

bg %1

Přesunutí úlohy do popředí

fg %1

Pozastavení procesu

Ctrl + Z

Ukončení procesu v terminálu

Ctrl + C

Důležité signály

Signál Význam
SIGTERM standardní ukončení
SIGKILL vynucené ukončení
SIGSTOP pozastavení procesu
SIGCONT pokračování procesu

Důležité pojmy

Pojem Význam
PID Process ID
foreground proces běžící v popředí
background proces běžící na pozadí

Proměnná

Vytvoření proměnné

name="Ondra"

Výpis proměnné

echo "$name"

Číselná proměnná

age=20

Použití více proměnných

first_name="Ondra"
last_name="Svorc"

echo "$first_name $last_name"

Práce s čísly

count=5

count=$((count + 1))

echo "$count"

Načtení vstupu od uživatele

read name

echo "$name"

Konstantní proměnná

readonly PI=3.14

Export proměnné

export PATH="$PATH:/custom/path"

Důležité poznámky

Správně:

name="Ondra"

Špatně:

$name="Ondra"

Správně:

name="Ondra"

Špatně:

name = "Ondra"

Správně:

echo "$name"

Podmínka

Operátory pro porovnávání čísel

Operátor Význam
-eq equal
-ne not equal
-gt greater than
-lt lower than
-ge greater or equal
-le lower or equal

Operátory pro porovnávání řetězců

Operátor Význam
= equal
!= not equal
-z empty string
-n non-empty string

Logické operátory

Operátor Význam
&& AND
|| OR
! NOT

Obecná syntaxe

if [ podmínka_1 ]; then
    # kód pokud platí podmínka_1

elif [ podmínka_2 ]; then
    # kód pokud platí podmínka_2

else
    # kód pokud neplatí žádná podmínka

fi

Porovnávání čísel

age=20

if [ "$age" -ge 18 ]; then
    echo "Adult"
else
    echo "Minor"
fi

Více větví

score=75

if [ "$score" -ge 90 ]; then
    echo "Grade A"

elif [ "$score" -ge 70 ]; then
    echo "Grade B"

elif [ "$score" -ge 50 ]; then
    echo "Grade C"

else
    echo "Failed"

fi

Porovnávání řetězců

name="Ondra"

if [ "$name" = "Ondra" ]; then
    echo "Hello Ondra"
else
    echo "Unknown user"
fi

Prázdný string

text=""

if [ -z "$text" ]; then
    echo "Empty string"
fi

Neprázdný string

text="hello"

if [ -n "$text" ]; then
    echo "String contains text"
fi

Logický AND

age=25

if [ "$age" -ge 18 ] && [ "$age" -le 65 ]; then
    echo "Working age"
fi

Logický OR

role="admin"

if [ "$role" = "admin" ] || [ "$role" = "moderator" ]; then
    echo "Access granted"
fi

Negace

file="data.txt"

if ! [ -f "$file" ]; then
    echo "File does not exist"
fi

Kontrola existence souboru

if [ -f "notes.txt" ]; then
    echo "File exists"
fi

Kontrola existence adresáře

if [ -d "documents" ]; then
    echo "Directory exists"
fi

Důležité poznámky

Správně:

[ "$age" -ge 18 ]

Špatně:

["$age" -ge 18]

Správně:

if [ "$name" = "Ondra" ]; then

Špatně:

if [ "$name" -eq "Ondra" ]; then

Cyklus

Cyklus for

for proměnná in hodnoty; do
    příkazy
done

Iterace přes seznam hodnot

for name in Ondra Petr Jan; do
    echo "$name"
done

Iterace přes soubory

for file in *.txt; do
    echo "$file"
done

Iterace přes číselný rozsah

for i in {1..5}; do
    echo "$i"
done

Cyklus while

while [ podmínka ]; do
    příkazy
done

Počítání od 1 do 5

count=1

while [ "$count" -le 5 ]; do
    echo "$count"
    count=$((count + 1))
done

Nekonečný cyklus

while true; do
    echo "running"
done

Ukončení cyklu pomocí break

for i in {1..10}; do
    if [ "$i" -eq 5 ]; then
        break
    fi

    echo "$i"
done

Přeskočení iterace pomocí continue

for i in {1..5}; do
    if [ "$i" -eq 3 ]; then
        continue
    fi

    echo "$i"
done

Funkce

Definice funkce

function pozdrav() {
    echo "Hello"
}

Alternativní syntaxe

pozdrav() {
    echo "Hello"
}

Volání funkce

pozdrav

Funkce s argumenty

pozdrav() {
    echo "Hello $1"
}

pozdrav Ondra

Argumenty funkce

Argument Význam
$1 první argument
$2 druhý argument
$# počet argumentů
$@ všechny argumenty

Funkce s návratovou hodnotou

is_adult() {
    if [ "$1" -ge 18 ]; then
        return 0
    else
        return 1
    fi
}

Kontrola návratové hodnoty

is_adult 20

if [ $? -eq 0 ]; then
    echo "Adult"
fi

Lokální proměnná

show_name() {
    local name="Ondra"
    echo "$name"
}

Volání skriptu

./script.sh

Volání skriptu s argumenty

./script.sh hello world
echo "$1" # hello
echo "$2" # world