Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

C - shell C-shell (CS) je interpret uživatelských příkazů využívající pravidla a syntaxi podobná jazyku C. Některé rysy má navíc (historie, alias, …) *řetězec.

Podobné prezentace


Prezentace na téma: "C - shell C-shell (CS) je interpret uživatelských příkazů využívající pravidla a syntaxi podobná jazyku C. Některé rysy má navíc (historie, alias, …) *řetězec."— Transkript prezentace:

1 C - shell C-shell (CS) je interpret uživatelských příkazů využívající pravidla a syntaxi podobná jazyku C. Některé rysy má navíc (historie, alias, …) *řetězec libovolné (i nulové) délky ?libovolný jeden znak [xyz…]kterýkoli ze znaků v závorkách \zbavuje následníka speciálního významu "retezec"zbavuje speciálního významu celý řetězec (kromě znaku $) 'retezec'zbavuje speciálního významu všechny znaky mezi apostrofy Jako interpret příkazových řádků působí CS shodně s shellem standardním, implicitní prompt je znak %. % příkaz [-přepínače] [argumenty] Zástupné znaky usnadňují zadávání argumentů příkazů. Poněkud odlišně jsou zpracovávány soubory začínající tečkou. Znak *, ? ani [ ] tuto tečku nezachytí - nemohou být omylem postiženy speciální soubory. Používá se znak ~ (tilda) ve významu domovský adresář. Bilbo 2% cd / Bilbo 3% cd ~ Bilbo 4% pwd /usr/people/vdumek Bilbo 5%

2 C - shell Znak ~ umožňuje odvolání na domovský adresář uživatele, pokud jsou patřičná práva ~jmeno_uzivatele Bilbo 27% ls ~ysevci03 DVI.txt asm dec mbox tedka DVISCOPE.EXE bin dumek monitor utilz NETBUSPRO.zip dead.letter irix stranka Bilbo 28% Přesměrování standardních souborů <přiřazení vstupu >přiřazení výstupu >>připojení výstupu na konec >&přesměrování standardního a chybového výstupu >>&připojení standardního a chybového výstupu

3 C - shell CS umožňuje chránit soubory před přepsáním při špatném přesměrování pomocí nastavení proměnné noclobber, potlačení vlivu proměnné noclobber je provedeno znakem !. Bilbo 72% set noclobber Bilbo 73% cat exi1 > exi exi: File exists Bilbo 74% cat exi1 >! exi Bilbo 75% unset noclobber Bilbo 76%

4 C - shell Přesměrování výstupu jednoho programu do vstupu jiného programu - operátor kolona |. Pro přesměrování standardního chybového souboru - operátor |&. Při zadání jednoho nebo několika příkazů na příkazovém řádku vzniká job. Je-li příkazový řádek ukončen znakem &, je tento job spuštěn na pozadí (background job). Uživatel má ihned k dispozici prompt CS pro zadávání dalšího příkazu. Job na pozadí tak může probíhat současně s jobem prováděným na popředí (foreground job). Při spuštění jobu na pozadí vrací CS číslo jobu v hranatých závorkách a PID procesů, z nichž se job skládá. Při ukončení práce jobu se zobrazí jako Done. Bilbo 5% cat exi? | wc >cat.ls & [1] 27591 27592 Bilbo 6% [1] Done cat exi? | wc > cat.ls Bilbo 6%

5 C - shell Jestliže job neskončí normálně, bude místo slova Done uvedeno např. Killed. Na popředí může běžet pouze jeden job. Pro jeho zrušení je potřeba vyslat signál INTR ( ). Takový job již nelze spustit pro dokončení jeho činnosti. Pro pozastavení jobu je potřeba vyslat signál STOP ( ). CS potom hlásí Stopped a nabízí nový prompt. Pozastavený job je možné znovu spustit na pozadí příkazem bg nebo po zadání jiných příkazů a jejich dokončení jej spustit na popředí příkazem fg. Stejně jako job na popředí lze ovládat i job na pozadí příkazy kill a stop. Protože na pozadí může běžet více jobů a více jobů může být pozastaveno, určuje se pomocí argumentů jednotlivých příkazů, kterého jobu se akce týká. Příkaz jobs vypisuje informace o jobech na pozadí (běžících nebo pozastavených). Pokud se u příkazů fg, bg, kill a stop nezadá s argumentem čísla jobu, je ovlivněn aktuální job. Argumenty jsou uvedeny ve tvaru %1, %2,... (kill %1), nebo se uvádí řetězec, který jednoznačně určuje zadaný příkazový řádek (stop %find). Na předcházející job se dá odvolat argumentem %-. Příkaz jobs vypíše pouze joby spuštěné v aktuálním CS, pro vyhledání procesů spuštěných jinými kopiemi CS – příkaz ps.

