Úvod do Operačních Systémů

Podobné dokumenty
Úvod do Operačních Systémů

Úvod do Operačních Systémů

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

A7B38UOS Úvod do operačních systémů. 6. Cvičení. Příkazy sed a awk

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Domácí příprava k předmětu YD38UOS Úloha 10 práce s lokálními soubory pokračování

PROGRAMOVÁNÍ V SHELLU

Sekvenční a podmíněné provádění

Nastroje na zpracovani textu:

Rozšíření ksh vůči sh při práci s proměnnými

C2110 Operační systém UNIX a základy programování

Proměnné a parametry. predn_08.odt :00:38 1

Úvod do Operačních Systémů

BASH. Kouzla s příkazovou řádkou. Petr Koloros

Úvod do Operačních Systémů

Úvod do Operačních Systémů

Úvod do Operačních Systémů

Numerické výpočty, komprese a archivace, návratový kód.

awk programovatelný filtr

Úloha 3 editor a skripty. připojte se vzdáleně na dray6.feld.cvut.cz heslo získáte na adrese

PSK3-9. Základy skriptování. Hlavička

C2110 Operační systém UNIX a základy programování

Střední odborná škola a Střední odborné učiliště, Hořovice

Příkazová řádka. predn_02.odt :55:55 1

Přednáška 4. Regulární výrazy. Filtry grep, sed a awk. Úvod do Operačních Systémů Přednáška 4

Skripty - úvod. Linux - skripty 2

Regulární výrazy. Filtry grep, sed a awk.

Speciální soubory. Editace příkazové řádky. $ fg mp3blaster $./skript.sh. [2]+ Stopped./skript.sh $ bg [2]+./skript.sh & $ fg 2./skript.

Regulární výrazy a grep

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Tipy a triky nejenom v shellu nejenom pro programátory

Úvod do Operačních Systémů

Unix je víceuživatelský a víceúlohový OS

Základní příkazy pro práci se soubory

Úvod do Unixu. man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp. pwd: vypíše cestu k aktuální pozici

ZOS CV1 Základy operačních systémů

Úvod do UNIXu. Libor Forst

Úvod, jednoduché příkazy

Střední odborná škola a Střední odborné učiliště, Hořovice

Systém souborů (File System)

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Operační systémy. Cvičení 4: Programování v C pod Unixem

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Operační systéme II cvičení

PSK3-3. Základní příkazy. Zápis cesty

Úvod do programovacích jazyků (Java)

Přednáška 1. Úvod. Historie OS Unix. Architektura OS Unix. Interpret příkazů SHELL. Zpracování příkazové řádky. Speciální znaky. Zkratky příkazů.

Tahák na UOS 2008/2009

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

1 ÚVOD DO LINUXU 3 2 MANIUPLACE S DATY A TEXTEM 4 3 EDITORY, ARCHIVACE A PŘESMĚROVÁNÍ 5 4 UŽIVATELSKÉ ÚČTY A OPRÁVNĚNÍ + TEST 6 5 PROCESY A SERVISY 7

Standardní vstupy a výstupy procesu filtry

PRACUJEME S SHELLEM Ať žije BASH.

Cvičení 3. Plán. Procesy. procesy, jobs Find Wildcards Příklad uživatelé. ZOS 2005, L. Pešička. eryx4> ps x

Studium enzymatické reakce metodami výpočetní chemie

more Program se zastaví vždy po vypsání jedné stránky textu. Ukončení Ctrl+C less Umožňuje pohybovat se v souboru dopředu i dozadu.


Administrace Unixu a sítí. Tomáš Kouba <

Přednáška 2. Systémy souborů OS UNIX. Nástroje pro práci se souborovým systémem. Úvod do Operačních Systémů Přednáška 2

Úvod. unx-predn_01-uvod.odt :13:43 1

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Seznámení se shellem, textové editory numerické výpočty

Program grep. predn_05.doc

Test z programování v jazyce VBA v rámci předmětu Počítače II Vzorová zadání a vypracování

Přednáška 1. Úvod. Historie OS Unix. Architektura OS Unix. Interpret příkazů. SHELL. Zpracování příkazové řádky. Speciální znaky. Zkratky příkazů.

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Úvod do Linuxu. SŠSI Tábor 1

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Základy algoritmizace a programování

Základní příkazy OS UNIX

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

Příkaz finger. # finger sam Login: sam Name: Sam Greenfield Directory: /home/sam Shell: /bin/tcsh Last login Sun Dec 25 14:47 (EST) on tty2 No Plan.

Algoritmizace a programování

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Základní příkazy UNIXu (Linuxu)

Programovani v Maplu Procedura

ČVUT FIT: BI-SKJ: Perl

Lekce 25 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Vstupní požadavky, doporučení a metodické pokyny

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Tahák na UOS 2008/2009 Přehled (zkrácená verze)

Operační systémy. Cvičení 3: Programování v C pod Unixem

Úvod do UNIXu. Jirka Boháč Gymnázium Jaroslava Seiferta 2003/2004

