Programowanie BASH w Linuxie Zadania część 1

Podobne dokumenty
Bash - wprowadzenie. Bash - wprowadzenie 1/39

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

1 Przygotował: mgr inż. Maciej Lasota

Wstęp do Informatyki dla bioinformatyków

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Powłoka bash. Kurs systemu Unix 1

Przekierowanie wejścia wyjścia:

System operacyjny Linux

- wszystkie elementy - wszystkie elementy

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

skrypt powłoki to plik tekstowy, rozpoczynający się sekwencją: pierwsza linia określa powłokę, w której wykonywany jest skrypt; druga to komentarz

W pierwszej kolumnie wyświetlany jest identyfikator procesu (pid)

Technologie Informacyjne - Linux 2

Technologie Informacyjne - Linux 3

1. Znajdź za pomocą programu locate wszystkie pliki które zawierają w nazwie słowo netscape locate netscape

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Środowisko programisty Zestaw 7

Programowanie w języku Python. Grażyna Koba

Pracownia Komputerowa wykład III

PRACOWNIA INFORMATYCZNA CHARAKTERYSTYKA PRZEDMIOTU BASH - PODSTAWOWE INFORMACJE

Programowanie skryptów powłoki

Powłoka (shell) Powłoka ksh

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Narzędzia informatyczne w językoznawstwie

lekcja 8a Gry komputerowe MasterMind

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Systemy operacyjne. Programowanie w shellu: BASH. Wydział Inżynierii Metali i Informatyki Przemysłowej

Wyrażenia regularne. Wyrażenia regularne 1/41

Skrypty powłoki w systemie Linux

Powłoka interpreter poleceń systemu UNIX

Warsztaty dla nauczycieli

Wprowadzenie do programowania w powłoce

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

Przedstawię teraz tzw. podstawowe symbole wyrażenia regularne (BRE, Basic Regular Expression)

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

Pracownia Informatyczna I ORGANIZACJA ZAJĘĆ, ZASADY ZALICZENIA

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Znaki globalne w Linuxie

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Wstęp do systemu Linux

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Architektura systemów informatycznych. Powłoka systemowa Architektura procesora

Warunki logiczne instrukcja if

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

BASH - WPROWADZENIE Bioinformatyka 4

Przedrostkowa i przyrostkowa inkrementacja i dekrementacja

Instrukcja SO powłoka BASH i skrypty powłoki Istotne jest zrozumienie działania narzędzia history powłoki BASH. Każde polecenie wprowadzone i

Interpreter poleceń oraz zmienne środowiskowe

Linuks skrypty Część teoretyczna

Podstawy i języki programowania

Zmienne środowiskowe: Ścieżka przeszukiwana komendą.

Język Python. Język Python 1/35

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Zapis algorytmów: schematy blokowe i pseudokod 1

Operatory zmiany sposobu przypisania standardowych strumieni >,<,>> Jeżeli pierwsze polecenie powiodło się to wykona drugie

1. Wyrażenia regularne. Symbole w wyrażeniach regularnych 1 :

Technologie informacyjne lab. 4

Autor: Joanna Karwowska

TEMAT : System operacyjny MS DOS pliki wsadowe

Przetwarzanie tekstu 2. Operacje na plikach tekstowych w systemie Linux

Podstawy informatyki

Pracownia Komputerowa wykład III

Temat zajęć: Filtry, strumienie standardowe oraz przetwarzanie potokowe. stderr

Wstęp do systemów wielozadaniowych laboratorium 19 awk

Tworzenie skryptu: Skrypty powłoki

Ćwiczenie: JavaScript Cookies (3x45 minut)

PODSTAWOWE INFORMACJE NA TEMAT KONSOLI W SYSTEMIE WINDOWS

Ćwiczenia Linux konsola

Systemy operacyjne 11

Linux Polecenia. Problem nadpisywania plików. Zmienna noclobber i noglob. Filtry i metaznaki. Problem nadpisywania plików. Opracował: Andrzej Nowak

Projekty zaliczeniowe Podstawy Programowania 2012/2013

Lokalizacja jest to położenie geograficzne zajmowane przez aparat. Miejsce, w którym zainstalowane jest to urządzenie.

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Systemy operacyjne na platformach mobilnych 2 Podstawy obsługi powłoki Bash

Dodawanie i modyfikacja atrybutów zbioru

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Tryb konsolowy ćwiczenie b

