4. Tematický přehled vybraných příkazů

Autor sekce: Jiří Sedláček <sedlacek@vse.cz>

Uvádí se, že velké distribuce jako je Debian (Ubuntu, Linux Mint, Red Hat, Fedora ap.) mívají typicky nainstalováno více než 1000 různých příkazů a programů, určených pro práci z příkazové řádky. Nikdo si samozřejmě nepamatuje takové množství příkazů, natož všechny jejich parametry a přepínače. Následující stránky proto uvádí poměrně obsáhlý, ale zdaleka ne „úplný“ (žádný přehled nemůže být úplný) tematicky uspořádaný přehled příkazů formou přehledných tabulek.

  • Pro písemku pátý týden (třetí test) budete potřebovat jen příkazy, uvedené v prezentacích. Další příkazy však využijete na pozdějších cvičeních, během studia a v praxi.

  • Kromě několika příkazů zde neuvádím konkrétní příklady ani nejdůležitější parametry. Předpokládá se, že tyto tabulky použijete k rychlému nalezení vhodného příkazu a se znalostí příkazu již snadno dohledáte jeho použití (prezentace, man/info, na Internetu atd.)

  • I některé poměrně běžně používané příkazy (např. traceroute) nebývají standardně nainstalovány. Na bis.vse.cz pochopitelně instalovat nemůžete, na bis999.vse.cz ano.

  • Poměrně dost zde uvedených příkazů vyžaduje zvýšená práva (sudo příkaz …). Zde neuvádím a na bis.vse.cz opět nemůžete, na bis999.vse.cz ano.

  • Naprostá většina zde uvedených příkazů by měla být k dispozici ve všech běžných distribucích (např. na Vašem domácím PC, byť může být třeba je doinstalovat: viz výše), některé se liší podle distribuce (zejména příkazy pro práci s balíčky).

  • Některé příkazy jsou pro rychlé vyhledání uvedeny ve více kategoriích a opakuji zde i příkazy uvedené v předchozích kapitolách.

4.1. Jednoduché příkazy (převážně bez parametrů)

Příkaz

Význam

pwd

vypíše aktuální adresář

hostname

vypíše jméno počítače (hostname -i vypíše IP adresu počítače)

whoami

jméno uživatele (viz též obdobné příkazy dále)

uname

uname vypíše „Linux“, uname -a zobrazí podrobnosti

date

zobrazí datum a čas

who a w

vypíše seznam přihlášených uživatelů (dva různé příkazy)

uptime

doba od posledního startu, počet přihlášených uživatelů,

set

vypíše všechny proměnné v interpretu příkazů

env

vypíše exportované proměnné prostředí

echo [STRING]

vypíše text na standardní výstup (obrazovku)

echo $JMENO shell nejdříve nahradí $JMENO obsahem konkrétní proměnné a poté zavolá echo, např. echo $TERM

history

history (bez parametrů) vypíše historii zadaných příkazů, history 20 vypíše 20 posledních příkazů

clear

smaže obsah obrazovky terminálu

reset

resetuje nastavení terminálu (použijte, když clear nestačilo)

4.2. Příkaz cat

Příklady cat

(základní příklady vč. použití >, >> a | viz Prezentace)

cat -n soubor.txt cat -b soubor.txt

na výstupu řádky očísluje (včetně prázdných řádků) na výstupu řádky očísluje (kromě prázdných řádků)

cat -T soubor.txt cat -A soubor.txt

zobrazí znaky Tab jako viditelné znaky zobrazí všechny speciální (řídící) znaky

cat s1 s2 > spoj.txt

spojí dva/více souborů (lze spojit i binární soubory: viz Pozn. 1)

cat kus.00{1,2,3,4}>spoj.txt cat kus.0*>spoj.txt

spojí (v našem příkladu) 4 soubory

spojí všechny soubory vyhovující zástupným znakům (např. 55)

Poznámky:

  1. Dává smysl např. pro komprimovaný soubor, který byl pro velkou velikost rozdělen, např. cat file.rar.001 file.rar.002 file.rar.003 file.rar.004 > velkysoubor.rar

    poté příkazem unrar soubor dekomprimuji

  2. Cat se často používá též pro zobrazení různých informací o PC z adresáře proc (viz dále).

4.3. Příkaz split

Příkaz split (jak napovídá již jeho název) je opak příkazu cat (ve variantě pro spojování souborů). Soubor lze rozdělit několika způsoby: po určitém počtu řádek (standardně 1000 řádek, poslední kus samozřejmě typicky bude kratší), po určitém počtů bytes (kilobytes atd.), na zvolený počet souborů (a ještě několik podvariant). Rozdělené soubory budou pojmenovány PREFIXaa, PREFIXab, PREFIXac atd. (lze změnit na PREFIX01, PREFIX02 atd.). Pokud žádný prefix nezadáte, soubory se budou jmenovat xaa, xab, xac atd. (default prefix je malé „x“).