LINUX ADRESÁŘOVÁ STRUKTURA. Co to, hrome, je? V této lekci se budeme brouzdat adresáři. SPŠ Teplice - 3.V

Operační systémy. Cvičení 1: Seznámení s prostředím

VISUAL BASIC. Práce se soubory

Poslední nenulová číslice faktoriálu

Správa procesů - manipulace s procesy, signály

Inovace bakalářského studijního oboru Aplikovaná chemie

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka

Přednáška 5. Identita uživatelů, procesů a souborů. Přístupová práva a jejich nastavení. Úvod do Operačních Systémů Přednáška 5

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Jihočeská univerzita v Českých Budějovicích Pedagogická fakulta. Tvorba balíku skriptů pro správu uživatelských účtů v UNIXu.

Úvod do UNIXu, cvičení 1. Organizační informace Co je vlastně ten UNIX? Jak to chodí v labech

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Téma 9: Administrace systému CentOS. Představení a používání aplikací pro administraci CentOS

Transkript:

Úvod do Operačních Systémů 9. cvičení Proměnné, složené příkazy, funkce, numerické výpočty. 1

Obsah Numerické výpočty v shellu externí příkazy Proměnné práce s proměnnými práce s pozičními parametry Bloky příkazů Podmíněné vykonávání příkazů Složené příkazy podmínky cykly Funkce 2

Výpočty I Inkrementace hodnoty proměnné max=`ypcat passwd cut -d: -f3 sort -n tail -1` max=`expr $max + 1` max=$((max+1)) ((max=max+1)) ((max++)) let max=max+1 let max++ max=`awk "BEGIN {print max=$max+1}" <&-` 3

Výpočty II Průměrná velikost obyč. souborů v aktuálním adresáři ls -l awk '/^-/ {sum+=$5;c++} END {print sum/c}' ls -l awk '/^-/ {sum+=$5;c++} END {printf("%f\n", sum/c)}' Průměrný počet systémových volání za sekundu calls=`vmstat -s grep calls tr -dc '[0-9]'` uptime=`expr 60 \* \ $(/home/courses/y36uos/common/cv09/uptime_min)` cps=$((calls/uptime)) echo $calls/$uptime bc -l 4

