🚀 BASH SCRIPTING - ULTIMÁTNÍ TAHÁK

📍 ABSOLUTNÍ VS. RELATIVNÍ CESTA

1. Absolutní cesta (Od kořene)

Vždy začíná lomítkem /. Je to "úplná adresa", která platí, ať jsi v systému kdekoliv.

Příklad: /home/uzivatel/dokumenty/skript.sh

Analogie: Celá poštovní adresa (Město, Ulice, Číslo popisné).

2. Relativní cesta (Od tebe)

Nezačíná lomítkem. Vychází z místa, kde právě teď "stojíš" (tvůj aktuální adresář pwd).

Příklad: Pokud jsi v /home/uzivatel/, stačí napsat dokumenty/skript.sh

Analogie: Směrovka "Zahni za roh doprava". Funguje jen, když stojíš na konkrétní křižovatce.
Důležité značky:
ZnačkaVýznamPříklad
/Kořen (Root) - úplný začátek disku.cd /etc
~Domovská složka aktuálního uživatele.cd ~/Downloads
.Tato složka (tady jsem)../muj_skript.sh
..O úroveň výš (nadřazená složka).cd ..

1. Úvod a spouštění

Shebang: #!/bin/bash (vždy na 1. řádku)

Práva: chmod +x skript.sh (udělá soubor spustitelným)

Spuštění: ./skript.sh nebo bash skript.sh

Úprava:nano skript.sh nebo vi skript.sh

🗺️1.1. NAVIGACE V CESTÁCH

2. Základní příkazy (File Ops)

PříkazVýznam (K čemu to je?)Příklad
pwdKde právě jsem? (Cesta)pwd
cdZměna složkycd /home/user
mkdirVytvořit novou složkumkdir projekty
touchVytvořit prázdný soubortouch main.sh
rmSmazat (NEVRATNÉ!)rm soubor.txt
cpKopírovatcp stary.txt novy.txt
mvPřesunout / Přejmenovatmv a.txt b.txt
catZobrazit obsah v terminálucat info.log
grepHledat text v souborugrep "chyba" log.txt
echoVypsat text / proměnnouecho "$USER"

📂 PŘÍKAZ 'ls'

Základní:
-lDlouhý výpis (detaily).-hČitelné velikosti (MB, GB).
-aVše včetně skrytých (.).-1Každý soubor na nový řádek.
Řazení a bonusy:
-tPodle času (nové nahoře).-SPodle velikosti.
-rObrátit pořadí (Reverse).-FZnačky (/ složka, * skript).

3. Proměnné a Stringy

Definice: jmeno="Petr" (bez mezer!)

Použití: echo "$jmeno"

Spojování: full="${jmeno}_zaloha.txt"

Vstup: read vstupni_promenna

Date: set $(date) echo Dnes je $3. $2. $6 a je aktuální čas $4

4. Argumenty skriptu

ProměnnáVýznam
$0Název skriptu
$1, $2...Poziční argumenty (první, druhý...)
$#Počet předaných argumentů
$@Všechny argumenty (seznam)
$?Návratový kód (0 = OK, jiné = CHYBA)

5. Podmínky (if)

Syntaxe: if [ podmínka ]; then ... fi (pozor na mezery v závorkách!)

Čísla: -eq (=), -ne (!=), -gt (>), -lt (<), -ge (>=), -le (<=)
Soubory: -e (existuje soubor/složka), -f (soubor), -d (složka), -w (zápis)
Stringy: == (rovná se), != (nerovná se), -z (prázdný)

6. Logické operátory

&& : A zároveň (AND)

|| : Nebo (OR)

! : Negace

📦 ARCHIVACE A KOMPRESE (Zip, Tar)

ZIP - Klasika pro Windows i Linux:
zip -r archiv.zip slozka/Zabalí složku rekurzivně (včetně obsahu).
unzip archiv.zipRozbalí .zip archiv v aktuální složce.
TAR - Standard v Linuxu (pásková archivace):
tar -cvf zaloha.tar slozka/Vytvoří archiv (c=create, v=verbose, f=file).
tar -xvf zaloha.tarRozbalí archiv (x=extract).
tar -czvf zaloha.tar.gz slozka/Vytvoří komprimovanou zálohu (z=gzip). Menší velikost!
tar -xzvf zaloha.tar.gzRozbalí komprimovanou zálohu.

👤 SPRÁVA UŽIVATELŮ (User Management)

POZOR: Tyto příkazy vyžadují 'sudo' (administrátorská práva)!

PříkazVýznamPříklad
sudo adduser JMENOPřidá uživatele, vytvoří složku a zeptá se na heslo.sudo adduser karel
sudo passwd JMENOZmění nebo nastaví heslo danému uživateli.sudo passwd karel
sudo deluser --remove-home JMENOSmaže uživatele i s jeho domovskou složkou.sudo deluser --remove-home karel
sudo usermod -aG sudo JMENODá uživateli práva admina (přidá ho do sudo skupiny).sudo usermod -aG sudo karel
whoamiVypíše jméno aktuálně přihlášeného uživatele.whoami
groups JMENOUkáže, ve kterých všech skupinách je uživatel.groups karel