Příkaz split

Vysvětlení

split velkysoub.txt

zadáno jen jméno souboru, který se má rozdělit, pro vše ostatní se použijí implicitní hodnoty: soubor bude rozdělen po 1000 řádcích a výstupní soubory se budou jmenovat xaa, xab, … xan

split -l 500 velkysoub.txt PRE

rozdělí se po 500 řádcích, jména PREaa, PREab …

split -l 500 -d -a 3 velkysoub kus.

rozdělí se po 500 řádcích, bude se číslovat (-d) a čísla budou trojmístná: zde tedy kus.001 kus.002 …

split -b 1000 velkysoub.txt split -b 10k velkysoub.txt

bude se rozdělovat přesně po 1000 bytes (i uprostřed řádku) bude se rozdělovat přesně po 10 KB (i uprostřed řádku)

split -C 1000 velkysoub.txt

bude se rozdělovat nejvýše po 1000 bytes (snaží se rozdělit na konci řádků)

split -n 10 velkysoub.txt

rozdělí na 10 souborů pokud možno stejné velikosti (rozdělí i uprostřed řádku)

split -n l/10 velkysoub.txt

rozdělí na 10 souborů přibližně stejné velikosti, ale snaží se rozdělit na konci řádku (parametr je „malé L“/10): lines

Poznámka: split -b nebo split -n má smysl i pro binární soubory

Existuje i příkaz join, ale ten má specifické použití jen pro spojování setříděných textových souborů podle určitého pole. Pro spojování textových i binárních souborů rozdělených příkazem split použijte příkaz cat, tak jak uvedeno v příkladech výše. (Dále existuje ještě příkaz csplit.)

4.4. Další základní příkazy pro práci se soubory a adresáři

Skupina příkazů

Příkazy (cat: viz výše)

výpis soubor a adresářů

ls (ls -l, ls -la, ls -li, ls -lh, ls -r, ls -R a další)

pager

less (případně more): less soub.txt nebo jiný_příkaz | less

filtry

head, tail, wc, sort, uniq, cut, grep

zákl. operace se soubory

cp, mv, rm

informace/jiné operace

file (zobrazí typ souboru), touch, stat, diff, comm: viz Poznámky

hard/symbolic links

ln, ln -s (odstranění rm jako běžné soubory)

úprava CR/LF

todos, fromdos nebo unix2dos, dos2unix (dle distribuce, doinstalovat)

archivace/komprimace tar -czf archiv.tar.gz dir tar -xzf archiv.tar.gz

tar, gzip, bzip2, bunzip2, zip, unzip, unrar a další

vytvořit gzip komprimovaný tar (zde adresáře dir, příp. skup. souborů) rozbalit (dekomprimovat) gzip tar

(-c je create -x extract, z = gzip, nahraďte J pro xz komprimaci)

operace s adresáři

pwd, cd (cd ~, cd, cd .., cd -, cd /), mkdir, rmdir, mv

vyhledávání příkazů/programů

which: vyhledá a zobrazí adresář, kde daný program, viz Poznámky whereis: zobrazí i související soubory (např. manuálové stránky) type: zobrazí informace o typu příkazu: viz Poznámky

vyhledávání souborů

find: „tradiční“ vyhledávání (může trvat dlouho), mnoho parametrů locate (resp. mlocate): rychlé vyhledávání využívající index (databázi) souborů, podmínkou vytvoření a pravidelná aktualizace této databáze

grep: kromě parametrů uvedených v prezentaci jsou užitečné např. -c (count) nebo -L (opak -l) touch: příkaz má dvoje různé využití (a) změní datum a čas zvolených existujících souborů (mtime nebo atime nebo oboje) na aktuální čas, zvolený čas (více způsobů) nebo podle jiného souboru

(b) pro rychlé vytvoření souborů: vytvoří jeden nebo více souborů s nulovou délkou

stat: méně známý, ale užitečný příkaz, zobrazí podrobné informace o zvoleném souboru/souborech nebo adresáři: název, jméno, bloky. inode, odkazy, typ souboru, přístupová práva (osmičkově

i symbolicky), Uid, Gid, ctime, mtime, atime

Hard/symbolic links: symbolické odkazy umožňují více než hard links: lze vytvořit odkaz na adresář, na soubor na jiném oddílu. Symbolický odkaz na neexistující soubor může být výhoda např. pro opakovaně vytvářený a rušený soubor. Naopak (vaší nepozorností) lze mít mnoho osiřelých odkazů na již dávno neexistující soubory.

