Linux a Terminál
Linux
- Jedná se o pouhé jádro systému, neboli kernel (= low level jádro systému, které nám umožnuje komunikovat s hardwarem), který nám zprostředkovává rozhraní mezi hardwarem a dalšími programy a poskytuje nad nimi úroveň abstrakce.
- Vytvořil ho Linus Torvalds.
- Dále má na starosti správu dostupných prostředků (paměť, disky...) a procesů.
- Na jádru se následně staví různé programy a utilitity
GNU
- Zkratka pro GNU's Not Unix, bylo vytvořeno Richardem Stallmanem.
- Ve většině distribucích jsou k samotnému jádru (kernelu) dodány GNU utility, init systémy (systemd, openrc, ...), bootloadery (grub, systemd-boot, ...), window servery jako xorg nebo wayland, desktop environmenty (DE - GNOME, XFCE, KDE, ...), window managery (WM - Sway, Hyprland...) a programy, které používáme na denní bázi (prohlížec, textový editor, přehrávač hudby a videa, ...).
- Tyto komponenty jde nahradit za jiné, podle Vašeho vkusu a uvážení (- jsou tím, co spolutvoří výsledný operační systém/distribuci, ale nejsou pevně dané)
Jak vznikl Linux?
- Jádro linux vzniklo jako projekt Linuse Torvaldse, který se po vzoru systému MINIX rozhodl napsat vlastní UNIXové jádro Linux (Linus + UNIX).
- Linux byl jeho vysokoškolský projekt a Linus ani nepředpokládal, že by se jeho jádro mohlo nějak více uchytit.
- Původně se Linux měl jmenovat Freax (Free + freak + x [jako uniX]), ale když jeho spolupracovník viděl tento název na jejich FTP server, tak se rozhodl ho přejmenovat na Linux.
- V roce 1984 se GNU snažilo pracovat na kompletním Unix-like systému. Když Linus přišel se svým jádrem byl GNU systém skoro dokončen - až právě na jádro (the GNU hurd).
- Přirozeně, uživatelé hledali software, který k novému jádru přidružit, a GNU utility byli "nejvhodnější".
Proč zrovna linux?
- Používáme, protože je Open-source a lze ho lehce upravit, tudíž každý systém může fungovat uplně jinak než ten nějaký jiný - jde čistě o preferenci uživatele systému, dále nám umožňuje dělat věci co bychom nemohli udělat na Windows nebo MacOS.
- Je kompatibilní skoro s každým hardwarem a hlavně funguje dobře na starších zařízeních, ve většině případů lépe jak Windows.
Filozofie linuxu
- Vše je soubor – uživatel může jednoduše systém přenastavit, dokonce i disky a procesy jsou reprezentovány pomocí souborů.
- Open-source - kód je veřejně dostupný pro všechny, každý si ho může přečíst a vidět jak celý projekt funguje.
Linux Filesystem
/ # root, Počátek disku
├── bin/ # Základní spustitelné programy
├── dev/ # Všechny disky, serial porty, perifierie a mnoho dalšího
├── etc/ # Konfigurační soubory systému, služeb a programů
├── usr/ # Uživatelská data a programy
│ ├── bin/ # Základní spustitelné programy (/bin odkazuje na /usr/bin)
│ ├── man/ # Dokumentace k programům
│ ├── lib/ # Různé knihovny
│ ├── local/ # Lokálně nainstalované programy a jejich data
│ └── share/ # Sdílená data programů, dokumentace a spoustu dalšího
├── home/ # Domácí složka, kde jsou uživatelé
├── lib/ # Systémové knihovny
├── sbin/ # Systémové spustitelné programy
├── tmp/ # Dočasné soubory, které se po restartu vymaží
└── var/ # Ukládání promněnlivých dat
├── log/ # Různé logy systému a služeb
├── lock/ # Prevence konfilktů mezi programy
└── tmp/ # Dočasné soubory
Jak fungují soubory v Linuxu?
Rozlišování soborů
- Ve Windows se typy souborů určují podle přípon (.png, .jpg...).
- V Unixových systémech se typ souboru určí pomocí headeru, což je pár prvních bajtů v souboru.
- V headeru souboru uložené tzv. magic numbers, podle kterých můžeme určit typ souboru.
Pohybování po systému
- Linuxu máme dva typy cest relativní a absolutní, všechny příkazy berou oba typy cest.
- Absolutní cesta = celá cesta z root adresáře.
- Relativní cesta = cesta z aktuálního pracovního/specificky definovaného (~ pro /home/, - pro předchozí cestu kde jsme byli...) adresáře do cílového adresáře
Opravnění souborů
- V Linuxu se oprávnění souborů liší od Windows
- Určujeme oprávnění pro vlastníka, skupinu a ostatní
- Pro každého lze určit 3 práva:
- r = číst (read)
- w = psát (write)
- x = spustit (execute)
- Tyto oprávnění můžeme zapsat pomocí čísel:
- 4 = číst (read)
- 2 = psát (write)
- 1 = spustit (execute)
Tyto čísla se nakonec sčítají > vyjde finální číslo, např. 6 = číst, psát ale ne spustit- Na zapamatování, znám krásnou báseň od našeho učitele kybernetiky:
"r,w,x
4,2,1" - Nathan
Distribuce
- Každý kdo někdy používal Linux pozná některé známé distribuce jako Ubuntu, Debian nebo Arch. Existují stovky různých distribucí a každý si najde vlastní, která mu sedne.
- Vzhledem k tomu, že Linux je pouze jádro a instalace softwaru je náročná pro uživatele, využíváme tzv. package managery (apt, pacman, dnf).
- Package managery se liší podle distribuce, nedají se v distribuci změnit, na rozdíl od ostatních věcí v distribuci.
- Z tohoto důvodu je potřeba si vybrat distribuci, která se nám líbí. (nebo kvůli sociálnímu statutu, např. arch uživatelé)
- Distribuce jsou verze Linuxu s předinstalovanými a přednastavenými nástroji a aplikacemi.
Instalace
- Pokud nechceme instalovat Linux, nebo jiný operační systém přímo na náš počítač, je možné ho virtualizovat, k tomu nám pomohou programy jako je VMware a VirtualBox.
- Instalace je rozdílná podle distribuce, kterou jsme si vybrali.
- Pokud budeme instalovat systém s automatizovaným instalačním procesem (cokoliv kromě Arch Linuxu apod.), tak se nás bude ptát na následující věci:
- Uživatele a jejich hesla
- Rozdělení disku na oddíly – swap, root, boot
- Swap = oddíl na disku, který se používá při zaplnění fyzické paměti RAM, ve windows známé jako pagefile
Terminál
- Terminál je program (ve windows známý jako command prompt), ve kterém spouštíme shell.
- Shell je interpreter příkazů pro kernel, zvládne udělat všechno co jde udělat skrze normální aplikaci.
- V terminálu můžeme používat shell redirection, což je způsob, jak v terminálu zacházet s daty
Piping
Při pipingu se používá operátor |, který přesměruje výstup jednoho příkazu do jiného
Writing
Pokud chceme zapsat výstup příkazu do souboru, můžeme použít operátor > a za něj napsat jméno souboru. Pokud už soubor existuje, přepíše ho.
Appending
Dělá to samé jako writing, ale když použijete operátor >> se jménem souboru, který už existuje, tak výstup přidá na konec existu
Příkazy v terminálu
- Jestli chcete používat Linux, tak je dobré znát nějaké základní příkazy, které budete používat na denní bázi.
- K příkazům můžeme přidat i argumenty (v <>), které přidávají doplňující informaci a nastavení příkazu.
Ukázky příkazů
whoami
- whoami nám řekne za jakého uživatele jsme přihlášeni
- Ukázka:
student@ssps:~$ whoami student student@ssps:~$
id
- id nám ukáže ID uživatele a skupin, kterých je členem
- Ukázka:
student@ssps:~$ id uid=1000(student) gid=1000(student) groups=1000(student),998(wheel) student@ssps:~$
uname
- uname neboli unix name, nám vypíše systémové údaje o našem stroji
- Argumenty:
- -a (všechno) = vypíše nám všechny možné informace o systému
- -n (hostname) = vypíše nám naše síťovém jméno počítače
- -v (verze kernelu) = vypíše nám verzi kernelu
- ...
- Ukázka:
student@ssps:~$ uname -a Linux KempyMachine 6.15.2-arch1-2 #1 SMP PREEMPT_DYNAMIC Tue, 10 Jun 2025 20:00:00 +0000 x86_64 GNU/Linux student@ssps:~$ ``
cd <cílový adresář>
- cd neboli change directory je jeden z nejpoužívanějších příkazů, slouží k přesuntí z adresáře do jiného adresáře
- Ukázka:
student@ssps:~$ cd Desktop student@ssps:~/Desktop$
ls
- ls neboli list, nám vypíše soubory a adresáře v momentálním adresáři
- Nepovinné argumenty:
- -l (long listing) = vypíše více informací o souborech a adresářích
- -a (all) = vypíše všechny soubory a adresáře (i skryté)
- ...
- Ukázka:
student@ssps:~/Pictures$ ls -la total 15547 drwxr-xr-x 5 student student 4096 feb 6 15:12 . drwx--x--- 15 student student 4096 feb 13 16:41 .. -rwx------ 1 student student 2506 feb 24 23:36 .cat.jpg -rwxrwx--- 1 student student 4849 feb 24 23:36 dog.png student@ssps:~/Pictures$
mkdir <jméno složky>
- mkdir neboli make directory, nám vytvoří nový adresář
- Ukázka:
student@ssps:~$ mkdir Adresar1 student@ssps:~$ cd Adresar1 student@ssps:~/Adresar1$
rmdir <jméno složky>
- rmdir neboli remove directory, nám vymaže prázdný adresář
- Ukázka:
student@ssps:~$ rmdir Adresar1 student@ssps:~$ cd Adresar1 cd: no such file or directory: Adresar1 student@ssps:~$
touch <soubor>
- touch nám vytvoří nový soubor
- využívá se na upravování metadat u souborů, jako třeba pro změnu času poslední úpravy souboru
cat <soubor>
- cat neboli concatenate, nám vypíše obsah souboru
- Ukázka:
student@ssps:~$ cat soubor.txt Ahoj student@ssps:~$
cp <původní místo> <cílové místo>
- cp neboli copy, nám zkopíruje soubor nebo adresář
- můžeme použít switch -r aby nám rekurzivně zkopíroval adresář, to znamená že nám zkopíruje soubory a adresáře v něm
- Ukázka:
student@ssps:~$ ls soubor.txt student@ssps:~$ cp soubor.txt soubor1.txt student@ssps:~$ ls soubor.txt soubor1.txt student@ssps:~$
mv <původní místo> <cílové místo>
- mv neboli move, nám přesune soubor nebo adresář
- lze použít pro přejmenování adresářů nebo souborů
- Ukázka:
student@ssps:~$ ls adreasrr student@ssps:~$ mv adreasrr adresar student@ssps:~$ ls adresar student@ssps:~$
rm <soubor/adresář>
- rm neboli remove, nám vymaže soubory nebo adresáře
- používáme hlavně switch -rf, který nám smaže celý adresář s věcmi uvnitř něj
- Ukázka:
student@ssps:~$ ls MyLife student@ssps:~$ rm -rf MyLife/ student@ssps:~$ ls student@ssps:~$
tree
- Vypíše rozvětvení adresářů a souborů v nich
- Ukázka:
student@ssps:~$ tree ├── Downloads/ ├── Pictures/ └── Public/ ├── obrazek.jpg └── textak.txt 3 directories, 2 files student@ssps:~$
pwd
- pwd neboli print working directory, nám zobrazí absolutní cestu aktuálního adresáře
- Ukázka:
student@ssps:~$ pwd /home/student/ student@ssps:~$
vim/nano/micro (textové editory)
- Textové editory nám pomáhají upravovat čisté UTF8/ASCII soubory, mají speciální funkce, podle toho, který využijeme
- Nano je nejjednodušší pro uživatele na pochopení
- Vim je naopak težší, ale jde si v něm více vyhrát a upravit si ho
- Ukázka:
První řádek Třetí řádek :) ~ ~ ~ ~ ~ : 0,0-1 All
grep
- grep neboli global regular expression print, nám vyhledá specifický string v souboru
- Argumenty:
- -r (rekurzivní) = vyhledá i v podsložkách
- -i (ignoruje kapitalizaci) = ignoruje, zda je písmeno velké, či malé
- -E (regulérní exprese - regex) = pomocí tohoto argumentu nemusíme hledat string, ale regex
- ...
sudo <příkaz>
- sudo neboli superuser do spustí příkaz jako privilegovaný uživatel root, který má právo na systému udělat cokoliv
- Ukázka: Spuštění příkazu jako neprivilegovaný uživatel
student@ssps:~$ apt update Reading package lists... Done E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied) E: Unable to lock directory /var/lib/apt/lists/ W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied) W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)V ukázce vidíte, že příkaz na aktualizaci repozitářů selhal, protože uživatel student na něj nemá oprávnění.
- Ukázka: Spuštění příkazu s použitím sudo
student@ssps:~$ sudo apt update [sudo] password for student: Hit:1 http://security.ubuntu.com/ubuntu jammy-security InRelease Hit:2 http://archive.ubuntu.com/ubuntu jammy InRelease Hit:3 http://packages.microsoft.com/repos/code stable InRelease Hit:4 http://cz.archive.ubuntu.com/ubuntu jammy InReleaseNaopak při použití sudo příkaz fungoval, protože byl spuštěn jako uživatel root
chmod
- chmod neboli change mode, nám změní oprávnění adresáře nebo souboru
- Příklady použití:
- chmod 764 soubor -> nastaví práva rwx pro vlastníka, rw- pro vlastníkovu skupinu a r-- pro ostatní
- chmod u+rwx,g+rw,o+r soubor -> vykoná totéž jako předchozí příklad
chown
- chown neboli change ownership, nám změní vlastníka souboru/adresáře
wget
- Používá se k nahrávání nebo stahování dat z nebo na server
- Zabudované rekurzivní stahování
- Je vysoce konfigurovatelný
curl
- Stahuje soubory z internetu
- Oproti wget podporuje více protokolů, avšak je méně konfigurovatelnější
file <soubor>
- Používá magic numbers na zjištění typu souboru
- Ukázka:
student@ssps:~$ file word-dokument.docx word-dokument.docx: Microsoft Word 2007+ student@ssps:~$
top/htop/btop
- Systémové monitory, ukazují nám vizuální využítí systému