Terminál · souborový systém · práva
(Méně důležité věci na konci se jedou jen při dostatku času)
Operační systém, který běžně nazýváme „Linux“, skládá více částí dohromady.
ls, cp, grep, shell a další.Distribuce je hotový operační systém postavený nad Linux kernelem.
Debian · Ubuntu · Linux Mint
Správce balíčků: apt
Fedora · Arch · openSUSE
dnf · pacman · zypper
„Dělej jednu věc a dělej ji dobře.“
bash; existují i zsh, fish a další.student@pc:~/projekty$student — aktuální uživatelpc — jméno počítače~/projekty — aktuální adresář$ — běžný uživatel; root mívá #ls -la /var/logls je příkaz-la jsou volby (options)/var/log je argument — zde cílová cestaman ls
ls --help
help cdman otevře manuál externího příkazu; ukončíš ho klávesou q.--help je rychlá nápověda.help funguje pro vestavěné příkazy shellu, třeba cd.history vypíše historii; Ctrl+R v ní hledá.pwd a ls.cd "Moje dokumenty".sudo čti celý příkaz před potvrzením hesla.whoami
idwhoami vypíše aktuální uživatelské jméno.id přidá UID, primární skupinu a další skupiny.hostname
uname -a
cat /etc/os-releasehostname — název počítače.uname -a — informace o jádře a architektuře./etc/os-release — informace o distribuci.date
caldate ukazuje aktuální datum a čas. cal zobrazí kalendář (pokud je nainstalovaný).
echo "Ahoj světe"
echo $HOME
echo $SHELLecho vypisuje text.$HOME je domovský adresář aktuálního uživatele.$SHELL ukazuje výchozí shell./
├── home/ domovské adresáře uživatelů
├── etc/ konfigurace systému a služeb
├── usr/ programy, knihovny a sdílená data
├── var/ proměnlivá data, například logy
├── tmp/ dočasné soubory
├── dev/ zařízení jako soubory
└── proc/ informace o procesech a jádře/ — kořen souborového systému, root./home/alice — domovský adresář běžného uživatele./root — domovský adresář administrátora root./var/log — systémové a aplikační logy./tmp — dočasná data; nespoléhej, že přežijí restart.Začíná lomítkem a vždy vede od kořene.
/home/student/poznamky.txtVychází z aktuálního adresáře.
poznamky.txt
../spolecne. # aktuální adresář
.. # nadřazený adresář
~ # domovský adresář
- # předchozí adresářNapříklad cd ~ tě vrátí domů a cd - přepne zpět na předchozí cestu.
pwd
# /home/student/projektypwd znamená print working directory a vypíše absolutní cestu aktuálního adresáře.
cd /var/log
cd dokumenty
cd ..
cd ~cd vede do domovského adresáře.Dokumenty ≠ dokumenty.ls
ls -l
ls -a
ls -lah-l podrobný výpis-a včetně skrytých položek-h čitelné velikosti-rw-r--r-- 1 student studenti 1240 9. srp poznamky.txtNázev začínající tečkou je běžně skrytý.
ls -a
.bashrc .config .sshNejde o bezpečnostní mechanismus — pouze se ve výchozím výpisu nezobrazuje.
mkdir projekt
mkdir -p projekt/src/js-p vytvoří i chybějící nadřazené adresáře a nevadí mu, když už existují.
touch poznamky.txt
touch index.html style.cssPokud soubor existuje, touch aktualizuje jeho časové razítko.
cat poznamky.txt
less /var/log/syslog
head -n 20 soubor.txt
tail -n 20 soubor.txtcat se hodí na krátké soubory.less umožní stránkování a hledání; ukončíš q.head/tail ukáží začátek/konec.tail -f /var/log/auth.logPrůběžně vypisuje nové řádky. Ukonči pomocí Ctrl+C.
nano poznamky.txt^ znamená Ctrl.nano nejpřívětivější.cp poznamky.txt zaloga.txt
cp -r projekt projekt-zaloha-r kopíruje adresář rekurzivně včetně jeho obsahu.
mv stary.txt novy.txt
mv poznamky.txt dokumenty/Stejný příkaz soubor přejmenuje, nebo ho přesune — záleží na cíli.
rmdir prazdna-slozka
rm soubor.txt
rm -r adresarPozor:rmběžně nemaže do koše. Příkazrm -rfpoužívej jen tehdy, když přesně víš, co a kde mažeš.
rm -i soubor.txt
rm -Iv adresar/-i se ptá před odstraněním.-I se zeptá jednou před hromadným/rekurzivním mazáním.-v vypisuje, co se děje.ls *.txt
cp obrazek?.png galerie/
rm -- *.tmp* znamená libovolný počet znaků.? znamená právě jeden znak.-- ukončí volby — hodí se pro názvy začínající pomlčkou.file dokument.docx
# Microsoft Word 2007+Linux nebere příponu jako autoritu; nástroj file zkoumá obsah a hlavičku souboru.
tree
du -sh projekt/
df -htree vypíše strom adresářů (nemusí být nainstalovaný).du -sh velikost konkrétní cesty.df -h volné místo na připojených filesystémech.find . -name "*.txt"
find ~/Dokumenty -type f
find . -type d -name "node_modules"find prochází strom adresářů. Tečka znamená „začni zde“.
grep "chyba" aplikace.log
grep -i "linux" poznamky.txt
grep -rn "TODO" projekt/-i ignoruje velikost písmen.-r hledá rekurzivně.-n přidá čísla řádků.ls -la | less
ps aux | grep nginx
cat pristupy.log | grep "404"Operátor | pošle standardní výstup prvního programu na standardní vstup dalšího.
echo "Ahoj" > pozdrav.txt
echo "Druhý řádek" >> pozdrav.txt
ls -la > vypis.txt> soubor vytvoří nebo přepíše.>> výstup přidá na konec souboru.> se vždy zastav: přepis je tichý.prikaz > vystup.txt 2> chyby.txt
prikaz > vse.txt 2>&1
prikaz 2>/dev/null1 je standardní výstup, 2 standardní chybový výstup.2>&1 spojí chyby s běžným výstupem./dev/null data zahodí.find . -type f -name "*.log" | sort > seznam-logu.txt
grep -ri "error" /var/log 2>/dev/null | lessMalé nástroje lze poskládat do užitečného pracovního postupu.
-rwxr-x--- 1 alice vyvojari 523 start.shalice je vlastník souboru.vyvojari je skupina.r čtení obsahuw změna obsahux spuštění jako programur výpis jmenw vytváření/mazání položekx průchod do adresáře- rwx r-x r--
│ │ └─ ostatní: čtení
│ └───── skupina: čtení, spuštění
└───────── vlastník: čtení, zápis, spuštěníPrvní znak určuje typ: - soubor, d adresář, l symbolický odkaz.
r = 4 w = 2 x = 1
7 = rwx 6 = rw- 5 = r-x 4 = r--
chmod 754 skript.shTrojice 754 znamená vlastník rwx, skupina r-x, ostatní r--.
chmod 644 poznamky.txt
chmod 755 skript.sh
chmod u+x skript.sh
chmod g-w soukromy.txtu user, g group, o others, a all.| Práva | Typické použití |
|---|---|
644 | běžný textový soubor |
600 | soukromý soubor, například SSH klíč |
755 | spustitelný skript nebo veřejný adresář |
700 | soukromý adresář / skript |
sudo chown alice soubor.txt
sudo chown alice:vyvojari soubor.txt
sudo chgrp vyvojari projekt/Vlastníka a skupinu mění obvykle jen root nebo vlastník podle pravidel systému.
sudo apt update
sudo systemctl restart nginxsudo spustí konkrétní příkaz s administrátorskými právy.umask
umask 022umask odebírá výchozí práva nově vytvářeným souborům a adresářům. Častá hodnota 022 vede typicky k souborům 644 a adresářům 755.
sudo obcházíš běžná omezení — proto je rizikové.Konec základní části — méně důležité věci se jedou jen při dostatku času
Méně důležité (jen při dostatku času)
touch "moje poznamky.txt"
cat 'moje poznamky.txt'
echo "Jsem v $HOME"
echo 'Jsem v $HOME'$HOME.echo "Cena je \$10"
echo 'Cena je $10'
touch soubor\ s\ mezerami.txtZpětné lomítko \ říká shellu, že následující znak nemá mít svůj speciální význam.
grep "Linux" poznamky.txt
echo $?0 znamená úspěch.mkdir projekt && cd projekt
test -f poznamky.txt && cat poznamky.txt
ping -c 1 example.com || echo "Nedostupné"&& spustí další příkaz jen po úspěchu.|| spustí další příkaz při neúspěchu.jmeno="Ada"
echo "Ahoj, $jmeno"
export EDITOR=nano
printenv | less=.export předá proměnnou i programům spouštěným ze shellu.alias ll='ls -lah'
alias ..='cd ..'
aliasAlias je zkratka v aktuálním shellu. Trvalé aliasy se obvykle zapisují do ~/.bashrc nebo konfigurace používaného shellu.
sleep 60 &
jobs
fg
ps aux | less& pustí úlohu na pozadí.jobs ukazuje úlohy aktuálního shellu.fg vrátí úlohu do popředí.ln -s /var/log moje-logy
ls -l moje-logy
cat moje-logy/syslogSymbolický odkaz je speciální soubor ukazující na jinou cestu. Poznáš ho podle l na začátku výpisu ls -l.
ln puvodni.txt druhe-jmeno.txt
ls -li puvodni.txt druhe-jmeno.txtPevný odkaz je další jméno pro stejná data na disku. Nejde vytvořit přes filesystémy ani na adresáře.
mount | less
findmnt
lsblk
df -hTlsblk ukáže bloková zařízení.findmnt zobrazí strom připojení.ls -l /dev/null /dev/zero /dev/random/dev/null zahazuje data./dev/zero poskytuje nulové bajty./dev/random poskytuje náhodná data.cat /proc/cpuinfo | less
cat /proc/meminfo | head
ls /sysJádro přes tyto adresáře zpřístupňuje informace o procesech, paměti, zařízeních a systému.
tar -czf zaloha.tar.gz projekt/
tar -tzf zaloha.tar.gz
tar -xzf zaloha.tar.gz-c vytvoří archiv, -x rozbalí, -t vypíše obsah.-z použije gzip, -f určuje název souboru.| Potřeba | Nástroj |
|---|---|
| Najít podle názvu | find |
| Najít v obsahu | grep |
| Velikost adresáře | du -sh |
| Volné místo | df -h |
| Typ souboru | file |
sort jmena.txt
sort jmena.txt | uniq
sort jmena.txt | uniq -c
wc -l jmena.txtsort řadí řádky.uniq odstraní sousední duplicity.wc -l počítá řádky.cut -d: -f1 /etc/passwd
echo "Linux" | tr '[:upper:]' '[:lower:]'
cut -c1-10 poznamky.txtcut vybírá sloupce nebo znaky; tr nahrazuje či maže znaky.
sed 's/staré/nové/g' text.txt
sed -n '1,10p' text.txt
sed -i.bak 's/http:/https:/g' konfigurace.txt-i se změněný text jen vypíše.-i.bak upraví soubor a nejdříve vytvoří zálohu.find . -name "*.tmp" -print0 | xargs -0 rm -i
find . -type f -print0 | xargs -0 filexargs převádí řádky ze vstupu na argumenty příkazu. Kombinace -print0 a -0 bezpečně zvládne mezery v názvech.
grep -r "TODO" projekt/
# místo: cat soubor | grep TODOMnoho programů už umí číst soubor přímo. Zbytečná roura s cat zhoršuje čitelnost.
| Právo | Na adresáři znamená |
|---|---|
r | vypsat jména položek |
w | přidávat, přejmenovat a mazat položky |
x | vstoupit do adresáře a přistupovat přes jméno |
Proto se soubor obvykle nemaže podle svých práv, ale podle práv jeho nadřazeného adresáře.
ls -ld /tmp
# drwxrwxrwt ... /tmp
sudo chmod +t sdilene/Sticky bit na sdíleném adresáři dovolí uživatelům mazat jen jejich vlastní položky. Typický příklad je /tmp.
ls -l /usr/bin/passwd
# -rwsr-xr-x ... /usr/bin/passwdgetfacl sdilene/
setfacl -m u:alice:rw soubor.txtAccess Control Lists přidávají jemnější pravidla než vlastník/skupina/ostatní. Často se používají na sdílených úložištích.
ls -ld cesta
namei -l cesta/k/souboru
stat soubor.txtls -ld ukáže práva samotného adresáře.namei -l ukáže práva každé části cesty.stat vypíše podrobná metadata.mkdir -p ~/linux-cviceni/{data,zaloha}
cd ~/linux-cviceni
pwd
ls -laVytvoř adresář cvičení se dvěma podsložkami a ověř, kde jsi.
echo "Úvod do Linuxu" > data/poznamky.txt
echo "Druhý řádek" >> data/poznamky.txt
cat data/poznamky.txtVšimni si rozdílu mezi > a >>.
cp data/poznamky.txt zaloha/
mv data/poznamky.txt data/linux.txt
find . -name "*.txt"
grep -n "Linux" data/linux.txtls -l data/linux.txt
chmod 600 data/linux.txt
ls -l data/linux.txtPopiš, co znamená výsledek -rw-------.
> a co >>?chmod 754?rm -rf nebezpečné?Další krok: pravidelně zkoušet příkazy v bezpečném pracovním adresáři.