tar: na Internetu je ještě řada příkladů použití tar, kde parametry (přepínače) jsou bez pomlčky, ale současné verze podporují standardní jednu pomlčku pro krátké a dvě pomlčky pro dlouhé přepínače which: např. which grep zobrazí /bin/grep (většina základních utilit je v adresáři /bin), zatímco

which traceroute v mém případě zobrazí /usr/bin/traceroute

pokud by náhodou existovalo více verzí stejného programu, rozhoduje pořadí adresářů v proměnné

$PATH: může to být důvod, proč se spouští verze, která se chová jinak než čekáte

whereis: whereis grep zobrazí v mém případě grep: /bin/grep /usr/share/man/man1/grep.1.gz použití příkazu which i příkazu whereis je zavádějící pro interní příkazy, např. v mém případě

which pwd vypíše /bin/pwd ačkoli je to interní příkaz bash, proto využijte též příkaz type type cd pwd if ls cat v mém případě vypíše následující

cd is a shell builtin (= interní příkaz) pwd is a shell builtin (= interní příkaz)

if is a shell keyword (klíčové slovo používané ve skriptech = také interní příkaz) ls je externí příkaz, ale v mém případě: is aliased to … (viz aliasy dále)

cat is /bin/cat (= externí příkaz)

tail se kromě kombinace s jinými příkazy často používá též k průběžnému sledování logovacích a jiných měnících se souborů, např. se průběžně vypisuje 10 (nebo -n číslo) posledních řádků

tail -f /var/log/syslog

4.5. Základní informace o uživatelích, systému a hardware

Skupina příkazů

Příkazy a vysvětlivky

info o uživateli/lích

whoami (já), who am i (já podrobněji), who (přihlášení uživatelé), w (trochu jiné infomace podrobněji), finger (viz Poznámka).

last -n: zobrazí n posledních přihlášení

last -n username: zobrazí n posledních přihlášení daného uživatele

komunikace s ostatními

write username, mesg [y|n]: povolit/zakázat příjem zpráv od ostatních

zákl. info o systému

hostname (hostname -i), uname (uname -r, uname -a), uptime last reboot: zobrazí boot/reboot historii

info pamět, disk, virtuální pamět, I/O, vybrané adresáře

free (free -h, free -m). df (df -h, df -h /dev/sda), viz též příkaz top níže vmstat, iostat

du (du -h, du -k, du -m, du -ms): disk usage kolik místa zabírá aktuální či zvolený adresář (včetně podadresářů: každý nebo jen součet)

info o systému z adresáře /proc

(i další zde neuvedené)

cat /proc/cpuinfo podrobnosti o procesoru cat /proc/meminfo podrobnosti o paměti cat /proc/version Linux kernel verze

Skupina příkazů

Příkazy a vysvětlivky

podrobnější informace o hardware

lshw

lspci, lsusb: pro oba příkazy -tv nebo -tvv jako tree a podrobněji dmidecode: info o hw komponentách a BIOSu

podrobnější informace o hardware: disky

hdparm -i /dev/sda zobrazí (-I podrobněji) informace o disku, další přepínače umožňují různé testy (např. -tT) a také nastavení (opatrně!)

finger: dříve se běžně využíval, dnes obvykle bývá z bezpečnostních důvodu zakázán

4.6. Zobrazení a nastavení práv (bez ACL)

Skupina příkazů

Příkazy a vysvětlivky

zobrazení práv souborů a adresářů

ls -l

ls -ld jméno_adresáře

nastavení práv souborů

chmod (symbolické argumenty nebo osmičková čísla: viz Prezentace) chown změní vlastníka souboru nebo adresáře

chgrp změní skupinu pro soubor nebo adresáře

zobrazení pro uživatele

id zobrazí uid, gid a groups pro aktivního uživatele id username totéž pro jiného uživatele

(dočasné) zvýšení

sudo (nastavení v /etc/sudoers ev. LDAP), su grafické programy: gksudo, gksu

správa uživatelů/skupin viz Poznámka

adduser (příp. useradd), addgroup (příp. groupadd) usermod, userdel, groupdel

Poznámka: v některých distribucích příkazy adduser nebo addgroup vůbec neexistují, případně jsou jen odkazem na příkazy useradd resp. groupadd. Pokud skutečně existují, je jejich použití pro běžného uživatele snazší (příkaz postupně na jednotlivé řádky vypisuje, jaké údaje máte doplnit).

Naopak „složitější“ příkazy useradd, groupadd mohou být vhodnější pro dávkové přidávání většího počtu uživatelů nebo skupin skriptem.

4.7. Procesy a jejich monitoring

Příkaz/příkazy

Vysvětlení

top, htop (a další modifikace)

Zobrazí základní informace o systému a tabulkový aktualizovaný (standardně 3 s) přehled procesů seřazený dle spotřeby zdrojů.

ps

