Obsah
Abstrakt
Ačkoliv je grafické prostředí velmi pohodlné a příjemné, nemusí být vždy funkční. V takovém případě přichází ke slovu textové prostředí. Abyste v případě pádů nebo drobných problémů nebyli zcela bezbraní, můžete se v první části této kapitoly seznámit s interpreterem (shellem) Bash. Dále se dozvíte základní informace o přístupových právech a samozřejmě dojde i na seznam důležitých příkazů. Kapitolu uzavřeme stručným popisem editoru vi.
Textové aplikace jsou velmi důležité především u ovládání starších počítačů, které mají problémy s grafickým rozhraním, a při řešení systémových problémů. Textové prostředí je k dispozici na tzv. virtuálních konzolích. K dispozici jich s textovým prostředím máte celkem šest a dostanete se k nim současným stisknutím kláves Alt-F1 až Alt-F6. První konzole je grafická. Sedmá konzole (F7) je rezervována pro X.
Všechny zde uvedené příkazy lze samozřejmě používat také v grafickém prostředí v některém z emulátorů textové konzole jako je xterm nebo konsole.
Pokud jste v Unixu začátečníkem, stačí pro vás zatím mít nainstalovaný systém a dokázat se přihlásit pod svým uživatelským jménem, ne jako uživatel root. Důvodem je, že jednak ve svém domovském adresáři najdete užitečných nastavení, které právě začátečníkovi ulehčí jeho první kroky, a jednak že budete zodpovědní pouze za obsah svého domovského adresáře a ne za případnou zkázu celé instalace.
Všimněte si, že Linux je koncipován jako víceuživatelský systém, a že práce výhradně pod uživatelským jménem významně přispívá k jeho bezpečnosti. Po přihlášení jako uživatel root je totiž snadné vinou malého přehlédnutí smazat celé adresáře se soubory, nepostradatelnými pro chod systému. Hesla a důsledná ochrana uživatelů jsou pak ještě mnohem významnější v síťovém prostředí, vystaveném náhodnému útoku zvenčí.
Pokud máte privátní instalaci Linuxu, bude pro vás začátek o něco těžší, protože budete současně administrátorem a uživatelem v jedné osobě. Čím více se však naučíte, tím rychleji a snadněji si poradíte s problémy, které vám může soužití s Linuxem připravit.
I když se Linux stává stále barevnějším a uživatelsky příjemnějším, např. díky programům ovládaným pomocí menu, zůstává vždycky možnost v krajní situaci použít klasickou příkazovou řádku.
Unixové příkazy jsou:
spustitelné programy
skripty příkazového interpretu (shellové skripty)
skripty v jazycích jako je Perl, Tcl atd.
aliasy pro příkazový interpret (cosi jako shellová makra).
Pokud chcete zavolat v Linuxu obyčejný spustitelný program v souboru, napíšete název tohoto souboru a cestu, kde se nachází (proměnná PATH). Když ho příkazový interpret najde a uživatel má práva na jeho spuštění (vykonání), pak bude spuštěn.
Co když je třeba programu (např. při kopírování) sdělit, se kterým souborem má pracovat?
To je poměrně jednoduché, k tomu slouží tzv. parametry. Ty následují v příkazové řádce za názvem příkazu a jsou odděleny alespoň jednou mezerou. Mezera nemůže být součástí parametru, protože funguje jako oddělovač jeho částí; můžete ji tam vložit pouze v případě, že uzavřete parametr do uvozovek.
Kromě toho je občas potřeba pozměnit chování příkazu (např. se má zobrazit adresář s popisy souborů místo pouhých názvů souborů v adresáři). K tomu v Linuxu slouží tzv. volbyoptions. Ty se vždy zadávají za název příkazu a před parametry (výjimky jsou možné, ale pouze řídce). Volby jsou zpravidla uvozeny symbolem minus (např. -la) a mohou v podstatě následovat dvě schémata:
krátká, v Unixu běžná forma
dlouhá, tzv. GNU notace
Pokud je třeba použít více voleb, dokáže je mnoho linuxových programů kumulovat. To znamená, že nemusí být zapisovány jednotlivě za sebou uvozené pomocí minus, ale mohou se spojit do jedné volby, viz příklady rovnocenného zápisu:
-a -f -r -u -afru -frua
Tento příklad také ukazuje, že není důležité ani pořadí voleb. Ovšem i zde potvrzuje výjimka pravidlo.
Abychom tomu nasadili korunu, tak ještě jednotlivé volby samy mohou mít opět parametr, viz rovnocenné příklady:
-f nazev_souboru -f nazev_souboru -f
Přitom by mělo být jedno, zda napíšete mezi volbou a parametrem mezeru nebo ne.
Shrneme-li to, příkazy v Linuxu vypadají například takto:
tux@linux:~>fdisk tux@linux:~>lsmod tux@linux:~>ls
![]() | Tip |
|---|---|
Všimněte si, že příklad neobsahuje jen samotný příkaz, ale také promt. To je část tux@linux:~>. Promt uvidíte na uživatelské textové konzoli vždy. Je jakousi výzvou, že nyní můžete psát své příkazy. Standardní uživatelský promt v systému SUSE LINUX vám může velmi usnadnit orientaci. První část před zavináčem je uživatelské jméno, pod kterým pracujete (v našem případě tux). Po zavináči následuje jméno počítače, které je ukončeno dvojtečkou (v našem případě linux). Za dvojtečkou je vypsán adresář, ve kterém se zrovna nacházíte. Pokud následuje jen vlnka, pracujete ve svém domovském adresáři. Promt uživatele root se od uživatelského liší. V našem případě by vypadal takto: linux:~ # | |
S přidáním voleb vypadají pak takto:
tux@linux:~>fdisk -v tux@linux:~>ls -l -a tux@linux:~>ls -la
Dále s parametry:
tux@linux:~>fdisk /dev/hda tux@linux:~>ls /tmp
A konečně s volbami a parametry:
tux@linux:~>ls -la /tmp tux@linux:~>rpm -qpl jmeno_balicku.rpm tux@linux:~>gcc -O mujprogram.c
Podstatné je, že mezera odděluje všechny části příkazu, a tím se stává v Linuxu vyhrazeným znakem.
Všechny informace, ať se jedná o text, obrázky, databázová data nebo příkazy pro konfiguraci systému, se ukládají do souborů, a to v určitém adresáři. Pomocí různých nástrojů tools a programů můžete zobrazit případně editovat obsah těchto souborů.
Speciálním znakem pro oddělování adresářů je v Unixu / slash
(v DOSuse používá zpětné lomítko). Cesta path je řetězec jmen
adresářů oddělených od sebe lomítkem /. Samotné lomítko pak označuje
kořenový adresář rootdir.
Unix rozlišuje velká a malá písmena, tj. název souboru Emil není totožný
s názvem emil. Povinné rozdělování na název souboru a
příponu, extension není třeba, pokud se nejedná o programy, které
to vyžadují (např. latex).
![]() | Tip |
|---|---|
Příjemným ulehčením při zadávání názvů souborů, resp. adresářů je funkce klávesy Tab (tabulátor). Zadejte první písmeno požadovaného souboru a stiskněte klávesu Tab . Program shell shell doplní kompletní název souboru (pokud nemáte více souborů začínajících stejně). Dvojí stisknutí tabulátoru zobrazí všechny soubory v adresáři začínající řetězcem, který jste zadali. | |
Při práci v textovém prostředí je rozumné mít přehled o adresářové struktuře linuxového systému. Základní znalosti o funkce jednotlivých adresářů a významu jejich obsahu vám totiž nejednou zrychlý práci a usnadní hledání. Nejvýše postaveným adresářem je /. Na obrázku 20.1 – „Adresářová struktura“ si můžete prohlédnout typický linuxový adresářový strom s domovskými adresáři uživatelů xyz, linux a tux. Adresářová struktura není náhodná, řídí se standardem FHS (Filesystem Hierarchy Standard). V následujícím seznamu najdete krátký popis linuxové adresářové struktury.
/kořenový (hlavní) adresář, ve kterém jsou uloženy všechny ostatní adresáře
/homeadresář s domovskými adresáři uživatelů
/devsoubory zastupující zařízení (hardware)
/etcdůležité konfigurační soubory
/etc/init.dstartovací skripty
/usr/binvolně přístupné programy
/binprogramy vyžadující rootovská práva
/usr/sbinprogramy určené pro správce systému
/sbinprogramy určené pro správce a potřebné při startu
/usr/includehlavičkové soubory C
/usr/include/g++hlavičkové soubory C++
/usr/share/docdokumentace
/usr/share/manmanuálové stránky (man man)
/usr/srczdrojové kódy
/usr/src/linuxzdrojové kódy jádra
/tmp, /var/tmpdočasné soubory
/usraplikace
/varkonfigurační soubory (také linkované z /usr)
/var/logsystémové záznamy (logy)
/var/admdata správce
/libsdílené knihovny (pro dynamicky linkované programy)
/procprocesový souborový systém
/syssystémový souborový systém s informacemi o zařízeních určených předávaných jádru
/usr/localna distribuci nezávislá rozšíření (např. programy třetích stran)
/optdodatečný software a rozsáhlejší balíčky (např. KDE, GNOME, Netscape)
Bash nabízí dvě velmi užitečné funkce, které vám skutečně velmi usnadní práci. Jsou to:
Pokud chcete vykonat příkaz, který jste již zadávali, stiskněte klávesu ↑ a zmáčkněte ji tolikrát, než najdete požadovaný příkaz. Příkaz po nalezení spustíte stisknutím klávesy Enter. Vpřed se dostanete stisknutím klávesy ↓. Příkaz jednoduše upravíte přesunutím kurzoru pomocí kláves šipek na požadované místo a přepsáním. V historii se dá vyhledávat stisknutím Ctrl-R. Promt se změní na dvojtečku. Zadejte znaky, které se ve vámi použitém příkazu vyskytovaly. Příkaz bude podle shody znaků doplněn podle obsahu historie. Pokud vám vyhledaný příkaz vyhovuje, spustíte ho stisknutím klávesy Enter. Vyhledaný příkaz lze samozřejmě upravit. U příkazu, který nejvíce vyhovuje vašim požadavkům, ukončete hledání stisknutím klávesy šipky a proveďte potřebnou úpravu.
Jména psaných souborů a příkazů lze jednoduše doplnit napsáním prvním písmen a stisknutím klávesy Tab. Pokud znakům vyhovuje více možností doplnění, nevypíše po prvním stisknutí nic a na druhé stisknutí klávesy Tab možnosti vypíše a nechá vás výběr upřesnit. V případě velkého množství možností vypíše jejich počet a zeptá se, zda si je skutečně přejete zobrazit.
Nyní, když víte, jak má vypadat příkaz a jaké se v systému SUSE LINUX nacházejí adresáře, můžeme přistoupit k příkladům.
V KDE otevřete konzoli kliknutím na ikonu monitoru s mušlí. Konzoli můžete spustit také příkazem xterm.
Zobrazte obsah svého domovského adresáře zadáním příkazu ls.
Použijte příkaz mkdir (zkratka z angl.
make directory)
k vytvoření adresáře test zadáním příkazu mkdir
test.
Nyní spusťte editor Kate stisknutím kláves
Alt-F2
a zadáním příkazu kate do okna, které se stisknutím otevřelo. Napište několik písmen a uložte je jako soubor Testfile do domovského adresáře. Linux rozlišuje velká a malá písmena, proto použijte velké T nebo následující příkazy upravte podle jména svého souboru.
Nyní si znovu prohlédněte obsah svého domovského adresáře. Tentokrát však nepište příkaz ls, ale vyvolejte ho z historie dvojitým stisknutím klávesy ↑. Příkaz spustíte stisknutím klávesy Enter. Nově vytvořený adresář test by měl být vypsán modře a soubor
Testfile černě. Díky barevnému odlišení můžete i v konzoli jednoduše rozpoznávat adresáře od souborů.
Nyní přesuňte soubor Testfile do adresáře
test pomocí příkazu mv. K tomu použijte funkci doplňování. Uděláte to tak, že napíšete mv T a stisknete klávesu Tab. Pokud nemáte v adresáři jiný soubor začínající na T, doplní se zbytek jména souboru estfile. V opačném případě stiskněte klávesu Tab ještě jednou, abyste zjistili, jaké další písmeno je nutné dopsat, aby byla volba jednoznačná. Po doplnění udělejte za jménem souboru mezeru a dopiště jméno adresáře. Výsledný příkaz bude mv Testfile test. Příkaz spustíte stisknutím klávesy Enter.
Po vykonání příkazu přesunutí se soubor Testfile již nebude nacházet v domovském adresáři. Překontrolujte přesun příkazem ls.
Po přesunutí souboru přejděte do adresáře test příkazem cd test a vypište si jeho obsah opět příkazem ls. Měli byste vidět soubor Testfile. Zpět do svého domovského adresáře se dostanete zadáním příkazu cd.
Pro vytváření kopií souborů se používá příkaz cp. Např. cp Testfile Testbackup překopíruje soubor Testfile do souboru Testbackup. Příkazem ls se opět můžete přesvědčit, že v adresáři máte oba soubory.
Při práci se soubory a adresáři je nezbytné znát a zadávat správnou cestu (umístění). Nemusíte však nutně vždy zadávat celou (absolutní) cestu, ale můžete začít se zadáváním až od adresáře, ve kterém se nacházíte.
Pro domovský adresář se používá znak ~ (tilda). Znamená to, že obsah test v domovském adresáři si můžete nechat vypsat dvěma způsoby a to buď příkazem ls test nebo zadáním absolutní cesty ls ~/test.
Obsah domovského adresáře jiného uživatele získáte příkazem ls
~UzivatelskeJmeno. V našem příkladu adresářové struktury je jedním z uživatelů tux. Pokud bychom chtěli zjistit obsah jeho adresáře, zdali bychom tedy příkaz ls ~tux.
Pro označení aktuálního adresáře se používá . (tečka). Nadřízený adresář je zastoupen dvěma tečkami. Příkazem ls .. tedy dostanete výpis obsahu adresáře, který je nadřízený vašemu aktuálnímu adresář (tomu, ve kterém se zrovna nacházíte). Příkaz ls ../.. vypíše obsah adresáře o dvě úrovně výše.
Nyní si ukážeme několik příkladů pohybu v adresářové struktuře systému SUSE LINUX.
Do domovského adresáře se přesunute zadáním příkazu cd. Zde pak vytvořte adresář test2 příkazem mkdir test2.
Do nově vytvořeného adresáře přejdete zadáním příkazu cd test2. Vytvořte zde podadresář
subdirectory. Při přechodu do něj využijte možnost doplňování. Zadejte cd su a stiskněte klávesu Tab. Jméno adresáře se samo doplní.
Nyní přesuňte již vytvořený adresář Testbackup do aktuálního adresáře
(subdirectory) bez nutnosti přecházet mezi jednotlivými adresáři. To uděláte tak, že zadáte relativní cestu mv ../../test/Testbackup .. tečka na konci příkazu je nezbytná k tomu, aby shell věděl, kam má příkaz přesunout. ../../ je v tomto příkladě relativní vyjádření domovského adresáře (adresář o dvě úrovně výše).
V porovnání s DOSem má příkazový interpret (např. bash) rozsáhlé možnosti tam, kde se používají pseudoznaky wildcard.
V Linuxu se pseudoznaky neomezují pouze na hvězdičku a otazník. Například pomocí
ls *a???.?
můžete nechat vypsat všechny soubory v aktuálním adresáři, kde šestý znak od konce
je a a předposlední znak je ..
Místo a můžete použít celý řetězec znaků. Například písmena
a, b, c, d, e, f.
Příkaz potom bude vypadat takto:
ls *[a-f]???.?
Není ani třeba zadávat písmena v abecedním pořadí:
ls *[1,3-5,M-P,a,k]???.?
Obsah souborů je možné zobrazit příkazy cat, more a less. Zatímco program cat pouze vypíše text, program more zastavuje výpis po každé zaplněné obrazovce. Konečně program less má více funkcí než klasický more a je příjemnější pro práci. Příkazem less /etc/login.defs nahrajete soubor /etc/login.defs do jednoduchého prohlížeče
less.
Pomocí klávesy / můžete zadat hledaný řetězec a potom potvrdíte klávesou Enter. Klávesa n najde potom další výskyt řetězce.
Zajímavá je klávesa F, pomocí které můžete sledovat, jak se například do protokolového souboru provádějí další zápisy. Pomocí Ctrl-c se potom vrátíte do normálního módu.
Klávesou h získáte přehled všech nastavení, která nabízí less , stiskem klávesy q opustíte nápovědu a dalším stiskem i celou aplikaci a dostanete se znovu na příkazovou řádku.
Program less získal jméno z angl. less is more (méně je více) a lze ho používat také pro předávání výstupu dalším příkazům. Více se o tomto způsobu použití dovíte v části 20.1.7 – „Roury a přesměrování výstupu“.
Pro modifikaci textových souborů použijete editor. Tradičním unixovým editorem je např. vi.
Za normálních okolností je standardní výstup monitor a standardní vstup klávesnice. Někdy se však hodí nezobrazovat výstup příkazů např. less na monitor, ale předat ho dalšímu příkazu. A k tomu slouží roury. Pro roury se používá znak |.
Obsah souborů adresáře test můžete zobrazit příkazem ls test | less. O zobrazení obsahu souborů se zde stará příkaz less. Tento způsob zobarezní má význam pouze v případě kratšího výstupu příkazu ls. V případě ls /dev | less, kde by měl být zobrazen obsah souborů v adresáři dev, byste získali jen malou část souborů.
Výstup příkazu lze také uložit nebo-li přesměrovat do souboru. Například příkazem ls test > Obsah vytvoříte nový soubor Obsah, ve kterém se uloží výpis souborů obsažených v adresáři test. Obsah souboru si můžete prohlédnout pomocí příkazu less Obsah.
Obsah souboru můžete použít jako vstup pro příkaz. Například řádky v souboru Testfile uspořádáte příkazem sort < Testfile. Výstup příkazu sort uvidíte na obrazovce. text se bude uspořádávat podle prvního písmena řádky.
jestliže byste chtěli výsledek uspořádání uložit do souboru, využijte oba výše zmíněné postupy. Např. vytvořte soubor obsahující několik náhodných nesrovnaných řádek Nesrovnany a zadejte příkaz sort < Nesrovnany > Srovnany. Výsledek si můžete prohlédnout příkazem less.
Stejně jako standardní výstup je přímo na konozli posílán také standardní chybový výstup. Pokud chcete zapisovat chybová hlášení do zvláštního souboru pojmenovaného např. chyby, musíte za příkaz, jehož chybová hlášení chcete ukládat, ještě doplnit 2> chyby. Pokud chcete do souboru uládat jak výstup tak chyby, dopište za příslušný příkaz >& vse.
Poslední možností, která nám ještě zbývá, je připojení výstupu k již existujícímu souboru. Všechny výše uvedená přesměrování totiž, pokud již existuje soubor stejného jména, tento soubor přemažou a nahradí ho svým výstupem. V některých případech je však víc než vhodné nechat předešlý obsah nezměněný a pouze k němu přístup připojit. V takovém případě místo jednoho znaku > použijte dva znaky >> najednou.
Pro vytvoření a uspořádání archivů slouží příkaz tar tape archive. Takový archiv může obsahovat jednotlivé soubory anebo i adresáře, které obsahují soubory.
Takto uspořádané archivy je potom možné také komprimovat, což ještě více snižuje jejich velikost. Většinou mají komprimované archivy příponu .tgz nebo .tar.gz, nekomprimované potom .tar. Používá se při:
rozbalování archivů (např. z CD ROM)
tar xvfz archiv.tgz
tar xvfz rozbalí komprimovaný archiv
archiv.tgz a vytvoří přitom automaticky případné
podadresáře. Zobrazí jméno souboru, který právě rozbaluje.
vytvoření archivů
tar cvfz archivfile.tgz file1 verz1
tar cvfz vytvoří komprimovaný archiv archivfile.tgz, který bude obsahovat soubor file1 a všechny soubory z adresáře verz1. Při balení souboru se zobrazí jeho jméno na obrazovce.
prohlížení obsahů archivů
tar tfz archiv.tgz
tar tfz zobrazí obsah komprimovaného
archivu archiv.tgz.
Volba z volá program GNU Zip , který komprimuje
či dekomprimuje soubory v archivu. Příkaz tar xvf archiv.tar rozbalí nekomprimovaný archiv archiv.tar. Bližší informace nám podá příkaz tar --help.
Mimo programu tar nabízí Linux také gzip.
Zadejte gzip archiv.tar. Příkazem ls,
zjistíte, že soubor archiv.tar zmizel a nahradil ho archiv.tar.gz. Tento soubor je navíc mnohem menší a vhodnější pro posílání poštou nebo uložení na externím médiu jako je stará dobrá disketa nebo dnes mnohem oblíbenější flash disk.
Nyní rozbalte tento soubor do adresáře test vytvořený v předešlých příkladech. Nejdřív soubor do adresáře překopírujte příkazem cp archiv.tar.gz test . Přesuňte se do adresáře s archivem (cd test). Soubory s koncovkou .tar.gz lze dekompripomvat neb-li rozbalit
pomocí příkazu gunzip. Zadejte tedy příkaz
gunzip archiv.tar.gz,
, který vytvoří soubor archiv.tar. Ten již umíte rozbalit příkazem tar xzvf
archiv.tar.gz.
Speciálně pro zpracování dosových souborů na pevném disku i na disketě slouží
nástroje mtools, které obsahuje balíček mtools. Každý
z těchto malých programů se pokouší co nejlépe emulovat originální dosový
příkaz. Všechny příkazy z mtools mají stejné názvy jako v DOSu, ale
všechny jsou uvozeny písmenem m, např. mcopy.
![]() | Varování |
|---|---|
Příkazy mtools můžete používat pouze v případě, kdy není připojená disketa (nebo pevný disk)! | |
Dosové názvy souborů může ještě předcházet písmeno zařízení následované
dvojtečkou. Pro oddělování adresářů a souborů se v DOSu používá znak
\bslash.
S mtools můžete psát jak /, tak i \bslash. Když
používáte \bslash nebo pseudoznaky wildcard jako např.
* nebo ?, musí být psány mezi dvoje uvozovky, protože jinak
se interpretují dříve než příkaz.
Hvězdička * odpovídá v mtools řetězci vyber vše
*.* v DOSu. Místo znaku / pro volby se používá, což je
ostatně v Linuxu běžné, minus -.
Standardním zařízením pro mtools je a:. Pokud potřebujete
používat jiná zařízení či adresáře, musíte použít příkaz mcd.
Nezapomeňte se přesunout zpátky do hlavního
adresáře zařízení, než vsunete další disketu, protože jinak není
možné načíst nový adresářový strom.
V současné době jsou podporovány následující dosové příkazy mtools:
Tabulka 20.1. Příkazy z mtools
mattrib | Změnit atributy souboru (hidden, system atd.). |
mcd | Změnit adresář. |
mcopy | Kopírovat z/do DOSu a z/do Unixu, funguje také rekurzivně. Nezapomeňte, že také zde musíte vždy určit cílový adresář nebo soubor. |
mdel | Smazat dosový soubor. |
mdeltree | Rekurzivně smazat celý dosový adresář. |
mdir | Zobrazit obsah dosového adresáře. |
mformat | Vytvořit dosový souborový systém na low-level formátovaném disku. Low-level formátování se provádí příkazem fdformat. |
mlabel | Přejmenovat dosové zařízení. |
mmd | Vytvořit dosový podadresář. |
mrd | Smazat dosový podadresář. |
mread | Načíst dosový soubor do unixového systému. |
mren | Přejmenovat dosový soubor. |
mtype | Zobrazit obsah dosového souboru. |
mwrite | Low-level kopírování unixového souboru do dosového souborového systému. |
Podporované formáty jsou následující: pro mechaniku a: (3.5) a
b: (5.25) 720 kB a 1.44 MB, resp. 360 kB a 1.2 MB.
V souboru /etc/mtools.conf je možné změnit původní nastavení. Každý zápis
je na jednom řádku, např:
název zařízení (v DOSu), např. a:
soubor v Linuxu, kde je zařízení, např. /dev/fd0
fat bity (12 pro disketovou mechaniku)
počet stop, hlav a sektorů
Změnou těchto parametrů můžete například používat dvě 3.5 mechaniky.
Nesmíte zde ale zadat dvakrát totéž dosové zařízení (písmeno A,B,C...) ani
linuxové zařízení (/dev/...).
Po přečtení této části byste měli být schopní provádět základní operace v textovém režimu. Pokud se nyní chcete zbavit všech zkušebních adresářů a souborů, které jste vytvořili při zkoušení uvedených postupů, použijte ke smazání příkazy rm a rmdir. Popis nejdůležitějších příkazů spolu s popisem jejich používání najdete na konci této kapitoly.