Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

vyuka:metaznaky_shellu [2016/11/02 15:05]
admin uvozovky neprevadet
vyuka:metaznaky_shellu [2023/11/15 20:54]
Řádek 1: Řádek 1:
-=====Metaznaky shellu===== 
  
-====Úvod==== 
-//Shell// je základní program, pomocí kterého v textovém režimu komunikuje uživatel s počítačem. První, co si každý vyzkouší je, že se pomocí něj dají spouštět programy (textové - např. editor ''nano'' i grafické (například ''firefox''). Shell toho ale umí mnohem víc. 
- 
-===Mimochodem:=== 
-Samotných shellů existuje více. Klasický shell se jmenuje //Bourne shell//, a jeho binárka je ''/bin/sh'' . Větší uživatelský komfort nabízí BASH(//Bourne again shell//) - ''/bin/bash'', který je se ''sh'' zpětně kompatibilní. Pak jsou také další shelly - například ''csh'', jehož syntaxe se více podobá programovacímu jazyku C. 
- 
-**Shell** je plnohodnotný programovací jazyk - má proměnné, i klasické řídící příkazy (if-else, for, while). Oproti většině klasických jazyků (C,C#,Java) se ovšem nekompiluje, ale //interpretuje// - proto se mu občas říká //skriptovací//. 
- 
-Většinou používáme shell ke spouštění příkazů a programů. Přičemž se na první pohled nepozná rozdíl mezi interním příkazem shellu (echo, cd, read, pwd, let, eval, set, exit, true) a externím programem (jenž je uložen v jedné ze složek v systémové $PATH, kupříkladu v /usr/bin ... příkladem je ''cut'',''sort'',''nano'',''tr'' ...) 
- 
-===Proces vykonávání=== 
-Co ale shell udělá, když mu napíšete něco jako: 
-<code bash> 
-cut -f: -n3 
-</code> 
- 
-  - Koukne se do proměnné $IFS. Ta je defaultně nastavená na bílý znak (mezeru). ''IFS'' znamená //Internal Field Separator// - //vnitřní oddělovač polí//. Tímto znakem se pak zadaný příkaz rozřeže. 
-  - První neprázdná položka se bere jako příkaz (může jít i o program s cestou). Shell spustí tento příkaz/program ... a nasype mu jako parametry další položky. V tomto příkladu tedy dostane program cut (který se nachází na disku jako binárka /usr/bin/cut) parametry ''-f:'' a ''-n3''. 
-  - Po ukončení programu shell znovu zobrazí příkazovou řádku. Ta může vypadat asi takhle: 
-<code bash> 
-uzivatel@pocitac:~$ 
-</code> 
----- 
- 
- 
-===Ukončení programů:=== 
-Některé programy se ukončí samy poté, co provedou výpočet a zobrazí výstup. Některé ale ne. Většinou čekají na nějaký uživatelský vstup, nebo jsou svou podstatou nekonečné (''yes'', ''ping''). Neexistuje ustálený způsob, jak je zavřít. První pokus by měl být '''Ctrl+D'''. To shellu zpravidla předá znak označující konec vstupu. Nezabere-li to, '''Ctrl+C''' -  vyšle běžícímu programu signál SIGINT (signál přerušení). Některé složitější programy však mají vlastní způsob vypínání. Většina (třeba ''nano'' se uzavírá ctrl+x) to alespoň ukáže v nějakém menu. Textové editory/zobrazovače se uzavírají napsáním '':q'' a odentrováním. Takhle zavřete zapeklitý textový editor ''vi'', a také ''man'',''less'',''more''. 
- 
- 
-===Metaznaky=== 
-Metaznaky jsou znaky na vstupu se speciálním významem. 
- 
-^ Znak     ^ Co dělá ^ Příklad ^ 
-| ''$'' | Uvozuje proměnnou při jejím vypisování. || 
-| ''[mezera]'' | Oddělovač parametrů || 
-| ''*'' | Ve jménech souborů - rozvíjení všech možností jakéhokoliv počtu znaků | ''cp *.jpg /mnt/disk/obrazky/'' 
-| ''?'' | Ve jménech souborů - rozvíjení všech možností jednoho znaku | ''rm ABC_??.jpg''| 
-| ''[konec řádky (enter)]'' a '';''|Oddělovač jednotlivých příkazů|| 
-| (''>'' a ''<'') | Přesměrování do/ze souboru | ''echo ahoj > denik.txt''; ''echo neco_dalsiho %%>%%> denik.txt'' 
-| ''%%|%%''  ''(Pípa)'' | Přesměrování výstupu do dalšího příkazu | ''echo test%%|%%  cat'' | 
-| ''&'' | Vykonání příkazu na pozadí | ''ps &'' | 
-| ''&&'' | řetězení příkazů; druhý příkaz se vykoná pouze pokud první uspěje | ''test -e file && exit'' | 
-| ''`'' [zpětný apostrof] | Oblast ohraničenou dvěma apostrofy shell nejprve vykoná jako příkaz, a případný výstup doplní do daného místa | ''echo `cat soubor`'' | 
- 
-===metaznaky pro ignorování metaznaků:=== 
- 
-^ Znak     ^ Co dělá ^ Příklad ^ 
-| ''\'' | Ignoruj význam následujícího znaku | <code>echo \*</code> | 
-| ''"'' | V úvozovkách se ingorují metaznaky krom $, \, `` | <code>echo "retezec s mezerami"</code> | 
-| ''\''' |V apostrofech se ignorují všechny metaznaky | <code>echo 'test "doslovneho" retezce, * zustava'</code> | 
- 
- 
-===Příklady=== 
-<code bash> 
-# Každý z řádků vytiskne zpětné lomítko 
-echo \\ 
-echo '\' 
-</code>  
-   
- 
-<code bash> 
-#Teď je 19:05 
-echo "Teď je `date +%H:%M`" 
- 
-#Prakticky stejné jako cat * 
-cat `ls` 
-</code> 
- 
-===Odkazy=== 
-* [[http://www.gybon.cz/~rusek/vyuka/linadd.html]] 
-* [[http://juracerny.sweb.cz/ppu/ppu1.htm]] 
Nahoru