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

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

C2115 Praktický úvod do superpočítání

C2184 Úvod do programování v Pythonu podzim Mgr. Stanislav Geidl Národní centrum pro výzkum biomolekul Masarykova univerzita.

C2184 Úvod do programování v Pythonu podzim Stanislav Geidl Národní centrum pro výzkum biomolekul Masarykova univerzita. Úvod.

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

PROGRAMOVÁNÍ V SHELLU

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

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

Ú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

Operační systém UNIX

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

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

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

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

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

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

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

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

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

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

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

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

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

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

C2115 Praktický úvod do superpočítání

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

Základy programování (IZP)

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

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

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

Skripty - úvod. Linux - skripty 2

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

Instalace a konfigurace web serveru. WA1 Martin Klíma

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Cvičení 2. Přesměrování vstupu a výstupu. Posloupnost příkazů. Příkazy pro informaci o uživatelích

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Od CGI k FastCGI. Uvedené dílo podléhá licenci Creative Commons Uved te autora 3.0 Česko.

Základní příkazy OS UNIX

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

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

C2115 Praktický úvod do superpočítání

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

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

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

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

Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr

6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek

Co vás čeká. Osvojení si základy analytického myšlení při psaní algoritmů pomocí jazyka Python.

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Skriptovací jazyky. Obsah

Základy programování (IZP)

DUM 06 téma: Tvorba makra pomocí VBA

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

Základy programování (IZP)

Programovací jazyky Přehled a vývoj

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

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

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

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

Vytvoření bootovatelného média

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

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.

1. Uživatelská úprava příkazů I.

C2115 Praktický úvod do superpočítání

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

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

10 Algoritmizace Příklad 2 Word 2007/ VBA

1 Návod na instalaci prostředí LeJOS-NXJ a přehrání firmwaru NXT kostky

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

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Matematika v programovacích

PRACUJEME S SHELLEM Ať žije BASH.

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

Základy programování (IZP)

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Vývojové nástroje jazyka Java

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

C2115 Praktický úvod do superpočítání

Použití UART a radia na platformě micro:bit

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

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

Sada 1 - PHP. 03. Proměnné, konstanty

Paralelní výpočty na clusteru KMD

VISUAL BASIC. Práce se soubory

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

Úvod, jednoduché příkazy

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

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

ČÁST 1. Základy 32bitového programování ve Windows

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

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

Základy programování (IZP)

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

IB111 Programování a algoritmizace. Programovací jazyky

Manuál pro implementaci aplikace Na poštu

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Transkript:

C2110 Operační systém UNIX a základy programování 6. lekce Petr Kulhánek, Jakub Štěpán kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta Masarykova univerzita, Kotlářská 2, CZ-61137 Brno CZ.1.07/2.2.00/15.0233 C2110 Operační systém UNIX a základy programování 6. lekce -1-

Obsah Skripty Skripty vs. programy Kompilace programu Spouštění programu a ukázkového skriptu Proměnné Nastavování a rušení proměnných Proměnné a procesy Typy řetězců C2110 Operační systém UNIX a základy programování 6. lekce -2-

Skripty Skripty vs. programy Kompilace programu Spouštění programu a ukázkového skriptu C2110 Operační systém UNIX a základy programování 6. lekce -3-

Programy vs Skripty Program je soubor strojových instrukcí zpracovávaných přímo procesorem. Program vzniká překladem zdrojového kódu programovacího jazyka. Skript je textový soubor obsahující příkazy a řídící sekvence, které jsou vykonávány interpreterem použitého skriptovacího jazyka. Překládané jazyky: C/C++ Fortran zdrojový kód vstup Skriptovací jazyky: bash gnuplot awk JavaScript PHP vstup program skript interpreter překlad (kompilace) výstup výstup C2110 Operační systém UNIX a základy programování 6. lekce -4-

Programy vs Skripty,... snadná optimalizace rychlé vykonávání nutnost rekompilace nelze vytvářet samospustitelný kód nevyžaduje rekompilaci vytváření samospustitelného kódu špatná optimalizovatelnost pomalejší vykonávání zdrojový kód vstup vstup program skript interpreter překlad (kompilace) výstup výstup C2110 Operační systém UNIX a základy programování 6. lekce -5-

V čem psát skripty a programy Jelikož jsou skripty a zdrojové kódy programů textové soubory, lze použít libovolný textový editor umožňující uložení textu v čisté formě (bez formátovacích metadat). Textové editory: vi kwrite kate gedit K psaní skriptů a zdrojových kódů programů lze používat i specializované vývojové prostředí IDE (Integrated Development Enviroment). IDE obsahuje kromě editoru i správce projektu, ladící nástroje (debugger) a další. Většinou dostupné pro komplexnější jazyky: JavaScript, Python, PHP, atd. Vývojové prostředí: Kdevelop qtcreator NetBeans Eclipse C2110 Operační systém UNIX a základy programování 6. lekce -6-