Trochę o plikach wsadowych (Windows)

PODSTAWY INFORMATYKI

Wstęp do systemu Linux

Wstęp do Programowania, laboratorium 02

Laboratorium Ubuntu Linux.

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

1 Podstawy c++ w pigułce.

System operacyjny Linux

Systemy operacyjne Programowanie w języku powłoki sh

Podstawy Programowania C++

Transkrypt:

Programowanie BASH w Linuxie część 1 dr inż. Adam Kaliszan adam.kaliszan@put.poznan.pl 25 lipca 2017 dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 1 / 44

Plan wykładu I 1 Najprostszy skrypt 2 Praca z powłoką Praca z interpreterem poleceń 3 Operacje wejścia wyjścia 4 Zmienne i parametry 5 Instrukcje warunkowe 6 Pętle 7 Funkcje dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 2 / 44

Plan wykładu II 8 Przetwarzanie tekstu 9 Onka dialogowe dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 3 / 44

Najprostszy skrypt Zadanie 1 Uruchom konsolę Przenieś konsolę na drugi pulpit wirtualny, tak by uprościć przełączanie pomiędzy instrukcją z zadaniami, a konsolą skryptu. Wpisz polecenie: echo Witaj świecie Spróbuj rozbić po polecenie na 2 linijki. W tym celu zastosuj symbol backslasha Spróbuj rozbić tekst Witaj świecie na 2 linijki tak by na ekranie tekst był nadal wyświetlany w jednej linijce Spróbuj w jednej linijce wywołać 2 razy polecenie echo. W tym celu instrukcje rozdziel za pomocą średnika Zadanie 2 Wyświetl dokumentację polecenia echo. W tym celu wpisz: man echo dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 4 / 44

Praca z powłoką Zadanie 3 Przenieś poprzedni skrypt do pliku. Na jego początku dopisz: #!/bin/bash Czynność tą wykonaj na kilka sposobów: 1 Za pomocą managera graficznego utwórz plik. Następnie zmień jego atrybut na wykonywalny i otwórz w edytorze 2 Za pomocą polecenia touch utwórz pusty plik. Następnie za pomocą polecenia chmod (chmod 755 skrypt.sh) zmień jego atrybut na wykonywalny i otwórz plik do edycji 3 Za pomocą echo i przekierowania strumienia (więcej w dalszej części wykładu): dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 5 / 44

Praca z powłoką echo #!/bin/bash \ echo Witaj świecie > skrypt.sh lub echo #!/bin/bash > skrypt.sh echo Witaj świecie >> skrypt.sh Pamiętaj o zmianie atrybutu pliku lub uruchom go za pomocą polecenia sh skrypt.sh dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 6 / 44

Praca z powłoką Zadanie 4 Za pomocą konsoli otwórz plik w edytorze graficznym. W tym celu edytor należy uruchomić w tle. Zrób to dwa sposoby: Metoda 1 xed nazwapliku & Metoda 2 xed nazwapliku ctrl+z bg 1 dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 7 / 44

Praca z powłoką Zadanie 5 Utwórz katalog Zadanie5 i przejdź do niego Utwórz katalogi: Podkatalog1dta, Podkatalog2dta, Podkatalog3dta i Podkatalog4dta za pomocą jednego polecenia W kazdym z tych katalogów utwórz pliki o nazwach: plika.txt, plikb.txt, plikc.txt Dla wszystkich plików zabierz prawo odczytu dla wszystkich. Zastosuj odpowiednią opcję w poleceniu chmod. Dla plików z literką C dodaj prawo wykonywania użytkownikowi i grupie Dla plików z literką B dodaj prawo do zappisu wszystkim. Właścicielowi dodaj prawo do odczytu ze wszystkich plików dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 8 / 44

Praca z powłoką Zadanie 6 Program find W katalogu domowym wyszukaj wszystkie pliki z rozszerzeniem txt (na wszelki wypadek utwórz kilka) Za pomocą programu find dopisz do każdego z tych plików linijkę z tekstem: plik został zmodyfikowany Spróbuj odnaleźć te pliki za pomocą innych programów. dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 9 / 44

Praca z powłoką Zadanie 7 Zapoznaj się z działaniem przeglądania historii Sprawdź jak działa!! Wyświetl historię poleceń Przeszukaj historię poleceń Sprawdź jak działa dopisywanie poleceń dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 10 / 44