Zobrazí procesy pro daného/všechny uživatele/určitý program.

Více než 80 částečně se překrývajících přepínačů! (GNU, Unix a BSD styl). BSD styl přepínače jsou bez pomlčky! V zásadě stačí přepínače z prezentace, užitečný ještě -w (wide), máte-li hodně sloupců.

pstree

Vypíše procesy ve formě stromu.

(ps f, ps f -e, ps f -ef: bez pomlčky! též vypíše určitou formu stromu)

kill killall

Ukončí proces s číslem PID (default signál TERM, další prezentace). Ukončí všechny procesy vyhovující zadanému jménu (řetězci).

Ctrl+C Ctrl+Z

Procesu se pošle signál TERM (ukončení, již nebude v seznamu). Zastaví běžící aplikaci a vrátí prompt (bude v seznamu procesů).

Příkaz/příkazy

Vysvětlení

příkaz & bg

fg, fg n

Job vyvolaný daným příkazem bude spuštěn na pozadí. (Dříve spuštěný a zastavený) job bude přesunut do pozadí.

Poslední (nebo zadaný) job bude přesunut z pozadí do popředí.

jobs

Zobrazí jobs: (dle přepínače) zastavené/aktivní//změna stavu.

nice

nice -n 15 find

renice

Nice bez parametrů zobrazí prioritu shellu (obvykle = 0).

Spustit (déletrvající) příkaz s nižší/vyšší prioritou: viz Poznámky.

Zvýšit/snížit prioritu již běžícího procesu

(lze též v programu top, volba r, zadat číslo procesu, nová hodnota).

nice: priorita je číslo od nejvyšší priority –20 do +19 (nejnižší priorita), pouze uživatel s právy root může zadávat záporné hodnoty, v příkladu je příkaz find spuštěn s velmi nízkou prioritou, vyhledávání souborů větších než zadaná velikost bude trvat déle, ale systém bude méně zatěžován

nice -n 15 find / -size +10000k

renice: zadané číslo se přičítá nebo odčítá k aktuální hodnotě priority, např. pokud výše uvedený příklad pro příkaz find nyní běží jako proces 10258 s (velmi nízkou) prioritou 15, pak následující příkaz tuto prioritu zvýší z 15 na (stále poměrně nízkou) hodnotu 10. Přepínačem -u username lze zvýšit nebo snížit prioritu všem procesům daného uživatele.

renice -n -5 10258 # zvýší prioritu o 5 (v našem příkladě z 15 na 10)

4.8. Práce s balíčky a repozitáři

Příkazy pro práci s balíčky a repozitáři patří mezi ty, které se nejvíce liší podle toho, jakou používáte distribuci resp. jaký formát balíčků používá vaše distribuce. Zjednodušeně řečeno existují dva hlavní formáty balíčků:

  • .deb: první verze formátu vyvinuta v rámci Debianu (odtud i název) zhruba do roku 1995. Deb balíčky jsou používány distribucemi Debian, Ubuntu (Lubuntu, Xubuntu, Kubuntu , Edubuntu, Ubuntu Studio ad.), Linux Mint a mnoha desítkami dalších distribucí, které přímo nebo nepřímo vycházejí z Debianu nebo Ubuntu (např. Kali Linux: používán pro penetrační testování a forenzní účely, Zorin OS, elementary OS, Peppermint OS, antiX, Bodhi Linux, Devuan, Knoppix, Skolelinux (Debian Edu), SolydXK, siduction, AV Linux, SteamOS: herní platforma Steam, Tails: využívá Tor, Webconverger: pro internetové kiosky, GParted Live, Clonezilla Live a mnohé další).

  • .rpm formát vyvíjen firmou Red Hat od roku 1997 (zkratka vychází z původního označení systému: Red Hat Package Manager, nyní RPM Package Manager). Formát je používaný distribucemi Red Hat Enterprise Linux (RHEL), Fedora (též od fy Red Hat), CentOS, Scientific Linux, OpenSUSE, SUSE Linux Enterprise, Mageia, Clear OS, Qubes OS a řadou dalších distribucí.

Významnější výjimky (nepoužívají ani .deb ani .rpm): Slackware (nejstarší dosud existující distribuce) a ze Slackware vycházející distribuce (Salix, Slackel, VectorLinux, Zenwalk Linux a několik dalších) používají formát .txz (tar s komprimací xz), příp. starší .tgz (tar s gzip). Arch Linux a z něj vycházející distribuce (Manjaro Linux, Antergos a několik dalších) používají pro správu balíčků Pacman.

Níže uvedené platí pro balíčky ve formátu .deb, v případě distribucí používající formát .rpm je sice postup instalace balíčků v principu obdobný, ale musíte se naučit jiné příkazy, nejčastěji rpm a yum (používá Red Hat, CentOS, Scientificc Linux, Oracle Linux ad.), příp. i další příkazy, též