Program v jazyce C Zdrojový kód #include <stdio.h> int main(int argc,char* argv[]) { printf("tohle je program v jazyce C! \n"); return(0); } Kompilace $ gcc program.c -o program kompiler jazyka C Spuštění programu $./program název souboru s vytvořeným programem soubor program musí mít práva pro spuštění C2110 Operační systém UNIX a základy programování 6. lekce -7-

Program ve Fortranu Zdrojový kód program Hello write(*,*) 'Toto je program ve Fortranu!' end program Kompilace $ gfortran program.f90 -o program kompiler jazyka Fortran Spuštění programu $./program název souboru s vytvořeným programem soubor program musí mít práva pro spuštění C2110 Operační systém UNIX a základy programování 6. lekce -8-

Skript v Bashi Skript #!/bin/bash echo 'Toto je skript v interpretu Bash!' Spuštění skriptu $ bash skript.bash soubor skript.bash nemusí mít práva pro spuštění interpret Bash C2110 Operační systém UNIX a základy programování 6. lekce -9-

Skript v GNUPlotu Skript #!/usr/bin/gnuplot Spuštění skriptu set title "Toto je skript v GNUPlotu!" plot sin(x) pause -1 $ gnuplot skript.gnuplot interpret GNUPlot soubor skript.gnuplot nemusí mít práva pro spuštění C2110 Operační systém UNIX a základy programování 6. lekce -10-

Cvičení 1. Vytvořte čtyři adresáře s názvy ukol01, ukol02, ukol03, ukol04 2. Do jednotlivých adresářů uložte postupně soubory program.c, program.f90, skript.bash, a skript.gnuplot z adresáře /home/kulhanek/data/programs 3. Zkompilujte zdrojové kódy programů napsaných v jazyce C a Fortran. Ověřte, že vzniklé programy lze spustit. 4. Jaká je velikost souboru obsahující výsledný program vzniklý kompilací zdrojového kódu v jazyce C. Otevřete vzniklý soubor v textovém editoru. Co soubor obsahuje? 5. Ověřte funkčnost skriptů skript.bash a skript.gnuplot jejich spuštěním. C2110 Operační systém UNIX a základy programování 6. lekce -11-

Spouštění skriptů 1) Nepřímé spouštění Spouštíme interpreter jazyka a jako argument uvádíme jméno skriptu. $ bash muj_skript_v_bashi $ gnuplot muj_skript_v_gnuplotu Skripty nemusí mít nastaven příznak x (executable). 2) Přímé spouštění Spouštíme přímo skript (shell automaticky spustí interpreter). $./muj_skript_v_bashi $./muj_skript_v_gnuplotu Skripty musí mít nastaven příznak x (executable) a interpreter (součást skriptu). C2110 Operační systém UNIX a základy programování 6. lekce -12-

Určení interpretru Specifikace interpretru (první řádek skriptu): #!/absolutní/cesta/k/interpretru/skriptu #!/bin/bash Skript v bashi echo "Toto je skript v bashi!" Skript v gnuplotu #!/usr/bin/gnuplot set xrange[0:6] plot sin(x) pause -1 Pokud není interpreter skriptu při jeho přímém spuštění uveden, použije se interpreter systémového shellu. Interpreter uvedený ve skriptu se ignoruje při nepřímém spuštění. C2110 Operační systém UNIX a základy programování 6. lekce -13-

Určení interpretru, II Pokud se absolutní cesta k interpretru mění (např. při použití softwareových modulů), lze použít následující konstrukci: #!/usr/bin/env interpreter Interpreter musí být v některém adresáři určeném systémovou proměnnou PATH. Skript v bashi #!/usr/bin/env bash echo "Toto je skript v bashi!" Skript v gnuplotu #!/usr/bin/env gnuplot set xrange[0:6] plot sin(x) pause -1 C2110 Operační systém UNIX a základy programování 6. lekce -14-

Cvičení 1. Změňte přístupová práva u souborů skript.bash a skript.gnuplot (příkaz chmod). 2. Ověřte, že lze skripty spustit přímo bez uvedení interpretru. 3. Co se stane, pokud k interpretaci skriptu skript.gnuplot použijete interpretr bash? C2110 Operační systém UNIX a základy programování 6. lekce -15-

Proměnné Nastavování a rušení proměnných Proměnné a procesy Typy řetězců C2110 Operační systém UNIX a základy programování 6. lekce -16-