Praca z powłoką Zadanie 8cp c Aliasy Dodaj alias do polecenia top Po wpisaniu top wyświetlana jest informacja o wątkach Do wyświetlania informacji o wątkach służy opcja -H Jak sprawdzić, czy np ls jest poleceniem wewnętrznym, programem, czy aliasem? dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 11 / 44

Operacje wejścia wyjścia Zadanie 9 polecenie echo Zapoznaj się z działaniem polecenia echo Napisz przykład, który pokazuje jak działa flaga -e Napisz przykład, który pokazuje jak działa flaga -n dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 12 / 44

Operacje wejścia wyjścia Zadanie 10 Napisz program, który Zadaje pytanie o twoje imię Podaj imię Wczytuje imię Wyświetla na ekranie powitanie, w którym wypisane jest imię wprowadzone przez użytkownika Na końcu napisu wypisuje!! Komendę echo zastąp funkcję printf dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 13 / 44

Operacje wejścia wyjścia Zadanie 11 Pokaż jaka jest różnica w działaniu > a >> Jak uruchomić program by nie wypisywał nic na konsoli? Wywołaj polecenie ls tak by rezultat swojego działania zapisany był w pliku pliki.txt oraz wypisany na ekranie Jak za pomocą jednego polecenia przekierować strumień błędu i wyjścia do pliku Jak uruchomić stary skrypt, który pydał sie o imię, tak by automatycznie pobierał odpowiedź? Jak napisać program by dane wysyłał na strumień błędów, a nie na strumień wyjścia dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 14 / 44

Operacje wejścia wyjścia Zadanie 12 Podstawienie komendy Napisz program, który uruchamia program hostname i zapisuje nazwę hosta. Następnie na ekranie wypisuje komunikat: Pozdrowienia od NAZWA HOSTA Zastosuj 2 sposoby podstawienia komendy Przekieruj strumień do programu cat, tak by osiągnąć cel zadania. dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 15 / 44

Zmienne i parametry Zadanie 13 Napisz program, który: pyta się o boki prostokąta i oblicza jego powierzchnię wynik jest wypisany na ekranie Uruchom program, tak by: dane wejściowe (odpowiedzi na pytania) były podawane z pliku. Utwórz ten plik rezultat działania był zapisywany w osobnym pliku Następnie za pomocą programu tee uruchom wszystko tak by: dane były wprowadzane z pliku rezultat był zapisywany do osobnego pliku na ekranie wypisywany był strumień wyjścia (ten sam który zapisywany jest do pliku) dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 16 / 44

Zmienne i parametry Zadanie 14 Udoskonal program z poprzedniego zadania, tak by informacje o bokach były pobierane z wiersza poleceń. Jeśli program zostanie uruchomiony bez dodatkowych argumentów, to zada pytania o brakujące parametry. Zadanie 15 Zmodyfikuj program tak, by obsługiwał liczby zmiennoprzecinkowe. Podpowiedź: echo "scale=4; 5/ 4" bc Powyższy kod zwraca wynik z dzielenia 5 przez 4 z dokładnością 4 miejsc po przecinku. dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 17 / 44

Zmienne i parametry Zadanie 16 Napisz program, który na podstawie zmiennych środowiskowych wypisuje na ekranie informację o: nazwie hosta liczby kolumn w terminalu liczby wierszy w terminalu Podpowiedź: By wyświetlić wszystkie zmienne środowiskowe wpisz polecenie env lub set, najlepiej z przekierowaniem strumienia do programu less. Zadanie 17 Napisz program, który pyta się o 3 liczby i zapisuje je w tablicy. Następnie cała tablica jest wypisywana. dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 18 / 44

Zmienne i parametry Zadanie 18 Za pomocą komendy let przypisz wartości do zmiennych (ZM A, ZM B). Następnie wypisz zawartość tych zmiennych za pomocą komendy printf. Zadanie 19 1 Utwórz plik ze skryptem, w którym wypisana jest zawartość zmiennych (ZM A, ZM B). W skrypcie wartości tych zmiennych nie są ustawiane. 2 Następnie uruchom ten skrypt. Skrypt nie wypisze wartości tych zmiennych. W odpowiedni sposób ustaw te zmienne tak, by po uruchomieniu skrypt mógł je odczytać. Podpowiedź: Zastosuj polecenie export dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 19 / 44