Tip: Příkaz id ti ukáže detailní číselné ID uživatele a skupin.

🔑 PRÁVA A PŘEPÍNÁNÍ (Sudo & Root)

V Linuxu je root všemocný uživatel. sudo ti dovolí si jeho moc na chvíli půjčit.

PříkazVýznamPříklad
sudo [příkaz]Spustí konkrétní příkaz jako administrátor.sudo apt update
sudo -iPřepne tě na roota. Změní se ti kurzor na #.sudo -i
sudo su -Podobné jako -i, přihlásí tě do root prostředí.sudo su -
exitVrátí tě z roota zpět k tvému uživateli.exit
sudo !!Spustí předchozí příkaz znovu, ale se sudem.sudo !!

Tip: Když jsi v "sudo -i", nemusíš už před každý příkaz psát slovo sudo.

🚩 ROZDÍL V PŘEPÍNÁNÍ (su vs su -)

PříkazCílová složkaProstředí (Environment)
sudo suZůstaneš tam, kde jsiPůvodní uživatel (může chybět cesta k admin nástrojům)
sudo su -/rootČisté prostředí roota (vše funguje správně)

Tip: Vždy raději používej verzi s pomlčkou -, předejdeš tím chybám typu "command not found".

🔐 OPRÁVNĚNÍ (Permissions)

Oprávnění vidíš po zadání ls -l. Příklad: -rwxr-xr--

Struktura (Zleva doprava):
TypVlastník (u)Skupina (g)Ostatní (o)
- (soubor) / d (složka)rwxr-xr--
Význam písmen a čísel:
PísmenoVýznamHodnotaPopis
rRead4Čtení obsahu / ls složky
wWrite2Zápis / Mazání / Úprava
xExecute1Spuštění skriptu / cd do složky
-Žádné0Bez přístupu
Změna oprávnění (chmod):
PříkazVýsledek
chmod +x skript.shPřidá právo spouštět (všem).
chmod 755 skript.shrwxr-xr-x (Vlastník vše, ostatní jen čtení/spouštění).
chmod 644 soubor.txtrw-r--r-- (Vlastník čtení/zápis, ostatní jen čtení).
chmod 700 tajne.shrwx------ (Přístup má POUZE vlastník).
Změna vlastníka (chown):
sudo chown uzivatel souborZmění majitele souboru.
sudo chown uzivatel:skupina souborZmění majitele i skupinu.
sudo chown -R uzivatel slozka/Změní majitele složky a všeho uvnitř (Rekurzivně).

💡 RYCHLÁ POMŮCKA PRO ČÍSLA (Součet)

Číslo vznikne součtem: 4 (r) + 2 (w) + 1 (x)

Tip: Vždy používej uvozovky "$PROMENNA", abys předešel chybám s mezerami.

🛠️ PRAKTICKÉ ÚLOHY (Řešení zadání z obrázku)

1. Správa uživatele 'petr' a logy

# Přidání uživatele
sudo adduser petr

# Vytvoření složky a souboru v jeho domovské složce
sudo mkdir /home/petr/zalohy
sudo touch /home/petr/zalohy/zalogovani.log

# Zápis obsahu /etc/passwd do logu
sudo cat /etc/passwd > /home/petr/zalohy/zalogovani.log

# Nastavení práv (vlastník čte/píše, ostatní nic)
sudo chmod 600 /home/petr/zalohy/zalogovani.log
sudo chown petr:petr /home/petr/zalohy/zalogovani.log

# Výpis procesů všech uživatelů do souboru
ps -ef > /home/petr/procesy.txt

2. Skript pro zálohování konfigurace

#!/bin/bash
# Vytvoření složky backup, pokud neexistuje
mkdir -p ~/backup

# Dynamický název souboru s datem
DATUM=$(date +%d-%m-%Y)
NAZEV="konfigurace_$DATUM.tar.bz2"

# Zálohování zadané složky (předpokládejme např. /etc/config)
tar -cjvf ~/backup/$NAZEV /cesta/ke/slozce

3. Přesun složky 'docs' k rootovi

mkdir ~/docs
sudo mv ~/docs /root/dokumenty

4. Vysvětlení atributů: d rw- rwx r--

5. Aliasy pro MS-DOS příkazy (trvalé nastavení)

Do souboru ~/.bashrc přidejte řádky:

alias copy='cp'
alias del='rm'

Poté aplikujte: source ~/.bashrc

7. Další užitečné příkazy Linuxu

  1. top : Interaktivní přehled vytížení systému a procesů v reálném čase.
  2. df -h : Zobrazení volného místa na discích v čitelném formátu.
  3. free -m : Informace o zaplnění operační paměti (RAM) v MB.
  4. history : Výpis historie naposledy použitých příkazů v terminálu.
  5. man [příkaz] : Zobrazení manuálové stránky (dokumentace) k danému příkazu.