v závislosti na konkrétní distribuci. Fedora od verze 22 používá jako default správce balíčků DNF, OpenSUSE a SUSE Enterprise používá Zypper, Mageia a další používají urpmi.

Existuje též příkaz alien, který umí zkonvertovat balíčky mezi formáty .deb, .rpm, .txz/.tgz a tyto balíčky též nainstalovat. Měl by se však používat až jako poslední možnost (jedna věc je samotná konverze formátů, druhá různé odlišnosti samotných distribucí).

Binární balíčky .deb (existují též .deb balíčky se zdrojovými kódy) vždy obsahují spustitelný program, téměř vždy obsahují tzv. control (obsahuje všechny potřebné informace k balíčku, např. seznam závislostí, doporučené balíčky), seznam souborů s kontrolními součty a zpravidla několik skriptů, které se postupně provádí před a po instalaci daného balíčku. Instalace vždy začíná rozbalením controls, pokud byla dříve instalována starší verze balíčku, je zálohována včetně konfiguračních souborů pro případ nějakého problému s novou verzí, provede se případný předinstalační skript, rozbalí se vlastní balíček a provede se případný postinstalační skript

Příkaz

Vysvětlivky

dpkg

nízkoúrovňový příkaz pro práci s balíčky, používejte jen níže uvedené

dpkg –list

seznam balíčků (viz Poznámka)

dpkg –listfiles balíček

vypíše přehled souborů v konkrétním balíčku

dpkg –status balíček

podrobné informace o konkrétním instalovaném balíčku

apt-cache

informace o balíčcích

apt-cache stats

obecnější info o repozitářích, počtu balíčků a jejich druhů…

apt-cache search regex

vyhledávání balíčku/ů dle klíčových slov/regulárního výrazu

apt-cache show …

informace o konkrétním balíčku vč. jeho popisu

apt-cache showpkg …

informace o konkrétním balíčku (jiné info, vč. obrác. závislostí)

apt-get

instalace a odinstalace balíčků (a seznamy balíčků)

apt-get update

aktualizuje se databáze (seznam) balíčků (s balíčky se nic nedělá)

apt-get upgrade

zkontrolují se všechny instal. balíčky a provede se jejich upgrade

apt-get install balíček

instalace nebo upgrade konkrétního balíčku (nejpoužívanější příkaz)

apt-get -d install bal.

download only, zatím ne instalace (uvidíte velikost balíčku i instalace)

apt-get -s install bal.

jen simulovaná instalace

apt-get remove balíček

odinstalace konkrétního balíčku (konfigurační soubory zachovány)

apt-get remove balíček

odinstalace konkrétního balíčku vč. konfiguračních souborů

V případě dpkg –list se vypíší dvě písmena statusu, název, verze, architektura (např. i386 nebo all) a většinou i stručný jednořádkový popis. Status nejčastěji bude „ii“, znamená měl být nainstalován a byl úspěšně nainstalován. „pn“ první písmeno znamená požadovaný status „purged“ a druhé písmeno „not installed“ znamená, že byl skutečně odinstalován včetně konfiguračních souborů,

„rc“ znamená měl být „removed“ a skutečně byl odinstalován bez odstranění konfiguračních souborů, „un“ znamená „unknown, not installed“.

V případě vašeho PC lze použít též grafické nástroje (ale i zde poměrně často využijete minimálně sudo apt-get install balíček, je často rychlejší: např. zadali jste jméno příkazu, který není nainstalován a systém rovnou poradí, jaký balíček potřebujete). V případě serveru jsou řádkové příkazy nutností. Pokud nevíte jméno balíčků, je dnes většinou nejjednodušší hledat přes WWW.

V případě Debianu není nijak pevně stanoveno, kdy bude vydána nová verze (tým Debianu rozhodne, kdy je nová verze dostatečně otestována) a rozlišují tři tzv. větve:

  • Stable: obsahuje často relativně staré verze balíčků, ale vše je důkladně otestováno právě s důrazem na maximální stabilitu (typické využití servery). Aktualizace verze balíčků

    obvykle jen v případě nalezení bezpečnostních problémů. Volitelně jsou pro vybrané balíčky k dispozici novější verze formou tzv. backports. K dispozici instalační CD a DVD.

  • Testing se posléze stane novým hlavním vydáním. Obsahuje novější (relativně dobře otestované) verze balíčků než stable, které jsou postupně aktualizovány až do okamžiku zmrazení. K dispozici instalační CD a DVD.

  • Unstable (kódové jméno sid) obsahuje nejnovější verze balíčků, jednotlivé balíčky projdou alespoň základním testováním, ale není testován celek, není k dispozici CD nebo DVD.