6 Bilbo 38% find / -name "csh*" -print >& /dev/null & [1] 27624 Bilbo 39% find / -name test -print >& /dev/null & [2] 27625 Bilbo 40% ed exi1 132 Stopped Bilbo 41% jobs [1] - Running find / -name csh* -print >& /dev/null [2] Running find / -name test -print >& /dev/null [3] + Stopped ed exi1 Bilbo 42% kill %3 Bilbo 43% jobs [1] + Running find / -name csh* -print >& /dev/null [2] - Running find / -name test -print >& /dev/null [3] Done ed exi1 Bilbo 44% jobs [1] + Exit 1 find / -name csh* -print >& /dev/null [2] + Exit 1 find / -name test -print >& /dev/null Bilbo 45% jobs Bilbo 46% Bilbo 17% find. -name "csh*" -print./p_man/cat4/cshrc.z./u_man/cat1/csh.z Bilbo 18% pwd /usr/share/catman Bilbo 19%

7 C - shell Označení jobů +aktuální job -předcházející job Runningběžící joby Stoppedpozastavené joby Killednásilně ukončené joby Donedokončený job Exitukončené joby (větší počet) Proměnné Přiřazení hodnoty proměnné (hodnotou je řetězec, některé příkazy dokáží i matematické operace - expr) se provádí příkazem set: % set jméno_proměnné=hodnota Samotný příkaz set vypíše hodnoty všech proměnných. Bilbo 55% set argv () cwd /usr/people/vdumek history 100 home /usr/people/vdumek mail /usr/mail/vdumek path (/usr/sbin /usr/bsd /sbin.) prompt Bilbo !% shell /bin/csh status 0 term vt100 user vdumek Bilbo 56%

8 C - shell U některých proměnných nazáleží na jejich hodnotě, pouze na existenci. Tyto proměnné se nastavují obvykle na začátku práce u terminálu, nebo v souboru.login: % set ignoreeof noclobber nastavení proměnné % unset noclobberzrušení proměnné Proměnné si může uživatel definovat a využívat je libovolně. noclobber proti přepsání souborů ignoreeof činnost CS není ukončena CTRL-d (exit, logout)

9 C - shell % history 78 cat.cshrc 79 ls 80 ls -C 81 history 82 clear 83 set history=10 84 history 85 set 86 set prompt='% ' 87 history % Mechanismus historie Mechanismus historie je významnou pomůckou při práci s CS v interaktivním režimu. Slouží k zapamatování předcházejících příkazů, k návratu k nim a jejich případné modifikaci. Počet příkazových řádků, které jsou zapamatovány je dán obsahem proměnné history. Příkaz history vypíše poslední zadané příkazy (podle obsahu proměnné history) s jejich pořadovými čísly. Mechanismus historie se vyvolá znakem !. Za ním může následovat číslo řádku nebo text, který jednoznačně určuje začátek řádku (vybírá se vždy poslední řádek, odpovídající zadanému vzoru). Na poslední řádek se dá odvolat !!, určení může být také relativně, ve vztahu k aktuálnímu řádku !-2, může se také používat pouze část příkazového řádku určením pořadí slova na řádku, první slovo má číslo 0. (!n:m znamená řádek n a na něm slovo m). $ označuje poslední slovo na řádku ($! poslední slovo na předcházejícím řádku – nejčastěji se používá při manipulaci s jedním souborem).

10 C - shell 0první slovo (příkaz) nn-tý argument (n+1 slovo) ^první argument (1) $poslední slovo x-yslova od x do y včetně -ytotéž co 0-y *totéž co ^-$ x*totéž co x-$ -h bez čísel řádků, -r v obráceném pořadí Slova z předcházejících řádků lze modifikovat pomocí modifikátorů: hodřezává ze jména souboru poslední slovo (za posledním \) s/řetězec1/řetězec2nahrazuje řetězec1 řetězcem řetězec2 pvypíše nově vytvořený příkaz, ale neprovede ^řetězec1^řetězec2nahrazuje řetězec1 řetězcem řetězec2 v posledním příkazovém řádku Modifikátory se uvádějí za modifikovaným slovem odděleny znakem :. V případě lomítka (/) v substituci musíme použít zpětné lomítko (\) pro zrušení speciálního významu. Využívaným modifikátorem je ^, který uvozuje substituci na posledním příkazovém řádku.