Zmienne i parametry Zadanie 20 Otwórz plik.profile znajdujący się w katalogu domowym i zobacz w jaki sposób eksportowane są zmienne. Zadanie 21 1 Utwórz dwie zmienne o nazwach TEST i TEST1. Do zmiennej TEST przypisz następujący łańcuch znaków: To jest test nr. Do zmiennej TEST1 przypisz tekst: To jest inny test. 2 Wykonaj następujące polecenie: echo $TEST1 Co pojawi się na ekranie? Jak zmusić program, by odczytując zmienną TEST wypisać na ekranie: To jest test nr 1? dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 20 / 44

Instrukcje warunkowe Zadanie 22 1 Napisz program, który pyta się o wiek. 2 Następnie w zależności od tego, czy jest większy od 18, czy też mniejszy lub równy wypisuje odpowiedni komunikat. Przerób skrypt tak, by całość programu była zapisana w jak najmniejszej liczbie linijek. Uwaga: Bardzo uciążliwym błędem są braki spacji. Rozważ teraz wariant skryptu, w którym zastosowano podwójne nawiasy kwadratowe [[]]. Znajdź przykład, z odpowiednio wprowadzonymi danymi, w których pojawią się istotne różnice pomiędzy operatorem >, a -gt Napisz 6 wariantów instrukcji warunkowej if z: 3 rodzajami nawiasów [], [[]], (()) 2 rodzajami operatorów >, -gt dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 21 / 44

Instrukcje warunkowe Zadanie 22 c.d. Sprawdź, jakie są różnice w: konieczności stawiania odstępów sposobie odwoływania się do wartości zmiennych dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 22 / 44

Instrukcje warunkowe Zadanie 23 Napisz program, który pyta się o wiek. Następnie w zależności od udzielonej odpowiedzi zostanie wypisany odpowiedni komunikat: Dla wiek < 7: Jesteś przedszkolakiem Dla wiek < 19: Jesteś uczniem Dla wiek 19: I tak musisz się uczyć Zadanie 24 Zmodyfikuj poprzedni program. Konstrukcję if, zastąp konstrukcją case. W tym celu zastosuj odpowiednie wzorce podpowiedź: case $WIEK in [0 9] 1[0 8]) echo masz pomiędzy 0, a 18 lat ;; esac fi dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 23 / 44

Pętle Zadanie 25 Napisz program, który pyta się o liczbę gwiazdek jaką wyświetlić na ekranie, a następnie to robi. Zadanie 26 Napisz program, w którym są dwie pętle. Wewnętrzna i zewnętrzna. Program na ekranie wypisuje następującą sekwencję: *** * **** ** ******* dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 24 / 44

Pętle Zadanie 27 Napisz program, w którym są dwie pętle for. Wewnętrzna i zewnętrzna. Program na ekranie wypisuje następującą sekwencję: 123 1 12345 12 1234567 Podpowiedź: zastosuj komendę seq dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 25 / 44

Pętle Zadanie 28 Napraw poniższy program while read LINE do echo $LINE done < tail f tmpplik Program powinien wypisywać dane, jakie zostały dopisane do pliku tmpplik. By program działał prawidłowo, potok z tail -f tmpplik powinien być przekierowany do pętli do while dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 26 / 44

Pętle Zadanie 29 Utwórz pik z następującym skryptem #!/bin/bash for i in start koniec do echo Looping... i is set to $i done Uruchom go i wytłumacz dlaczego zrobił to co zrobił. dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 27 / 44

Pętle Zadanie 30 Przeanalizuj poniższy kod, który został napisany w różnych stylach. Instrukcje if są w nawiasach okrągłych lub kwadratowych. Zastosowano pętlę for napisaną w składni z języka C. dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 28 / 44

Pętle #!/bin/bash MAX=10000 for((nr=1; nr<$max; nr++)) do let t1 = nr % 5 if [ $t1 ne 3 ] then continue fi ((t2 = nr % 7)) if [ $t2 ne 4 ] then continue fi let t3 = nr % 9 if ((t3!= 5)) then continue fi break # Co się stanie, gdy break zostanie zakomentowany? done echo Number = $nr exit 0 dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 29 / 44