Proměnné V jazyce Bash se proměnnou rozumí pojmenované umístění v paměti, které obsahuje hodnotu. Hodnota proměnné v jazyce Bash je vždy typu řetězec (text). Nastavení proměnné: $ JMENO_PROMENNE=hodnota $ JMENO_PROMENNE="hodnota s mezerami" Přístup k hodnotě proměnné: $ echo $JMENO_PROMENNE Zrušení proměnné: $ unset JMENO_PROMENNE Přehled všech proměnných: $ set nesmí být mezera mezi jménem proměnné a = C2110 Operační systém UNIX a základy programování 6. lekce -17-

Proměnné a procesy Proces: pid, ppid Proměnné rodičovský proces Proces: pid, ppid dceřiný proces Každý proces má vyhrazenou část pro ukládání hodnot proměnných. Proměnné Export proměnné: $ export JMENO_PROMENNE Dceřiný proces v okamžiku svého spuštění získá kopii proměnných (exportovaných) a jejich hodnot od rodičovského procesu. Tyto proměnné může dle potřeby měnit nebo mazat. Dále může nastavovat nebo mazat nové proměnné. Všechny tyto změny však po skončení dceřiného procesu zaniknou. Změny se neprojeví na hodnotách původních proměnných rodičovského procesu. $ export JMENO_PROMENNE="hodnota" export export s přiřazením C2110 Operační systém UNIX a základy programování 6. lekce -18-

Řetězce V jazyce Bash lze použít čtyři typy řetězců: bez uvozovek A=pokus B=* C=$A s uvozovkami A="pokus hokus" B="* $A" s jednoduchými uvozovkami (apostrof) A='pokus hokus' text je uveden přesně, bez žádné expanze či B='* $A' transformace s obracenými jednoduchými uvozovkami (obrácený apostrof) A=`ls d` B="pocet : `ls wc l`" nahradí se seznamem souborů a adresářů, které jsou v aktuálním adresáři (lze použít složitější kontrukce) nahradí se hodnotou proměnné A hodnota proměnně obsahuje dvě slova oddělené mezerou nahradí se hodnotou proměnné A, hvězdička se neexpanduje (je uvedena v uvozovkách) do místa obrácených uvozovek se vloží výstup příkazu uvedeného v uvozovkách C2110 Operační systém UNIX a základy programování 6. lekce -19-

Proměnné a speciálních znaky Pořadí expanze řetězce: expanze se neprovede, pokud je text uveden v jednoduchých uvozovkách '' vstupní text (řetězec) expanze proměnných expanze speciálních znaků (wildcards) mezivýsledek výsledek expanze se neprovede, pokud je text uveden ve standardních uvozovkách "" C2110 Operační systém UNIX a základy programování 6. lekce -20-

Příkazy ke cvičení more less xargs grep Příklady: $ set more vypíše obsah souboru nebo standardního vstupu po stránkách (vhodný pro zobrazení dlouhých souborů nebo výstupů příkazů) podobná funkce jako more nicméně poskytuje větší funkcionalitu (např. posun v textu oběma směry) spustí program s argumenty, které načte ze standardního vstupu, vhodné pro předávání velkého seznamu argumentů vypíše řádky ze souborů nebo standardního vstupu, které vyhovují vyhledávacímu vzoru vypíše seznam nastavených proměnných a funkcí po stránkách $ cat *.txt less vypíše obsah všech souborů se zakončením.txt po stránkách $ cat directory_list.txt xargs mkdir vytvoří adresáře jejichž jména jsou uvedena v souboru directory_list.txt $ grep AHOJ soubor.txt vypíše řádky ze souboru soubor.txt, které obsahují text AHOJ C2110 Operační systém UNIX a základy programování 6. lekce -21-

Cvičení 1. Nastavte proměnnou A na hodnotu 55. 2. Vypište hodnotu proměnné A (příkazem echo) 3. Vylistujte všechny proměnné nastavené v daném terminálu. Je mezi nimi proměnná A? Použijte příkaz less nebo more k zpřehlednění výpisu. 4. Použijte příkaz grep a vypište pouze řádek obsahující záznam o proměnné A. Vyhledávací vzor zvolte tak, aby byl nezávislý na hodnotě proměnné. 5. Vypište všechny nastavené proměnné, jejichž jména začínají písmenem A (grep ^TEXT). 6. Změňte hodnotu proměnné na "tohle je dlouhy retezec". 7. Vypište hodnotu proměnné A. 8. Zrušte proměnnou A. 9. Ověřte, že jste proměnnou zrušili (postupem řešeným v bodě 4). 10. Postupně nastavujte proměnné A, B a C podle příkladů uvedených na straně 19. Postupně ověřujte jejich hodnotu příkazy set a echo. Analyzujte případné rozpory. 11. Vytvořte soubor adresare.txt, který bude obsahovat na každém řádku zvlášť slova pokus1, pokus2, pokus3. Použijte příkaz xargs k vytvoření adresářů, které jsou v tomto souboru uvedeny. C2110 Operační systém UNIX a základy programování 6. lekce -22-