Základy ovládání - CLI
Jádro operačního systému lze ovládat různými shelly, neboli uživatelskými
rozhraními. Nejběžnějšími jsou rozhraní textové a grafické, která jsou
standardně ovládána klávesnicí a myší. Ze seriálu Star Trek známe hlasové
rozhraní a např. z filmu Final Fantasy 3D virtuální display. V tomto textu se
budu věnovat popisu textového rozhraní (command line interpretter - CLI) pro
Linux a další unixové OS. Různé CLI se liší vestavěnými příkazy, syntaxí pro
zadávání příkazů a doplňkovými funkcemi. Nejpoužívanějším CLI je zřejmě bash.
Při přihlašování v textovém shellu je nutné na výzvu "login:" zadat uživatelské
jméno. Dále je třeba ověřit totožnost pomocí hesla zadaného na výzvu
"Password:", které se při psaní nezobrazuje. Pokud bylo jméno nebo heslo zadáno
nesprávně, objeví se znovu výzva "login:". V případě úspěchu se objeví
přihlašovací text a řádek k zadání příkazu zvaný prompt. Prompt bashe může
vypadat například takto:
[milar@Ekonom milar]#
Hlavní ovládací obrazovce se říká konzole. Unixové systémy nabízejí tzv.
virtuální konzole, což jsou obrazovky, mezi nimiž je možné přepínat. Na každé
virutální obrazovce může běžet nejen jiný program, ale i jiný CLI (např. sh,
tcsh, pdksh) spuštěný třeba i jiným uživatelem.
Některé kombinace kláves mají zvláštní význam:
- Control+C = ukončení právě běžícího programu
- Control+D = odhlášení se z daného CLI
- Control+Z = přeručení právě běžícího programu (další běh příkazem 'bg')
- Alt+F1 = přepnutí do 1. virtuální konzoly
- Alt+F2 = přepnutí do 2. virtuální konzoly
- Alt+F3 = přepnutí do 3. virtuální konzoly
- Alt+F4 = přepnutí do 4. virtuální konzoly
- Alt+F5 = přepnutí do 5. virtuální konzoly
- Alt+F6 = přepnutí do 6. virtuální konzoly
- Alt+F7 = přepnutí do grafické konzoly (pro návrat 'Alt+Control+F1 až F6')
- Alt+vpravo = přepnutí o 1 konzolu vpravo
- Alt+vlevo = přepnutí o 1 konzolu vlevo
- Shift+Page Up = posunutí obrazovky o půl stránky nahoru
- Shift+Page Down = posunutí obrazovky o půl stránky dolů
- Shift+Insert = vložení obsahu schránky na pozici kurzoru
- Tab = pokusí se doplnit příkaz nebo jméno souboru
Některé znaky zadávané do příkazového řádku mají také zvláštní význam:
- . = aktuální adresář
příklad: ./programek (spustí soubor programek z aktuálního adresáře)
- .. = nadřazený adresář
příklad: cd .. (přejde do adresáře nadřazeného aktuálnímu adresáři)
- ; = oddělovač příkazů, který umožňuje zadat na jeden řádek více příkazů
příklad: echo "Přesný čas:"; date (vypíše pod sebe zadaný text a čas)
- | = roura, neboli nástroj, který předá výstup jednoho programu druhému
příklad: rpm -qa | sort (setřídí seznam nainstalovaných balíčků)
- / = odděluje úrovně v adresářovém stromu při zadávání cesty k souboru
příklad: /home/milar/obrazky/tucnak.gif
- \ = escape sekvence, která potlačuje zvláštní význam následujícího znaku
příklad: catdoc /mnt/vfat/muj\ text.doc (zobrazí soubor s mezerou v názvu)
- & = příkaz před tímto znakem bude spuštěn na pozadí, čímž se uvolní shell
příklad: rpm -qpil *.rpm > ~/RPMS.txt & (vytvoří soubor s přehledem rpm)
- > = přesměrování standardního výstupu do souboru
příklad: ls > list.txt (výpis adresáře bude uložen do souboru list.txt)
- 2> = přesměrování standardního chybového výstupu
příklad: rpm -Uvh *.rpm 2> ~/i.log (chyby při instalaci vypíše do souboru)
- >> = přesměrování standardního výstupu na konec souboru
příklad: ls data >> list.txt (výpis adresáře data bude přidán do list.txt)
- < = přesměrování standardního vstupu ze souboru
příklad: sort < list.txt (příkaz sort setřídí řádky souboru list.txt)
- << = here dokument, neboli zadání vstupu na více řádků z klávesnice
- * = zástupný znak za nula nebo více libovolných znaků ve jménu souboru
příklad: /home/milar/manual* (všechny soubory začínající na manual)
- ? = záskupný znak za právě jeden znak ve jménu souboru
příklad: /home/milar/list? (všechna pětiznaková jména začínající na list)
- [] = zástupný znak nahrazující právě jeden znak v hranatých závorkách
příklad: /home/milar/list[123] (znamená list1, list2 a list3)
- () = pro příkaz v závorkách se spustí nový shell
příklad: LC_ALL = cs_CZ; (rpm --help) (vypíše nápovědu v angličtině)
- {} = příkaz ve složených závorkách bude vykonán v aktuálním shellu
- "" = v řetězci mezi uvozovkami budou interpretovány pouze metaznaky
- '' = řetězec mezi apostrofy bude převzat beze změn
- `` = řetězec mezi obrácenými apostrofy je nahrazen výsledkem příkazu
příklad: rpm -qf `which who` (vypíše, ze kterého balíčku je příkaz who)
VAROVÁNÍ: spuštění dvou příkazu rpm současně poškodí databázi rpm !!!
Výše zmíněné speciální znaky lze použít i v emulátoru terminálu v grafickém
prostředí.
Poznámky k práci s myší:
- Držení levého tlačítka a táhnutí kurzoru nad textem způsobí vybrání tohoto
textu a jeho vložení do schránky. To platí nejen pro textové editory, ale např.
i pro internetové prohlížeče nebo poštovní klienty.
- Kliknutí prostředním tlačítkem vloží obsah schránky na pozici kurzoru.
Seznam nejpoužívanějších příkazů k dispozici v samostatném souboru (anglicky).
K nejoblíbenějším příkazům patří alias, pomocí něhož lze již existující příkazy přejmenovat nebo vytvořit jejich zkratky.
Příkazy lze také zapisovat do textového souboru, a ten potom spouštět jako skript (dávku).
Díky této vlastnosti, schopnosti práce s proměnnými, cykly a podmíněnými odskoky lze bash chápat jako programovací jazyk.