1 / 31

Operačné systémy

Operačné systémy. Teoretické cvičenia II. Advanced C shell. Postup syntaktickej analýzy príkazového riadku csh. 0. Načítanie riadku

nelia
Download Presentation

Operačné systémy

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Operačné systémy Teoretické cvičenia II. Advanced C shell

  2. Operačné systémy - I. Advanced C shell Postup syntaktickej analýzy príkazového riadku csh 0. Načítanie riadku 1. History substitution (interpretácia znakov '!' a '^') 1% ls /usr/include 2% set ifiles = `!!` set ifiles = `ls /usr/include` (história sa substituovala skôr ako príkaz) • set histchars = ""

  3. Operačné systémy - I. Advanced C shell Parsing (pokr.) 2. Finding words (= reťazce oddelené medzerou, tabulátorom a znaky & | ; > < ( ) && || >> << (pokiaľ im nepredchádza \) Reťazec v úvodzovkách a oboch apostrofoch je ponechaný bez zmeny, aj keď obsahuje predošlé znaky.

  4. Operačné systémy - I. Advanced C shell Parsing (pokr.) 3. Updating the history listVýsledkom predošlého kroku je oddelenie reťazcov (lexikálnych jednotiek) práve jednou medzerou. Upravený príkaz sa uloží do zoznamu príkazov, hoci v tejto chvíli ešte interpret nevie, či je príkaz správny.

  5. Operačné systémy - I. Advanced C shell Parsing (pokr.) 4. Parsing the sequence of wordsAnalýza lexikálnych jednotiek na riadku prebieha v takomto poradí: 4.1. Quoting with ' and "(Obe citácie zabránia: filename expansion, redirection, bg execution, pipe character. Apostrofy (= single quotation mark) naviac bránia variable expansion a command substitution.)

  6. Operačné systémy - I. Advanced C shell Parsing (pokr.) 4.2. Alias substitution 4.3. I/O redirection, background execution and pipe are recognized (but not processed yet).Presmerovanie sa týka iba posledného príkazu alebo skupiny v zátvorkách (). V pozadí sa však vykonáva celý príkazový riadok. C shell vylúči tieto špeciálne znaky zo zoznamu argumentov a poznačí si ich výskyt (použije ich v bode 5). 4.4. Variable substitutionSubstitúcia premenných sa uskutočňuje dosť neskoro - zdroj častých chýb.

  7. Operačné systémy - I. Advanced C shell Parsing (pokr.) 4.5. Command substitutionV tejto chvíli vyvolá subshell a odovzdá mu príkaz, ktorý bol uzavretý v obrátených apostrofoch. Výsledok vloží na miesto pôvodného príkazu. 4.6. Filename expansion

  8. Operačné systémy - I. Advanced C shell Parsing (pokr.) 5. Execute each command(Tu nastupuje interakcia s Unixom - ktoré programy treba vykonať, aké súbory použiť pre vstup a výstup) (5.1. Aliases - už boli dosadené v bode 4.2) 5.2. Built-in commands 5.3. External commands

  9. Operačné systémy - I. Advanced C shell Skryté súbory • .meno • ls ls -a • * .* • (.* *)

  10. Operačné systémy - I. Advanced C shell Skryté súbory (pokr.) • set nonomatch • ({.*,*}) • (`ls -a`)

  11. Operačné systémy - I. Advanced C shell Prázdny adresár • set nonomatchset f = (*)if ("$f" == "*" && ! -e "$f") then echo prazdnyendif • if (`ls -a | wc -l` == 2) then echo prazdnyendif • find . -type d -links 2

  12. Operačné systémy - I. Advanced C shell Premenné • set meno • unset meno • if ($?meno) ...

  13. Operačné systémy - I. Advanced C shell Premenné prostredia • setenv prem hodnota • unsetenv prem • PATH, TERM, HOME - environment • path, term, home - C shell

  14. Operačné systémy - I. Advanced C shell Ladenie skriptov • prepínače • -x • -v • #! /bin/csh -xv

  15. Operačné systémy - I. Advanced C shell Špeciálne súbory • /dev/null • set u = usernamegrep $u /etc/passwd >& /dev/nullif ($status == 0) echo existuje

  16. Operačné systémy - I. Advanced C shell Špeciálne súbory (pokr.) • set u = usernamegrep ^${u}: /etc/passwd >& /dev/nullif ($status == 0) echo existuje

  17. Operačné systémy - I. Advanced C shell Špeciálne súbory (pokr.) • /dev/tty • echo -n "Heslo:" > /dev/ttyset h = "`head -1 /dev/tty`"echo $h

  18. Operačné systémy - I. Advanced C shell Špeciálne súbory (pokr.) • /dev/stderr • /dev/stdout • /dev/stdin • /dev/fd/0/dev/fd/1… • echo "Error: '$file': popis" > /dev/stderr

  19. Operačné systémy - I. Advanced C shell Globing expr. vs Regular expr. • globbing expression - shell • *, ?, [], … • regular expression - grep, awk, sed • .*, ., [],+, ^, $, … • a* --> , a, aa, aaa, … • a+ --> a, aa, aaa, …

  20. Operačné systémy - I. Advanced C shell Citovanie s :q • set a = ("h 1" "h 2") set b = ($a)set c = ("$a")set d = ($a:q)echo $b[1] --> hecho $c[1] --> h 1 h 2echo $d[1] --> h 1

  21. Operačné systémy - I. Advanced C shell AWK • programovateľný filter • awk [-Fx] 'program' [subor] ... • vstup • súbor -> riadky -> slová(záznamy) (polia) • program • podm1 {akcia1}podm2 {akcia2}...

  22. Operačné systémy - I. Advanced C shell AWK (pokr.) • podmienky • /regular expr./ • $1 == "meno" • BEGIN • END • … • referencovanie vstupného riadku • $ $0, $1, $2, ...

  23. Operačné systémy - I. Advanced C shell AWK (pokr.) • premenné • prem = "hodnota" • prem2 = prem • reťazec <--> číslo • interné premenné • NF • FS • …

  24. Operačné systémy - I. Advanced C shell AWK (pokr.) • príkazy • print, … • riadenie • if, for, while, switch, … • funkcie • substr(retazec, od, kolko) • length(retazec) • index(retazec, podretazec) • …

  25. Operačné systémy - I. Advanced C shell AWK (pokr.) • awk '{print NR, $0}' • awk 'NF > 5 {print}' • awk 'length() > 5 {c ++} \ END {print c}'

  26. Operačné systémy - I. Advanced C shell AWK (pokr.) • set p = hodnota • awk '{print $p, $0}' - zle • awk '{print '"$p"', $0}' - zle • {print hodnota, $0} • awk '{print "'"$p"'", $0}'

  27. Operačné systémy - I. Advanced C shell AWK (pokr.) • set p = hodnota • awk -v q=$p '{print q, $0}' • echo $p | awk '{print $0}'

  28. Operačné systémy - I. Advanced C shell cut vs awk

  29. Operačné systémy - I. Advanced C shell sed • neinteraktívny editor • vi --> ed --> sed • sed 's/regexp/string/' • sed 's/regexp/string/g'

  30. Operačné systémy - I. Advanced C shell Prehľadávanie adresárov (basic) set dir = … set all = `find $dir -type f ` @ sum = 0 foreach f ($all ) @ sum = $sum + \ `ls -l $f | awk '{print $5}'` end

  31. Operačné systémy - I. Advanced C shell Prehľadávanie adresárov (full) set histchars = "" set dir = … set all = "`find '$dir' -type f `" @ sum = 0 foreach f ($all:q) @ sum = $sum + \ `ls -l "$f" | awk '{print $5}'` end

More Related