navody:fc5prirucka21

Toto je starší verze dokumentu!


Hlavní stránka

I když již není znalost unixových příkazů pro správné soužití s Linuxem natolik důležitá jako dříve, není od věci osvojit si alespoň několik základních příkazů. Důvodem je, že „klikací“ aplikace pro nastavení systému se mohou lišit pro jednotlivé verze distribuce. Příkazy však zůstavají neměnné. Navíc v případě, kdy budete nuceni pracovat např. v záchranném módu, budete odkázáni výhradně na příkazový řádek. Sečteno a podtrženo - znalost několika málo příkazů Vás nezabije, ale posílí (navíc zažije určitě řadu situací, kdy se Vám tato znalost bude navíc i hodit).

V následujícím textu budeme zaměňovat pojmy příkazový řádek a terminál. Příkazovým řádkem / terminálem budeme rozumět rozhraní, pomocí něhož zadává uživatel příkazy. Dalším pojmem, se kterým se zde můžete setkat je shell. shell je zjednodušeně řečeno software, který umožňuje komunikaci mezi uživatelem a jádrem OS Linux. shell je totiž zodpovědný za interpertaci příkazů zadávaných uživatelem prostřednictvím příkazového řádku. To znamená, že prostřednictvím příkazové řádky předá uživatel příkazy shellu, který je „předzpracuje“ a předá jádru. shell tak brání tomu, aby uživatelé přistupovali přímo k jádru, což lze chápat do jisté míry jako bezpečnostní prvek.
Pro OS Linux bylo vyvinuto několik shellů. Standardním shellem je bash, který bude s největší pravděpodobností také součástí Vaší instalace. bash je akronymem sousloví „Bourne Again SHell, což je pokračovatel původního shellu, který napsal Stephen Bourne koncem 70.let. Samotný bash pak pochází z roku 1987.

Příkazový řádek otevřete v grafickém prostředí Gnome pomocí nabídky Aplikace → Příslušenství → Terminál. V historii zadaných příkazů můžete listovat pomocí šipky nahoru a dolů. Dále je možné automaticky doplňovat názvy souborů a adresářů pomocí klávesy tabelator (stačí napsat část názvu souboru nebo adresáře a stisknout klávesu tabelatoru).

Poznámka: Zde uvedené příkazy lze označit jako naprosté minimum příkazové řádky - seznam příkazů není ani zdaleka vyčerpávající.

passwd

Příkaz passwd umožňuje uživateli změnu hesla. Jinému uživateli může heslo změnit pouze superuživatel.

Své heslo můžete změnit pomocí

passwd 

Superuživatel pak může změnit heslo jiného uživatele pomocí

passwd jmeno_uzivatele

su

su je příkazem pro změnu uživatele. Klasickým případem je, když v rámci instalace aplikace popř. úpravě nastavení systému potřebuje získat práva superuživatele. Po zadání příkazu su bude vyzvání k zadání hesla daného uživatele (s vyjímkou případů, kdy tento příkaz spouštíte jako superuživatel).

Změnu uživatele na superuživatele provedeme pomocí

su

popř.

su root

Jestliže se chceme změnit svou „identitu“ na jiného uživatele, použijeme následující syntaxi

su jmeno_uzivatele

su můžete také spustit ve tvaru

su - jmeno_uzivatele

Rozdíl oproti výše uvedené syntaxi je v tom, že se Vám nastaví kompletní shell prostředí daného uživatele.

uname

uname slouží ke zjištění údajů o systému, ke kterému jste momentálně přihlášeni.

uname -a

whoami

whoami vypíše jméno uživatele, který momentálně „ovládá“ příkazový řádek.

whoami

free

free vypíše informace o využití fyzické operační paměti a tzv. swapu. Údaje zde uváděné jsou v násobcích 1kB.

free

w

w zobrazí základní informace o uživatelích přihlášených do systému a o aplikacích, které tito uživatelé spustili. Dále lze pomocí tohoto příkazu získat informace o čase a zatížení CPU za poslední 1, 5 a 15 minut.

w

df

df slouží k získávání informací o místě připojení jednotlivých diskových oddílů a míře zaplnění jim přiděleného prostoru.

df

Informace zde uváděné jsou v tzv. blocích, které mají standardně velikost 1kB. Pokud Vám tento formát přijde nepřehledný, zkuste použít syntaxi

df -h

která vypíše volné místo v kB/MB/GB.