Kromě těchto tří větví vždy existuje (mimo jiné) tzv. Oldstable: tj. předchozí větev Stable.

Z důvodu kontinuity instalací serverů je tato verze podporována poměrně dlouho prostřednictvím Debian Security Team (jsou vydávány bezpečnostní opravy).

Naproti tomu v případě Ubuntu je nová verze vydávána pravidelně každých 6 měsíců a to vždy v dubnu a říjnu (číselné verze je tedy xx.04 resp. xx.10), ale jen každá čtvrtá verze je tzv. LTS (Long Term Support). I v případě stolního PC se doporučuje držet se těchto LTS verzí (nyní je to

16.04 LTS Xenial Xerus z dubna 2016).

V případě Ubuntu se rozlišuje celá řada repozitářů, mimo jiné main (Ubuntu podporovaný open-source software), universe (komunitou udržovaný OSS), restricted (uzavřené ovladače bez zdrojového kódu: nutné pro rozumné fungování některých komponent), partner, backports. Edice Ubuntu Server používá stejné repozitáře jako odpovídající Desktop edice, ale standardně se neinstaluje grafické rozhraní, instalační proces je mírně upraven a jsou přidána některé komponenty a nastavení s ohledem na bezpečnost.

Linux Mint byl do roku 2014 vydáván rovněž v půlročním cyklu, zhruba měsíc po Ubuntu a rovněž jen každá čtvrtá verze byla LTS. Poté bylo oznámeno, že vývojový cyklus nebude striktně půlroční, podstatnější však je, že nyní každá verze je založena na příslušné LTS verzi Ubuntu.

V současnosti tak verze 17.1 až 17.3 jsou všechny založeny na Ubuntu 14.04 LTS a mají stejně dlouhou podporu (do 2019) a verze 18/18.1 (zatím poslední) jsou založeny na Ubuntu 16.04 LTS a mají podporu do roku 2021. Méně známý a méně rozšířený Linux Mint Debian Edition je založen přímo na Debianu, má vlastní repozitáře a je aktualizován průběžně.

4.9. Diskové oddíly a souborový systém

Skupina příkazů

Příkazy a vysvětlivky

přehled o diskových oddílech

fdisk -l: základní informace o všech diskových oddílech (jen MBR) parted -l: základní informace o všech oddílech (MBR i GPT)

souborový systém

mount (bez parametrů) vypíše základní přehled

připojení, odpojení připojení ISO soub.

mount, umount

mount -o loop jmenosouboru.iso /mnt/disk

kontrola soub. systému

fsck: souborový systém nesmí (!!) být připojen

monitoring HDD

smarmontools (smartctl: běžný příkaz a smartd: démon)

Poznámky:

  1. gparted je GUI verze parted, pro případnou úpravu diskových oddílů použijte raději ten, máte-li GUI k dispozici (pochopitelně i tehdy je nejlepší mít všechna případná data zálohována)

  2. mezi fdisk (jen MBR) a parted je zásadní rozdíl i ve způsobu provedení změn (fdisk: až na závěr, parted: příkazy se provádí ihned!).

  3. fsck volá specializované programy podle typu souborového systému, v případě podezření na na větší problémy je vhodné nejprve použít fsck -n (nic se neopravuje), příp. zkopírovat oddíl po sektorech, fsck může být vyvoláno též automaticky při startu PC, zejména na ext2

4.9.1. Speciální souborové systémy

Jak je vidět i na příkazu mount (bez parametrů), zdaleka ne všechny souborové systémy se týkají fyzických disků. Obecně jde o tzv. Special-Purpose Filesystem, např. proc připojeno na /proc (již dříve jsme využili některé informace zde obsažené příkazy typu cat /proc/cpuinfo), sysfs na /sys, tmpfs na /run i jinde (na PC s dostatkem paměti se často využívá část RAM) a další systémy.

4.10. Sítě a Internet

Skupina příkazů

Příkazy a vysvětlivky

základní a další příkazy: stav a konfigurace síťových rozhraní