Pętle Zadanie 30 c.d. Modyfikując skrypt odpowiedz na następujące pytania: 1 Czy bloki kodu możemy objąć w nawiasach (zamiast ograniczników zapisanych za pomocą słów typu do/done) 2 Jeśli do/done zastąpimy przez, to jakie są zasady związane z nowymi liniami i symbolami ; 3 Co się stanie, gdy pętlę for(( ; ; )) zastąpimy pętlą for in i zastosujemy 4 Co się stanie, gdy zakomentujemy linię break? Jaką byłaby wartość zmiennej nr w języku C, a jaka jest w bashu? Jaka jest różnica pomiędzy pętlę for w C i bashu? 5 Jak odwołujemy się do zmiennej wewnątrz (( )). Co się stanie, gdy dodamy/pominiemy symbol $ przed zmienną. Dokonaj refaktoryzacji kodu tak by był napisany w jednym stylu. dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 30 / 44

Pętle Zadanie 31 Napisz program, który: losuje liczbę z przedziału od 0 do 1000 za pomocą zmiennej $RANDOM, prosi o odgadnięcie liczby z tego przedziału, po każdej odpowiedzi informuje użytkownika o tym, czy podał za duża, czy za małą liczbę i ponawia pytanie do momentu odgadnięcia odpowiedniej liczby W analogiczny sposób napisz program, który odgaduje liczbę, jaką wymyślił użytkownik, pytając się użytkownika czy dana liczba jest większa, mniejsza, czy równa od liczby użytkownika. dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 31 / 44

Pętle Zadanie 32 Napisz skrypt, który: wykonuje nieskończoną pętlę, czynności wewnątrz pętli wykonują się co 1 sekundę (komenda sleep 1), przed rozpoczęciem pętli identyfikator procesu zapisywany jest do pliku endlessscript.pid. Następnie napisz drugi skrypt, który z pliku endlessscript.pid odczytuje identyfikator procesu wykonującego nieskończoną pętlę i go zabija (polecenie kill). dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 32 / 44

Pętle Zadanie 33 Napisz program, który w pętli pyta się o jedną z dwóch czynności jaką użytkownik chce wykonać: Przypisanie wartości do zmiennej Odczyt zmiennej W przypadku przypisania wartości do zmiennej program pyta się o nazwę zmiennej i wartość, a w przypadku odczytu, program pyta się tylko o wartość. Przed odczytem wartości zmiennej, program sprawdza, czy zmienna taka istnieje: if [ z $VAR ]; Następnie zmodyfikuj program tak, by nazwy zmiennych stały się kluczami w tablicy skojarzeniowej. dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 33 / 44

Pętle Zadanie 34 Poniższy kod otwiera nasłuchiwanie połączenia TCP na porcie 4444. Odebrane dane zapisuje do pliku filename.out. nc k l 4444 > filename.out Przerób skrypt tak, by dane odebrane dane zostały wypisywane na ekran. Następnie sprawdź działanie za pomocą programu telnet. dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 34 / 44

Funkcje Zadanie 35 Napisz program, który pyta się o liczbę wierszy i kolumn. Następnie wypisuje na ekranie podaną liczbę wierszy i kolumn w postaci symbolu. Za wypisywanie gwiazdek na ekranie odpowiada funkcja, która za pomocą argumentów powiadamiana jest o liczbie wierszy i kolumn. Zadanie 36 Napisz funkcję która pobiera 2 argumenty i na ich podstawie oblicza pole prostokąta. W skrypcie wywołaj odpowiednio funkcję oraz odbierz jej rezultat działania. Zapisz go do zmiennej. Podpowiedź: local resultvar=$1 local myresult= some value eval $ resultvar= $myresult dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 35 / 44