11 C - shell Bilbo 13% history 1 set history=15 2 ls -la 3 vi test.c 4 cat test.c 5 cc test.c -o test -S 6 jobs 7 cd / 8 cat /usr/people/vdumek/test.s 9 cat ~/test.c 10 history 11 echo cat /usr/people/vdumek 12 cat /usr/people/vdumek/test.c 13 history Bilbo 11% echo !8:h echo cat /usr/people/vdumek cat /usr/people/vdumek Bilbo 12% !8:s/test.s/test.c cat /usr/people/vdumek/test.c … Bilbo 13% Bilbo 14% !12:p cat /usr/people/vdumek/test.c Bilbo 15% ^test.c^exi cat /usr/people/vdumek/exi … Bilbo 16% Bilbo 19% cd Bilbo 20% cat terst.c Cannot open terst.c: No such file or directory Bilbo 21% ^er^e cat test.c …

12 C - shell Mechanismus alias Mechanismus alias umožňuje provádět transformace na vstupu příkazů, přejmenovat příkazy a sdružit příkazy do sekvencí. Obecný formát: alias [jméno definice] jméno je řetězec označující nový příkaz, definice je jeho popis. Pokud nejsou uvedeny argumenty, vypíše příkaz alias všechny platné definice. Bilbo 22% alias ls ls -C Bilbo 23% alias h history Bilbo 24% alias h history ls ls -C Bilbo 25% h 11 echo cat /usr/people/vdumek … Kvůli možnosti dezinterpretace speciálních znaků se vyplatí uzavírat složitější definice do apostrofů. Jelikož definice alias platí pouze pro aktuální kopii CS, zapisují se většinou do souboru.cshrc, takže pak platí vždy. Ke zrušení aliasu slouží příkaz unalias. Bilbo 30% alias ll 'ls -la | more' Bilbo 31% ll … Bilbo 32% unalias ll Bilbo 33% ll ll - Command not found Bilbo 34%

13 Kromě příkazů alias a history existuje řada dalších vnitřních příkazů CS. limit – bez argumentů vypíše omezení platná pro uživatelský proces (cputime – maximální čas procesoru v sekundách, filesize – maximální velikost souboru v KB,...). Pro změnu hodnoty se mění tato nastavení (limit filesize 512). rehash – CS si znovu přečte jména souborů (příkazů) v adresářích, do nichž má nastavenou cestu (implicitně čte pouze při spuštění). repeat – způsobí opakování příkazu (repeat n příkaz – bude se opakovat n krát) logout – odhlášení od systému setenv – nastavuje proměnné prostředí (setenv TERM vt100) source soubor – aktuální CS přečte příkazy ze souboru soubor. Bilbo 44% limit cputime unlimited filesize unlimited datasize 524288 kbytes stacksize 65536 kbytes coredumpsize unlimited memoryuse 55764 kbytes descriptors 200 vmemoryuse 524288 kbytes HOME=/usr/people/vdumek PATH=/usr/sbin:/usr/bsd:/sbin:/usr/bin:/usr/bin/X11: LOGNAME=vdumek TZ=CET-1CEST,M3.5.0/2,M10.5.0/3 TERM=vt100 USER=vdumek LANG=en_CZ SHELL=/bin/csh REMOTEHOST=A4705C.fme.vutbr.cz MAIL=/usr/mail/vdumek PWD=/usr/people/vdumek

14 C - shell jako programovací jazyk CS podporuje vztváření scriptů, které mohou být spuštěny příkazem % csh scénář argumenty I v případě, že je script opatřen příznakem spustitelnosti, musíme jej předávat explicitně CS, jinak se jeho provedení předá standardnímu shellu. Bilbo 112% cat scrcs setenv Bilbo 113% scrcs setenv: Not found Bilbo 114% csh scrcs HOME=/usr/people/vdumek … Proměnná CS může mít charakter pole (proměnná PATH). Při zadávání jsou všechny hodnoty uzavřeny do závorek a navzájem odděleny mezerami. Bilbo 118% set prom=(prvni druha treti) Bilbo 119% echo $prom prvni druha treti Bilbo 120% echo $prom[2] druha

15 C - shell jako programovací jazyk $?proměnnávrací hodnotu 1, pokud je proměnná definována (jinak 0) $#proměnnávrací počet prvků proměnné $proměnná[n]vrací hodnotu n-tého prvku proměnné $proměnná[x-y] vrací hodnoty proměnné od prvku x do y včetně $ntotéž co $argv[n] $*totéž so $argv $<vrací následující řádek ze standardního vstupu (lze použít pro psaní interaktivních scénářů) Bilbo 126% echo $prom[1-2] prvni druha Bilbo 127% echo $?prom 1 Bilbo 128% echo $?prom1 0 Bilbo 129% Bilbo 1% set odpoved=$< Ahoj!!! Bilbo 2% echo $odpoved Ahoj!!! Bilbo 3%