Výpočty +! Výpočty v různých soustavách echo $((012)) echo $((10#012)) Ternární operátor podmínky x=5 echo $((x%2==0? x : x+1)) Práce s řetězci a RE RE='/.*/' expr $PWD : "$RE" RE='/.*/\(.*\)/' expr $PWD : "$RE" 5

Výpočty + Zjištění limitů programu bc grep BC_ /usr/include/limits.h let MAX_SCALE=`sed -n '/BC_SCALE_MAX/s/.* \([0-9]*\)/\1/p' /usr/include/limits.h`-1 Vytvoření konstanty pi s maximální přesností programu bc typeset -r pi=`echo "scale=$max_scale;4*a(1)" \ bc -l tr -dc '[0-9].'` echo $pi pi=3.14 echo $pi 6

Výpočty ++ 1:10am up 35 day(s), 4:02, 2 users, load average: 0.05,... RE='.* \([0-9]*\) day[^0-9]*\([0-9]*\):0\{0,1\}\([0-9]*\).*' Výpočet doby běhu serveru v minutách (shell) ((uptime=`uptime sed "s/$re/10#\1*24*60 + 10#\2*60 + 10#\3/"`)) Výpočet doby běhu serveru v minutách (awk) uptime=`uptime sed "s/$re/\1 \2 \3/" \ awk '{print $1*24*60 + $2*60 + $3}'` Výpočet doby běhu serveru v minutách (eval) eval `uptime sed "s/$re/d=\1 h=\2 m=\3/'` ((uptime=10#d*24*60 + 10#h*60 + 10#m)) 7

Proměnné I Přiřazení hodnoty do proměnné prefix=mylog date=`date +%y%m%d` file=$pwd/${prefix}_$date Výpis obsahu proměnné echo "$file" Nastavení implicitní hodnoty echo "${data_file:=./data}" echo "data_file=$data_file" > my.conf Nastavení hodnoty proměnné ze souboru df=`sed -n '/^data_file=/s/.*=//p' my.conf` [^=] 8

Proměnné II Délka hodnoty proměnné file_len=${#file} ; echo $file_len Část obsahu proměnné (bash) s=`expr $file_len - 6` echo "${file:s}" Nejkratší oříznutí obsahu zprava vzorem image=screenshot.jpg cp /home/courses/y36uos/common/cv09/$image. convert "$image" "${image%.jpg}.tif" file "${image:0:10}"* 9

Nejdelší oříznutí obsahu zleva vzorem item="${file##*/}_1" echo $item Nejdelší oříznutí obsahu zprava vzorem pref="${item%%_*}" echo "$pref" Proměnné III [ "$pref" == "$prefix" ] echo $? 10

Parametry Nastavení pozičních parametrů IFS=":" ; set `grep root /etc/passwd` Název programu echo $0 Výpis pozičních parametrů echo $1,${5}:$7 Počet pozičních parametrů [ $# -eq 7 ] ; echo $? Všechny poziční parametry echo $* : $@ 11

Pole Deklarace pole files[1]=s1 files[2]=s2 files[3]=s3 Použití všech položek pole touch "${files[@]}" Délka pole (počet položek) echo ${#files[*]} Zrušení pole unset files 12

Proměnné + Substituce v hodnotě proměnné echo "$file" echo "${file/mylog/$user-log}" echo "${file/[0-9]/-}" "${file//[0-9]/-}" Nepřímá indexace poziční proměnné IFS=":" ; set `grep root /etc/passwd` for ((i=1; i<=7; i++)); do echo $i: ${!i}; done Nastavení typu proměnné typeset -i int_x=5 int_x=abc 13

Vykonání skupiny příkazů v aktuálním shellu ls ; date ; who > s1 { ls ; date ; who; } > s1 { sleep 60 ; w > users; } & Vykonání skupiny příkazů v subshellu cd /tmp ; pwd cd ( cd /tmp; pwd ) ; pwd x=5; ( x=7; echo $x ) ; echo $x Bloky příkazů 14

Podmíněné vykonání příkazů Podmíněné vykonání po úspěchu předešlého příkazu tar xvf archiv.tar && rm archiv.tar Podmíněné vykonání po neúspěchu předešlého příkazu [ -d adr ] mkdir adr Použití obou podmínek ping dray2 &>/dev/null \ && ssh dray2 uptime \ echo dray2 je nedostupny Podmíněné vykonání bloku příkazů [ -d /adr ] && { cd /; tar cvf ~/adr.tar adr; }! && a není logické AND a OR! 15

Kontrola počtu argumentů Složené příkazy podmínky USAGE="Pouziti: $0 arg1 arg2" if [ $# -ne 2 ]; then echo "$USAGE"; else echo $*; fi Určení akcí pro různé dny v týdnu DAY=`date +%w` case $DAY in 0) echo "Full backup";; 6) echo "No backup";; *) echo "Partial backup";; esac 16

Složené příkazy cykly Postupné zpracování argumentů (while) set bash ksh sh while [ $# -gt 0 ] do man "$1" > man\ $1 shift done Postupné zpracování argumentů (for) set man\ *sh for manfile in "$@"; do wc -l "$manfile"; done 17

Rozdíl mezi $* a $@ Složené příkazy cykly! set man\ *sh for manfile in $*; do wc -l "$manfile"; done set man\ *sh for manfile in "$*"; do wc -l "$manfile"; done Zpracování výsledku náhrady příkazu a názvů souborů touch 'my long filename1' 'my long filename2' for file in my*; do echo ".$file."; done for file in `ls my*`; do echo ".$file."; done for file in "`ls my*`"; do echo ".$file."; done IFS=" " ; for file in `ls my*`; do echo ".$file."; done 18

Jiný zápis for cyklu for ((i=0; i<100; i++)) do printf "%02d " $i done; printf "\n" Cyklus select select manfile in man\ *sh do wc -l "$manfile" done ^D Složené příkazy cykly + 19

Funkce function max() { [ $# -eq 0 ] && return 2 local max=$1; shift while [ $# -gt 0 ] do if! echo "$1" grep '[^0-9]' >/dev/null; then [ "$1" -gt "$max" ] && max=$1; fi shift done echo "$max" } max 7 1 6 5 9 4 2 3 20

Příprava na příští cvičení I Upravte funkci max tak, aby reagovala na špatné argumenty návratovým kódem 1. Napište skript, který vypíše zadané argumenty skriptu (poziční parametry) v náhodném pořadí na výstup. Upravte předešlý skript tak, aby jediným argumentem byl vzor. Jména obyčejných souborů v aktuálním adresáři odpovídající zadanému vzoru budou vypisovány v náhodném pořadí na výstup. Napište skript, který najde v zadaném adresáři a jeho podadresářích největší obyčejný soubor a nejstarší obyčejný soubor daného uživatele. Skript otestuje, zda zadaný adresář existuje a zda má uživatel dostatek práv. 21

Příprava na příští cvičení II V souboru ~/.bashrc nadefinujte funkci log (a zavolejte), která do zvoleného log souboru vloží při startu shellu řádku oznamující start shellu. Do souboru ~/.bash_logout nadefinujte funkci log (a zavolejte), která do log souboru vloží řádku oznamující ukončení shellu. Funkce log by se měla zavolat i při ukončení shellu na základě příchodu signálu. Vytvořte z obsahu log souboru tabulku obsahující informace o jménu počítače a délce běhu shellu. Log soubor by měl mít následující podobu: Nov 19 19:07:20 dray3 bash (4533): starting (version 2.14.0), pid 4607, user barinkl datum a čas hostname PPID verze PID username Vytvořte z obsahu log souboru tabulku obsahující informace o datu startu jménu počítače a délce běhu shellu. Vytvořte na základě předešlé tabulky statistiku používání jednotlivých počítačů. Vytvořte přehled použitých počítačů a verzí shellů. 22