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 |
---|---|
|
vypíše aktuální adresář |
|
vypíše jméno počítače (hostname -i vypíše IP adresu počítače) |
|
jméno uživatele (viz též obdobné příkazy dále) |
|
uname vypíše „Linux“, uname -a zobrazí podrobnosti |
|
zobrazí datum a čas |
|
vypíše seznam přihlášených uživatelů (dva různé příkazy) |
|
doba od posledního startu, počet přihlášených uživatelů, |
|
vypíše všechny proměnné v interpretu příkazů |
|
vypíše exportované proměnné prostředí |
|
vypíše text na standardní výstup (obrazovku)
|
|
|
|
smaže obsah obrazovky terminálu |
|
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:
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
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:
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)
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!).
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 |
rsync -avz /home/user username@remote_host:/backup_dir |
Poznámky:
Příkazu ifconfig v Linuxu přibližně odpovídá příkaz ipconfig ve Windows.
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:
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říkazemexit
zatímco
tr
je relativně jednoduchý příkaz,sed
aawk
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)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ístorm
)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ý).