Przetwarzanie tekstu Zadanie 37 Napisz funkcję zamień, która obrabia tekst w następujący sposób: przyjmuje 2 argumenty. Pierwszy określa wyszukiwane słowo, a drugie słowo na które wyszukane słowo ma być zamienione obrabiany tekst pobierany jest ze strumienia wejścia obrobiony tekst trafia do strumienia wyjścia. Podpowiedź: zmien() { while read X; do Następnie funkcję wywołaj w skrypcie tak by skrypt działał jak edytor strumieniowy. dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 36 / 44

Przetwarzanie tekstu Zadanie 38 Przygotuj dwa pliki danych za pomocą edytora. Pierwszy plik zawiera nazwiska studentów oraz nr indeksu np.: Roman Koralewski:9117 Ignacy Ratajczak:9104 Michał Marcinkowski:9125 Marcin Kasperczak:9127 Niech drugi plik przechowuje nr indeksu, liczbę punktów oraz ocenę, 9104:30:2 9117:55:3 9127:70:4 9125:90:4.5 Separatorem pól niech będzie dwukropek (można wybrać inny znak). dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 37 / 44

Przetwarzanie tekstu Zadanie 38 c.d. 1 Za pomocą odpowiedniego polecenia połącz oba pliki, tak by każdy wiersz zawierał imię, nazwisko, nr indeksu, liczbę punktów oraz ocenę. Rezultat zapisz do pliku. 2 Posortuj plik uzyskany w poprzednim podpunkcie Zamiana komumn za pomocą AWK Zastosuj AWK by zamienić polumny w ten sposób, by nr indeksu był na początku. Za pomocą opcji -F ustaw odpowiedni separator. [jerry]$ awk {print $3 "\t" $4} scalonedane.txt Zliczanie rekordów za pomocą AWK Na końcu pliku dopisz liczbę rekordów awk /a/{++sum} END {print "Liczba studentów = ", sum} scalon dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 38 / 44

Przetwarzanie tekstu Zadanie 39 Załóżmy, że mamy dany plik wzor1.txt zawierający następującą treść: A123 B123 C123 Utwórz ten plik za pomocą polecenia echo. dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 39 / 44

Przetwarzanie tekstu Zadanie 39 c.d. Za pomocą poznanych komend utwórz plik, który zawiera następujący wzór. A123A123 B123B123 C123C123 C123C123 B123B123 A123A123 Uzyskaj to stosując polecenia cat, tac, tr, paste. Wskazówka. Polecenie paste wstawi spację pomiędzy scalonymi kolumnami. By usunąć tabulatory można zastosować polecenie tr z parametrem -d. Przeczytaj w dokumentacji do czego służy ten parametr. dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 40 / 44

Przetwarzanie tekstu Zadanie 40 Utwórz plik zawierający następującą treść Using grep, fgrep and egrep to grep for 99% of the cats % these are two % commented lines 1 Za pomocą programu grep wypisz tylko linijki, które nie zawierają komentarzy (nie zaczynają się od %). 2 Wyszukaj linijki, które zawierają dokładnie słowo grep. (Nie egrep lub fgrep. Zastosuj opcję -w by dopasowywać do słów) 3 Wyszukaj linijki zawierające słowa rozpoczynające się od a dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 41 / 44

Przetwarzanie tekstu Zadanie 41 Za pomocą edytora sed wprowadź zmiany do pliku utworzonego w poprzednim zadaniu 1 W pierwszej linijce pliku słowa grep zastąp słowami sopa 2 Usuń słowo fgrep z drugiej linii 3 Słowo eegrep zastąp słowem water w całym pliku 4 W czwartym pliku frazę grep for zastąp słowem wash 5 Wszystkie te czynności wykonaj za pomocą jednego polecenia dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 42 / 44

Onka dialogowe Zadanie 42 Ściągnij przykładowe pliki z danymi do wykresów i rozpakuj je wget adam.kaliszan.yum.pl/wyklady/bash/skrypty.tar.gz tar xvzf skrypty.tar.gz Udoskonal skrypt, tak by: 1 Dla każdej pary plików.gp i.dat generowane były wykresy zapisane w plikach.eps 2 Jeśli istnieje plik eps i jego data modyfikacji jest nowsza niż data modyfikacji plików źródłowych, to pomijane jest tworzenie pliku eps 3 Plik eps konwertowany jest do pliku pdf (patrz skrypt) tylko wtedy, gdy nie ma pliku pdf lub istniejący plik pdf jest starszy od pliku eps Rozszerzenie z nazwy pliku usuń za pomocą edytora strumieniowego sed dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 43 / 44

Onka dialogowe Zadanie 42 c.d. Pasek postępu Korzystając z programu dialog dodaj okna dialogowe, które pokazuje postęp przy konwersji. Okno dialogowe Dodaj okno dialogowe, w którym pojawią się pytania liczbę dpi. Następnie w skrypcie za pomocą programu convert zamień pliki eps na pliki png o podanej rozdzielczości. Przykładowe polecenie do konwersji wygląda następująco: convert -rotate 90 -density 180 \ S20_B0_m3\(IndU3U3-1_IndU3U3-2_IndU3U3-3\)_E.eps \ S20_B0_m3\(IndU3U3-1_IndU3U3-2_IndU3U3-3\)_E.png dr inż. Adam Kaliszan Programowanie BASH 25 lipca 2017 44 / 44