ifconfig: základní příkaz pro zobrazení informací a konfiguraci ifconfig -a zobrazí informace o všech síťových rozhraních ifconfig eth0 zobrazí informace pro dané rozhraní (eth0 je první

rozhraní typu Ethernet, wlan0 je první bezdrátové, lo je local loopback ifconfig eth0 up (…wlan0 down): povolit/zakázat dané rozhraní konfigurace: viz manuálové stránky (static IP, jinak příkaz dhclient), další příkazy: ip (ip addr show, ip route get IP adresa), arp, netstat

základní diagnostika dostupnosti/doby odezvy určitého serveru přes Internet

ping hostname nebo IP adresa (např. ping www.vse.cz)

traceroute hostname nebo IP adresa (traceroute –resolve-hostname) již uvedeno dříve, že příkaz finger nyní většinou není povolen: bezpečnostní důvody (finger -l username user@hostname)

vyhledávání DNS/ WHOIS

dig: DNS lookup, vyhledávání v DNS (dig vse.cz)

dig -x IP adresa: inverzní vyhl. (pro VŠE funguje, obecně nemusí) whois (příp. jwhois): vyhledávání v registru domén

nslookup: jednoduché vyhledávání DNS <–> IP adresa host: jednoduché vyhledávání DNS <–> IP adresa

nešifrované! přenosy

telnet, ftp

dávkové stahování

wget: neinteraktivní stahování souborů (protokoly ftp, http, https)

openssh

ssh (klient), sshd (server, démon), scp, sftp (příp. lftp),

ssh-keygen, ssh-copy-id, ssh-agent, ssh-add,: viz Poznámky

rsync: inteligentní zálohování/synchronizace (přenášejí se jen změněné části souborů), mnoho přepínačů (např. rsync -av nebo -avz,

rsync -avz /home/user username@remote_host:/backup_dir

Poznámky:

  1. Příkazu ifconfig v Linuxu přibližně odpovídá příkaz ipconfig ve Windows.

  2. SSH: ssh-copy-id není v některých distribucích, pak musíte vygenerovaný public key nahrát na server jiným způsobem, ssh-agent bývá spuštěn automaticky, ssh-agent + ssh-add společně zajišťují obdobnou funkcionalitu jako v případě Windows a Putty program Pageant.

4.11. Vybrané ostatní příkazy

Skupina příkazů

Příkazy a vysvětlivky

speciální pomocné příkazy

script: záznam relace z terminálu (viz Poznámky) time(jiný_příkaz): změří spotřebovaný čas (real, user, syss) watch -přepínače jiný_příkaz: opakuj příkaz (standardně 2 s)

spouštění programů v určený čas

at: relaltivně jednoduchý příkaz pro spouštění ve zvolený čas cron, anacron: komplexnější řízení spouštění programů

hash funkce

md5sum, sha1sum, sha256sum, sha384sum, sha512sum (bez parametru vytvoření, -c kontrola)

transformace textů

tr: jednoduché náhrady nebo smazaní vybraných znaků sed: program na zpracování textů (stream editor)

awk: program na zpracování textů (řádky se skládají z polí)

spec. kopírování dat

dd: velmi různorodé použití (používejte opatrně! + odlišná syntax!)

spec. zobrazení souborů

od (octal dump a další formáty), base64

vybrané aplikace (příklady, mnoho dalších)

ps2pdf: zkonvertuje postscriptové soubory do PDF jpegtran: úpravy JPEG souborů vč. bezztrátového otočení jhead: různé operace s EXIF informacemi JPEG souborů

Poznámky:

  1. script jméno_textového_soub (implicitní jméno souboru je typescript): veškeré příkazy a textové výstupy těchto příkazů v okně terminálu budou zaznamenávány do zvoleného textového souboru, záznam ukončíte příkazem exit

  2. zatímco tr je relativně jednoduchý příkaz, sed a awk jsou dost komplexní programy, mající vlastní (byť značně specifický) programovací jazyk, sed a awk jsou koncepčně dost odlišné, ale dají se použít i na stejné úlohy (na ještě složitější zpracování textů je dále zaměřen jazyk Perl, jež obvyklé bývá nainstalován, případně se dnes používají i další jazyky)

  3. dd je velmi mocný a univerzální příkaz, kterým lze mimo jiné zálohovat MBR record do souboru, zkopírovat instalační ISO soubor na flash disk, zálohovat celý diskový oddíl a mnoho dalšího, ale omylem lze např. přepsat určitou část disku, proto vždy dvakrát zkontrolujte zadané parametry, než příkaz použijete! Vzhledem ke svému původu používá odlišnou syntax než jiné příkazy (parametr=hodnota), podrobněji viz manuálové stránky.

4.12. Jména zařízení

pevné disky: /dev/sda, dev/sdb … (včetně flash disků ap.)

(ve starších verzích Linuxu „obyčejné“ disky byly /dev/hda, /dev/hdb…: pokud na to ještě narazíte v hodně starých návodech na Internetu, je třeba nahradit hda sda atd.)

jednotlivá oddíly (partitions) na daném disku: /dev/sda1, /dev/sda2….

Pozn: pokud disk používá MBR, kde je limit 4 primárních oddílů, a vy jste proto 4. oddíl definovali jako extended a v něm 2x logical partitions a všechny oddíly jste použili pro Linux, budou oddíly, kde jsou skutečně data, označeny /dev/sda1, /dev/sda2, dev/sda3, dev/sda5 a dev/sda6.

CD/DVD mechanika zpravidla budou /dev/sr0 (ev. další /dev/sr1): r zde znamená read-only, Ubuntu a odvozené distribuce vytváří též /dev/cdrom, příp. /dev/dvd

terminály: „skutečné“ textové terminály jsou /dev/tty/*, virtuální terminály /dev/pts/*, jak můžete vidět např. ve výpisu příkazu ps.

paralelní porty: pokud ještě máte ve svém PC paralelní port/y (a na něm připojenou např. tiskárnu: současné jsou připojeny přes USB), tak LPT1: ve Windows v Linuxu odpovídá /dev/lp0

sériové porty: obdobně, pokud ještě máte ve svém PC „pravé“ sériové porty, COM1 ve Windows bude v Linuxu /dev/ttyS0 (sériové porty jsou v Linuxu speciální terminálová zařízení), pokud je to ve skutečnosti USB zařízení, které sériový port emuluje, mělo by se objevit jako /dev/ttyUSB0 atd. audio zařízení v systému ALSA jsou /dev/snd/*, mohou zde být ještě další audio zařízení

4.12.1. Special devices

Kromě výše uvedeného vytváří Linux také několik speciálních zařízení, které nemají žádné korespondující fyzické zařízení, proto se jim často říká též pseudozařízení (pseudo-devices). Mezi tato bloková pseudozařízení patří:

  • /dev/null: je asi nejznámější zařízení používané i běžnými uživateli, jakási „černá díra“, ve které zmizí vše, co do ní pošleme (nejčastěji se používá pro odfiltrování nežádoucích chybových hlášení ve výstupu některého příkazu: viz příklad s příkazem grep v Prezentaci).

  • /dev/random, /dev/urandom: jsou dva různé generátory pseudonáhodných čísel (jejich využití jste nepřímo viděli při generování páru klíčů v Putty, OpenSSH nebo GnuPG).

  • /dev/zero: poskytuje nekonečný proud Null bytes (nikoli čísla 0).

  • /dev/full: poskytuje opět proud Null bytes, pokud se ze zařízení čte a chybu „disk full“ při pokusu o zápis do tohoto zařízení.

4.13. Vytváření a používání aliasů

Aliasy jsou další nástroj, jak si zpříjemnit a zefektivnit práci na příkazové řádce. Důvodů pro vytvoření aliasů může být více:

  • zjednodušit zadávání často používaných variant příkazů (např. alias pro ls -la)

  • vytvořit si nové jméno příkazu, které je pro mě snazší na zapamatování (např. del místo rm)

  • vytvořit si „bezpečnější“ verzi příkazu (např. rm -i)

Příkaz alias bez parametrů vypíše již existující aliasy. Obvykle jich několik bývá nastaveno již při instalaci, např. v mém případě (Linux Mint), vypíše alias (mimo jiné):

alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
alias grep='grep --colour=auto'

Poslední dva aliasy mají jen „kosmetický“ význam, nemění jméno příkazu ani jeho význam, ale ve výstupu daného příkazu (pochopitelně pouze na obrazovce) budou určité typy souborů barevně rozlišeny. Alias „ll“ je již „skoro“ přesně to, co chci, proto si vytvořím ještě jednu jeho variantu (nyní tedy bude stačit zadat příkaz o jediném písmenu, který vypíše seznam souborů v dlouhém formátu a včetně skrytých souborů):

alias l='ls -la'

Již existující alias „la“ si trošku upravím na:

alias la='ls -a'

Pro příkaz rm si můžu vytvořit alternativní jméno del (které je dejme tomu pro mě lepší na zapamatování než než rm), případně ho vytvořím jako bezpečnější variantu, tedy:

alias del='rm'

nebo

alias del='rm -i'

Druhá varianta (přepínač -i) znamená, že při použití příkazu del se mě systém vždy zeptá, zda opravdu chci daný soubor/y smazat, zatímco při použití původní rm se soubory rovnou smažou. Existuje též přepínač -I, který bude potvrzení žádat jen pokud se má smazat 3 a více souborů nebo mazat rekurzivně. Můžu si takto upravit přímo příkaz rm a obdobně i příkaz cp (zde se příkaz bude ptát, pokud by při kopírování mělo dojít k přepsání souboru).

alias rm='rm -i' alias cp='cp -i'

Příkazem unalias odstraním jeden konkrétní alias nebo všechny aliasy.

unalias del        # smazání alisu del
unalias -a         # smazání všech aliasů

Všechny takto vytvářené aliasy mají platnost jen po dobu dané terminálové relace. Jakmile si aliasy vyzkoušíte, pravděpodobně budete chtít, aby ty osvědčené platily natrvalo. Jednoduše přidejte vybrané aliasy do souboru .bashrc ve vašem domovském adresáři (pokud by tento soubor náhodou ještě neexistoval, vytvořte nový).