16 C - shell jako programovací jazyk CS umí vyhodnocovat výrazy na základě hodnot proměnných s použitím operátorů (uvedeny podle stoupající priority). Operátory a operandy musí být odděleny mezerami. Další konstrukce mohou být vytvořeny pomocí konstrukce –x soubor, která testuje vlastnosti souboru. Má-li soubor dotyčnou vlastnost, vrací tato konstrukce hodnotu 1 (jinak 0). Výrazy se používají v podmínkách selektivních a iteračních struktur. ||logický součet &&logický součin ==rovnost řetězců !=nerovnost řetězců <=menší nebo rovno >=větší nebo rovno <menší než >větší než +sčítání -odčítání *násobení /celočíselné dělení %zbytek po dělení !negace rsoubor lze číst wdo souboru lze psát xsoubor lze spustit esoubor existuje ouživatel je vlastníkem souboru zsoubor má nulovou velikost fsoubor je obyčejný soubor dsoubor je adresář

17 C - shell jako programovací jazyk Podmíněné příkazy if (výraz) příkaz Je-li výraz pravdivý, provede se příkaz, ten musí být jednoduchý, nesmí to být kolona, ani seznam příkazů. if (výraz) then příkazy1 else if (výraz2) then příkazy2... else příkazyN endif Klíčová slova else a endif musí stát na začátku řádku, klíčové slovo if musí být samostatně na řádku nebo za slovem else. Část else je nepovinná.

18 C - shell jako programovací jazyk switch (vzor) case řetězec1: příkazy1 breaksw... case řetězecN: příkazyN breaksw default: příkazyDEF breaksw endsw Pokud není uvedeno klíčové slovo breaksw, pokračuje porovnání s dalšími řetězci. Část default je nepovinná.

19 C - shell jako programovací jazyk Příkazy cyklu foreach proměnná (seznam_hodnot) příkazy end while (výraz) příkazy end Příkazy se provádějí v případě nenulové hodnota výrazu, iterace mohou být ovlivněny příkazy break a continue. CS umožňuje i nepodmíněný skok, který způsobí předání řízení skriptu na řádek následující za řádkem řetězec: goto řetězec Bilbo 1% foreach i (78 ab we 123) ? echo $i ? end 78 ab we 123 Bilbo 2% Podrobný popis CS man csh

20 Zpracování textu Regulární výraz Pro manipulaci s textem je v operačním systému UNIX k dispozici mimo editory řada filtrů, s jejichž pomocí lze upravovat obsah textových souborů. Ve všech těchto programech hraje významnou roli pojem regulární výraz. Je to syntaxe, která umožňuje specifikovat mnoho různých řetězců. Nejjednodušším regulárním výrazem je samotný řetězec: abcd1234 Takovému regulárnímu výrazu odpovídá jediný odpovídající řetězec: abcd1234 Pomocí operátorů můžeme rozšířit oblast platnosti regulárního výrazu. Jedním z nich je operátor. (tečka). Nahrazuje v regulárním výrazu libovolný znak.

21 Zpracování textu Regulární výraz Odpovídající řetězec a.cd1234aacd1234a1cd1234 …a!cd1234 azcd1234... aAcd1234 … aZcd1234 Operátor * zastupuje libovolněnásobný výskyt znaku před operátorem. ab*a(nulový počet znaků b) ab(jeden znak b) abb abbb abbbb...

22 Zpracování textu Spojením operátorů pro libovolný znak a jeho opakování vznikne operátor.*, který zastupuje libovolný řetězec. x.*všechny řetězce začínající znakem x Operátor [] (hranaté závorky) zastupuje kterýkoli znak uvedený mezi hranatými závorkami. [sSt]elesele Sele tele Operátor - (pomlčka) mezi hranatými závorkami vytváří interval v rámci ASCII posloupnosti znaků. [0-9] libovolná číslice[A-Za-z] libovolné písmeno

23 Zpracování textu Operátor ^ označuje začátek řádku, operátor $ označuje konec řádku. ^x.*y$ jakýkoli řádek začínající na x a končící y Pokud je potřeba uvést v regulárním výrazu některý ze speciálních znaků., *, [, ], ^, \ nebo $, je potřeba je opatřit prefixem \. Jinou možností je uzavřít regulární výraz do apostrofů. ^\[.*$řádky, které začínají znakem [ Regulární výrazy jsou klíčem ke zvládnutí nástrojů ke zpracování textu (grep, sed, awk, …), editorů a používají se i v shellu. Syntaxe regulárního výrazu v shellu se liší od syntaxe použité v prostředcích zpracování textu.


Stáhnout ppt "C - shell C-shell (CS) je interpret uživatelských příkazů využívající pravidla a syntaxi podobná jazyku C. Některé rysy má navíc (historie, alias, …) *řetězec."

Podobné prezentace


Reklamy Google