Každý soubor a adresář 1) má svého vlastníka. Standardně je vlastníkem souboru uživatel, který ho vytvořil. Soubory pak lze vytvářet pouze v adresářích, kde k tomu má uživatel oprávnění. Toto pravidlo neplatí pouze pro tzv. superuživatele 2) - ten může přistupovat ke všem souborům a adresářům bez omezení. Více o přístupových právech viz. kapitola Definování přístupových práv.

cd

cd slouží ke změně pracovního adresáře. Pracovním adresářem se rozumí adresář, ve kterém se uživatel momentálně nachází a k jehož souborům hodlá primárně přistupovat.
Následujícím příkazem nastavníme adresář /opt/games jako pracovní.

cd /opt/games

Příkaz

cd sauerbraten

nás přesune do podadresáře sauerbraten, který se nachází v aktuální pracovním adresáři.

pwd

pwd slouží k zjištění aktuálního pracovního adresáře.

pwd

ls

Pomocí ls lze získat obsah adresáře. Maximální dostupnou informaci získáme pomocí přepínačů -la.

ls -la /opt

du

du vypíše množství diskového prostoru alokovaného pro zvolený soubor či adresář.

Příkaz

du /opt

vypíše seznam souborů a adresářů obsažených v adresáři /opt spolu s údajem o velikosti diskového prostoru, který zabírají.

Příkaz

du -s /opt

naproti tomu vypíše pouze jedno číslo odpovídající velikosti diskového prostoru, který zabírá adresář /opt včetně podadresářů a souborů.

file

file slouží k zjištění typu (datového formátu) souboru.

file /opt/text.txt

rm

Příkaz rm se používá pro odstranění souborů, souborových linků a celé adresářové struktury.

rm -ri /opt/games

Při specifikaci souborů je možné použít tzv. wild cards (zástupné znaky). Libovolný počet znaků 3) lze vyjádřit pomocí hvězdičky (*), libovolný jeden znak pomocí otazníků (?), jeden znak ze skupiny znaků pomoci [prvni_znak, druhy_znak, treti_znak, …].

rm -ri /opt/games/*.txt
rm -ri /opt/games/[A,B,C]*?

rmdir

rmdir je příkaz, kterým se mažou adresáře.

rmdir /opt/games

Stejně jako rm podporuje rmdir tzv. zástupné znaky.

mkdir

mkdir slouží k vytvoření nových adresářů.

mkdir /opt/games

Poznámka: Existuje také explicitní příkaz pro vytvoření souboru

touch jmeno_souboru

Soubor je ale možné vytvořit i pomocí textového editoru nebo přesměrováním výstupu jiného souboru. Klasickým případem je uložení výstupu manuálových stránek do souboru.

man mkdir > manualove_stranky_mkdir.txt

cp

cp slouží ke kopírování souborů.

cp zdrojove_soubory cilovy_soubor_nebo_adresar

Pomocí výše uvedené syntaxe překopírujeme všechny soubory do cílového adresáře. Příkaz cp podporuje také zástupné znaky.

mv

mv slouží k přesunu / přejmenování souborů (včetně adresářů 4) ). Příkaz mv podporuje zástupné znaky.

mv -f zdrojovy_soubor cilovy_soubor
mv -f zdrojovy_adresar cilovy_adresar
mv -f seznam_zdrojovych_souboru cilovy_adresar

Poznámka: Přepínač -f přepíše případné existující soubory.

find

Pomocí find je možné nalézt umístění zvoleného souboru či adresáře. Tento příkaz podporuje zástupné znaky.

find adresar_k_prohledani -name "jmeno_hledaneho_souboru_nebo_adresare"

Následující příkaz vyhledá všechny textové soubory začínající velkým písmenem v celém systému 5).

 find / -name "[A-Z]*.txt"

ln

ln vytváří tzv. linky na soubory. Linky, zjednodušeně řečeno, odkazují na soubory. Rozlišujeme dva typy linků - pevné a symbolické.
Symblický link je soubor, který odkazuje na jiný soubor. Pokud provádíme např. editaci symbolického linku, provádíme v skutečnosti editaci souboru, na který tento link odkazuje.
Pevný link je naproti tomu odkazem přímým - není tvořen samostatným souborem ale pouze odkazem v adresáři. Navíc platí omezení, že soubor, na který se pevný link odkazuje, musí být umístěn na stejném diskovém oddílu.

Symbolický link vytvoříme pomocí

ln -s zdrojovy_soubor nazev_linku

pevný link pak pomocí

ln zdrojovy_soubor nazev_linku

Poznámka: Výhoda linků je zřejmá - umožnují elegantně obcházet potřebu kopírování souborů. To přispívá k úspoře místa na disku a konzistentnosti systému.

mc

mc je zkratka pro Midnight Commander. Nejedná se příkaz, ale o aplikaci - klon známého Northon Commander z dob nadvlády MS-DOS. Tato aplikace umožňuje vytváření, přesun, přejmenování a mazání souborů a adresářů. mc má také vestavěný editor pro modifikaci souborů, a obsahuje jednoduchého FTP klienta.

mc

Poznámka: Jestliže mc není nainstalován, lze ho snadno přídat jako superuživatel pomocí

yum -y install mc

cat

cat slouží k výpisu obsahu souboru.

Výpis obsahu souboru je možné přesměrovat do nového souboru.

cat text.txt > novy_textovy_soubor.txt

more

more slouží podobně jako cat k výpisu obsahu souborů. Narozdíl od cat však more obsah souboru „rozobrazovkuje“. To znamená, že obsah souboru nevypíše najednou, ale rozdělí se. Na obrazovku vypíše vždy část textu a výpis pokračuje až po stisku klávesy. Tento příkaz se používá zejména při prohlížení dlouhých textových souborů.

more text.txt

less

Ačkoliv je název možná trochu matoucí, umí toho příkaz less více než příkaz more. Příkaz less stejně jako more provede „rozobrazovkování“ výpisu obsahu souboru, avšak tento výpis je možné volně procházet pomocí kláves Page Up a Page Down.

less text.txt

grep

grep slouží k vyhledávání textových řetězců v souborech. Velice často se pojí s výše uvedenými příkazy. Následují příkaz nám vypíše všechny řádky souboru text.txt, které obsahují sekvenci znaků inux.

cat text.txt | grep "inux"

Tento příkaz by např. vypsal všechny řádky, kde figuruje slovo Linux nebo linux.

Jak již bylo zmíměno v kapitole Práce se soubory, každý soubor a adresář má svého vlastníka. Ten pak určuje jaké operace mohou s těmito soubory / adresáři provádět ostatní uživatelé. Standardně se jedná v případě souborů o právo čtění (read), zápisu (write) a spouštění (execute), v případě adresáře pak o právo prohlížení obsahu (ekvivalent práva čtení), manipulace se soubory (ekvivalent práva zápisu) a právo zobrazovat informace o souborech (ekvivalent práva spouštění)6). Při přidělování práv pak rozlišujeme následující tři skupiny uživatelů: (1) vlastníka souboru / adresáře, (2) tzv. skupinu uživatele a (3) ostatní uživatele. Práva může jednotlivým skupinám přidělit vlastník 7). Přehled práv, která se váží k vybranému souboru / adresáři lze získat pomocí příkazu ls.
Předpokládejme, že příkaz

ls -la /home/macky/text.txt

zobrazil výpis

´-rwxr-xr-x 1 macky skupina 23056 čec 26 23:10 Derivates.tex

První znak pomlčka (-) značí, že se jedná o soubor 8). Následující trojice znaků značí práva vlastníka souboru - jedná se o právo čtení (read), zápisu (write) a spouštění (execute). Další trojice definuje práva skupiny a to jmenovitě právo čtení a spouštění. Ostatním uživatelům byla opět přidělena práva čtení a spouštění. Dále nám výpis říká, že vlastníkem souboru je uživatel macky, který náleží do skupiny skupina.

chgrp

Příkaz chgrp slouží ke změně vlastníků specifikovaných souborů / adresářů. Změnu skupiny může provést pouze vlastník popř. superuživatel. Tento příkaz podporuje zástupné znaky.

chgrp nova_skupina jmeno_souboru_nebo_adresar

chown

Příkaz chown je podobný výše uvedenému příkazu chgrp s tím rozdílem, že slouží ke změně vlastníka souboru / adresáře.

chown novy_vlastnik jmeno_souboru_nebo_adresare

chmod

Pomocí příkazu chmod lze měnit měnit práva přiřazená jednotlivým skupinám. Je možné použít dva způsoby zápisu.
V prvním případě nejprve specifikujeme skupinu uživatelů, která následuje znak plus (+) popř. mínus (-) následovaný výčtem práv, která mají být přidána popř. odebrána. Co se skupin uživatelů týče, používají se písmena u (user) pro označení vlastníka, g (group) pro označení skupiny a o (other) pro označení ostatních uživatelů. Práva pak označujeme písmeny r (read) pro čtení, w (write) pro zápis a x (execute) pro spuštění. Následující příkaz přidá vlastníkovi a jeho skupině práva čtení a zápisu pro soubor soubor, který se nachází v pracovním adresáři.

chmod ug+rw soubor

Druhá varianta zápisu využívá čísel.

čtení zápis spouštění
vlastník 400 200 100
skupina 40 20 10
ostatní 4 2 1

Výsledná práva jsou dána součtem čísel uvedených v tabulce. Například příkaz

cmod 750 soubor

nastaví vlastníkovi všechna práva, skupině vlastníka právo čtení a spouštění. Ostatním uživatelům nebyla přidělena žádná práva. Výsledné číslo 750 je tedy součtem čísel 400, 200, 100, 40 a 10.

umask

Pomocí příkazu umask se nastavují implicitní práva pro nově vytvořené soubory. Syntaxe tohoto příkazu je podobná jako v případě chmod s číselnou notací. Zásadní rozdíl je v tom, že čísla neurčují práva, která se mají přidat ale naopak práva, která mají odebrána. Například

umask 027

ponechává vlastníkovi všechna práva, skupině vlastníka pak práva čtení a spouštění a ostatním uživatelům jsou odebrána všechna práva.
Standardně jsou tato implicitní práva specifikována v souboru /etc/bashrc, nicméně každý uživatel si toto nastavení může změnit zápisem do souboru .bashrc, který se nachází v jeho domovském adresáři 9).

Procesem budeme pro účely této kapitoly rozumnět jakýkoliv spuštěný program.

ps

Pomocí příkazu ps získáte seznam všech spuštěných procesů

ps aux

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1   1992   676 ?        Ss   20:24   0:00 init [5]
root         2  0.0  0.0      0     0 ?        SN   20:24   0:00 [ksoftirqd/0]
root         3  0.0  0.0      0     0 ?        S    20:24   0:00 [watchdog/0]
root         4  0.0  0.0      0     0 ?        S<   20:24   0:00 [events/0]
root         5  0.0  0.0      0     0 ?        S<   20:24   0:00 [khelper]
root         6  0.0  0.0      0     0 ?        S<   20:24   0:00 [kthread]
root      2045  0.0  0.8  11480  4636 ?        S    20:24   0:00 python ./hpssd.py
root      2057  0.0  0.5   9272  2908 ?        Ss   20:24   0:00 cupsd
postgres  2143  0.0  0.6  20232  3108 ?        S    20:25   0:00 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data
postgres  2145  0.0  0.1  10020   560 ?        S    20:25   0:00 postgres: logger process
postgres  2147  0.0  0.1  20232   852 ?        S    20:25   0:00 postgres: writer process
postgres  2148  0.0  0.1  11020   548 ?        S    20:25   0:00 postgres: stats buffer   process
postgres  2149  0.0  0.1  10252   728 ?        S    20:25   0:00 postgres: stats collector process
macky     2956  0.0  2.1  52884 11104 ?        Sl   20:36   0:00 xmms -e
macky     3202  0.4  2.7  88864 14324 ?        S    21:16   0:00 gaim
...

Z výše uvedeného výpisu lze pro každý proces zjistit uživatele, který jej spustil (položka USER) a identifikační číslo procesu (položka PID). Vzhledem k tomu, že tento výpis můžeme být vcelku dlouhý, je vhodné použít také příkaz less popř. grep. Například seznam všech procesů spuštěných uživatelem macky bychom získali pomocí příkazu

ps aux | grep macky

kill

Příkaz kill slouží k ukončení procesů. Jeho syntaxe je následující

kill pid_procesu

PID daného procesu lze získat pomocí příkazu

ps aux

Každý uživatel může „zabít“ svůj proces; superuživatel pak může zabít jakýkoliv proces. Asi nemá smysl zdůrazňovat, že bezhlavé zabíjení procesů superuživatelem může mít za následek kolaps systému.

Spuštení vícero příkazů

Znak středník umožňuje spustit několik příkazů po sobě v pořadí uvedeném v příkazové řádce.

cd /usr/sbin; ls -la

Tento zápis je ekvivalentní s

cd /usr/sbin
ls -la

Použití závorek a zpětného lomítka

Způsob, jakým příkazový řádek vyhodnocuje zadané příkazy, si v některých případech může vynutit použití závorek popř. zpětného lomítka. Klasickým příkladem jsou mezery v názvech souborů a adresářů běžně používané v OS typu Windows. Jestliže budeme mít adresář jmeno adresare bude příkaz

cd jmeno adresare

interpretován stejně jako kdybychom zadali pouze

cd jmeno

Tento problém se dá vyřešit třemi způsoby.

cd 'jmeno adresare'
cd "jmeno adresare"
cd jmeno\ adresare

V prvním případě jednoduché uvozovky „chrání“ v nich uzavřený text před interpretací příkazovým řádkem. Druhý příklad je totožný s prvním s tím rozdílem, že dvojité uvozovky povolují interpretaci zástupných znaků. Zpětné lomítko brání interpretaci bezprostředně následujícího znaku.

Mezi znaky interpretované příkazovou řádkou patří vedle mezery např. zástupné znaky * a ?, ampersand &, znak „svislítko“ | a lomítko /.

Apostrof

Jestliže text uzavřeme do apostrofů, bude text zpracován jako příkaz a na jeho místo bude dosazen výstup tohoto příkazu.

pracovni_adresar=`pwd`
echo $pracovni_adresar

Poznámka: Pomocí prvního příkazu definujeme proměnnou pracovni_adresar a její hodnotu vypíšeme pomocí druhého příkazu.

Přesměrování výstupu

Každý program musí produkovat určitý výstup - v opačném případě by postrádal smysl. Například příkaz

ls -la

vypíše obsah pracovního adresáře na obrazovku. Ta je v tomto případě tzv. standardním výstupem. Kdybychom však chtěli výstup tohoto příkazu zapsat např. do souboru, museli bychom tento výstup přesměrovat. K tomu slouží znaky > a ».

ls -la > obsah_adresare.txt
ls -la >> obsah_adresare.txt

Pomocí prvního příkazu vytvoříme soubor obsah_adresare.txt. Pokud tento soubor již existuje, přepíšeme jeho obsah. Druhý příkaz je totožný s tím rozdílem, že v případě existence souboru obsah_adresare.txt nedojde k přepsání jeho obsahu, ale přidání výstupu na konec souboru.

V některých případech se může být žádoucí výstup příkazu zahodit. V tomto případě přesměrujeme výstup do adresáře /dev/null, který je jakousi „černou dírou“ systému.

ls -la > /dev/null

Roury

Roura je mechanismus, kterým je možné přímo předat výstup jednoho příkazu příkazu jinému. Klasickým příkladem je příkaz grep.

cat text.txt | grep Linux

Příkaz nalevo od „svislítka“ vygerenuje obsah souboru text.txt, který je předán příkazu grep. Ten pak vypíše všechny řádky, které obsahují slovo Linux.

Příkazy spouštěné na pozadí

Standardně jsou příkazy spouštěné na popředí. To znamená, že příkazový řádek příkazem „zablokován“ 10) a uživatel musí čekat, než proběhne jeho zpracování. Alternativou k aplikacím spuštěným na pozadí jsou příkazy spuštěné na pozadí. V tomto případě není příkazový řádek příkazem blokován a uživatel může spouštět další příkazy. Příkaz se spustí na pozadí tak, že se na jeho konec přidá znak ampersand (&).

sleep 60&

Narozdíl od výše uvedené syntaxe, blokuje příkaz

sleep 60

příkazový řádek po dobu 60 sekund. Po tuto dobu nemůže uživatel zadávat další příkazy a musí čekat, než příkaz skončí.

Poznámka: Bližší informace o výše uváděných příkazech můžete získat pomocí

man prikaz

1)
Adresář je, pro někoho možná překvapivě, z pohledu systému souborů také souborem, i když se jedná o soubor s pevně danou strukturou.
2)
Někdy je superuživatel označován jako tzv. root. Tyto pojmy jsou vzájmně zaměnitelné. Superuživatel je administrátorem systému - tj. provádí nejrůznější nastavení, instalaci aplikací, vytváří a ruší účty apod. Z tohoto důvodu potřebuje šiřší pravomoce než má standardní uživatel.
3)
Včetně žádného znaku.
4)
Příkaz sice nemůže fyzicky přesunout adresář, ale můžeho ho přejmenovat.
5)
Adresář / je tzv. kořenovým adresářem. Všechny adresáře jsou podadresáři tohoto adresáře. Proto, dáme-li prohledat kořenový adresář, prohledáváme v podstatě celý počítač.
6)
Vedle majitele souboru / adresáře může o těchto právech rozhodovat také superuživatel. Také jakákoliv nastavení provedená vlastníkem souboru / adresáře nemají vliv na práva superuživatele - ta jsou totiž vždy „absolutní“.
7)
Práva může dokonce upravit také sama sobě. To však nemá dopad na možnost toto nastavení kdykoliv změnit.
8)
Adresář by byl indikován znakem (d).
9)
Domovským adresářem rozumíme adresář /home/jmeno_uzivatele.
10)
Jestliže se nejedná o interaktivní příkaz - např. textový editor.
  • Poslední úprava: 2022/11/14 11:09
  • (upraveno mimo DokuWiki)