Podstawy informatyki

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

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

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

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

PRACOWNIA INFORMATYCZNA CHARAKTERYSTYKA PRZEDMIOTU BASH - PODSTAWOWE INFORMACJE

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

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

1 Przygotował: mgr inż. Maciej Lasota

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

Pracownia Komputerowa wykład III

Wstęp do Informatyki dla bioinformatyków

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Powłoka (shell) Powłoka ksh

BASH - WPROWADZENIE Bioinformatyka 4

Kurs systemu Unix wykład wstępny. Kurs systemu Unix 1

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

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

Powłoka interpreter poleceń systemu UNIX

Powłoka bash. Kurs systemu Unix 1

Pracownia Informatyczna I ORGANIZACJA ZAJĘĆ, ZASADY ZALICZENIA

Niektóre katalogi są standardowymi katalogami zarezerwowanymi do użytku przez system. Znaczenie wybranych katalogów systemowych jest następujące:

System operacyjny Linux

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

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

Chemiateoretyczna. Monika Musiał. Ćwiczenia

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

Podstawy używania konsoli tekstowej w systemie Linux. Andrzej Zbrzezny

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

Podstawy Programowania.

Technologie Informacyjne - Linux 3

Laboratorium 0: System Linux, edytor vim i kompilator gcc. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

- wszystkie elementy - wszystkie elementy

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

Podstawy Programowania

Pracownia Komputerowa wykład III

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Środowisko programisty Zestaw 7

Wprowadzenie do programowania w powłoce

Interpreter poleceń oraz zmienne środowiskowe

Linuks skrypty Część teoretyczna

KARTA KURSU. Języki skryptowe

Umożliwia ona pokazanie ukrytych plików i katalogów, nazwa ich zaczyna się od kropki.

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

#!/bin/sh. if [ "$#"!= "1" ]; then echo "Skrypt uruchamiany z parametrem (sciezka do katalogu)" exit 1 fi

Programowanie w języku Python. Grażyna Koba

1 Podstawy c++ w pigułce.

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2009/2010

Technologie informacyjne lab. 4

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

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Egzamin pisemny z przedmiotu: Systemy operacyjne Semestr I

Znaki globalne w Linuxie

Przekierowanie wejścia wyjścia:

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

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

Programowanie w języku C++ Grażyna Koba

1 Podstawy c++ w pigułce.

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

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

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

tworzenie katalogów Aby utworzyć nowy katalog wpisz: mkdir katalog1 Ta komenda utworzy katalog o nazwie katalog1.

Ćwiczenie nr 14: System Linux

Zakład Systemów Rozproszonych

Tworzenie skryptu: Skrypty powłoki

Filtry, metaznaki, cytowania. Proste skrypty. Polecenia find, tee, mail.

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Liczby losowe i pętla while w języku Python

Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu Unix

Podstawy programowania skryptów Sh

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

Wstęp do systemu Linux

Systemy operacyjne. Instrukcja laboratoryjna. Ćwiczenie 1: Polecenia systemu UNIX/LINUX. Opracował: dr inż. Piotr Szpryngier

Architektura systemów informatycznych WPROWADZENIE DO SYSTEMU LINUX

Stosowanie poleceń związanych z zarządzaniem plikami oraz katalogami: nazwa_polecenia -argumenty ścieżka/ścieżki do katalogu/pliku

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

Instalacja środowiska MPI w systemie operacyjnym Linux

Systemy operacyjne 11

System operacyjny Linux wybrane zagadnienia. Magda Mielczarek Katedra Genetyki Uniwersytet Przyrodniczy we Wrocławiu

Kurs rozszerzony języka Python

Informatyka, Ćwiczenie Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

Narzędzie pomocnicze do przedmiotu Podstawy Informatyki - złożoność obliczeniowa

Konsola i interpreter poleceń

Skrypty powłoki w systemie Linux

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Wstęp do programowania

Skrypty startowe. Tryb interaktywny tryb logowania: nie logowanie: Tryb nieinteraktywny

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

Systemy Operacyjne. Ćwiczenia

Pracownia Komputerowa

Pracownia Komputerowa wyk ad III

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Wstęp do systemów wielozadaniowych laboratorium 03 Praca w powłoce UNIX-owej

Wprowadzenie do obsługi systemów obliczeniowych PCSS

System operacyjny Linux

Strona1. Linux. Skrypty powłoki

Transkrypt:

Podstawy informatyki WYKŁAD nr 02 Fizyka Techniczna, WFT PP Michał Hermanowicz Zakład Fizyki Obliczeniowej, Instytut Fizyki, Politechnika Poznańska Rok akademicki 2018/2019 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 1 / 27

Spis rzeczy 1 Przypomnienie z poprzedniego wykładu 2 Programowanie w środowisku GNU/Linux Wprowadzenie Kompilacja GCC Powłoka Bash Tworzenie i uruchamianie skryptów Standardowe WEjście/WYjście Narzędzia: grep i potok Pętle: for, while until Instrukcja warunkowa if Proste operacje arytmetyczne Przykładowe zadanie Kilka przydatnych poleceń Ćwiczenia 3 Podsumowanie: pytania i dyskusja M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 2 / 27

Plan ramowy przedmiotu Nr wykładu Poruszane zagadnienia I Organizacja; forma i warunki zaliczenia; wprowadzenie II Powłoka bash i elementy programowania III Przetwarzanie danych #1 IV Przetwarzanie danych #2 V Reprezentacja danych (wykresy 2D i 3D) gnuplot VI System składu tekstu L A TEX VII Pół-otwarty test zaliczeniowy Każdemu z wykładów odpowiadają ćwiczenia realizowane na zajęciach w pracowni komputerowej. M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 3 / 27

Języki kompilowane i interpretowane Jeden z możliwych podziałów języków programowania pozwala wyodrębnić: języki kompilowane kod źródłowy jest tłumaczony na kod maszynowy za pomocą kompilatora (ANSI C, C++, FORTRAN i in.), języki interpretowane kod źródłowy jest wykonywany bezpośrednio przez interpreter (Bash, Python, Perl, PHP i in.). M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 4 / 27

Języki kompilowane i interpretowane Jeden z możliwych podziałów języków programowania pozwala wyodrębnić: języki kompilowane kod źródłowy jest tłumaczony na kod maszynowy za pomocą kompilatora (ANSI C, C++, FORTRAN i in.), języki interpretowane kod źródłowy jest wykonywany bezpośrednio przez interpreter (Bash, Python, Perl, PHP i in.). Narzędzia programistyczne: edytor tekstu, kompilator (w tym linker)/interpreter, debugger, opcjonalnie: środowisko programistyczne zawierające funkcjonalność wszystkich powyższych narzędzi (i więcej). Przykładowe narzędzia: vim, emacs (edytory), gcc, gfortran (kompilatory); gdb (debugger). M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 4 / 27

Języki kompilowane i interpretowane KOD ŹRÓDŁOWY #include <stdio.h> int main (void) { puts ("Hello World!"); return 0; } KOMPILACJA LINKOWANIE KOD MASZYNOWY (PROGRAM) 010101010101010101 010101010101010101 010101010010101111 000101000000100001 011111010101010100 011010101001100100 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 5 / 27

Języki kompilowane i interpretowane KOD ŹRÓDŁOWY #include <stdio.h> int main (void) { puts ("Hello World!"); return 0; } KOMPILACJA LINKOWANIE KOD MASZYNOWY (PROGRAM) 010101010101010101 010101010101010101 010101010010101111 000101000000100001 011111010101010100 011010101001100100 KOD ŹRÓDŁOWY WYNIK DZIAŁANIA #!/bin/bash echo "Hello World!" INTERPRETACJA Hello World! M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 5 / 27

vim: vi improved (edytor tekstu) Edytor tekstu wydany na wiele plaform systemowych; bogactwo możliwości edycyjnych; wygodne środowisko programistyczne w połączeniu z kompilatorem gcc i narzędziami powłoki; wiele trybów edycji (podstawowa obsługa na zajęciach w pracowni). M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 6 / 27

vim: vi improved wybrane polecenia (tryb NORMAL) $ vim nazwa pliku :w nazwa zapis do pliku, :wq zapis i wyjście, :q! wyjście (ignoruj zmiany), i tryb edycji, [ESC] opuść tryb edycji, u cofnij, <Ctrl-R> powtórz, /wzorzec szukaj wzorca (n nast. / N poprzedni), :!polecenie polec. powłoki, dd usuń bieżący wiersz, D usuń stąd do końca wiersza, :%s/raz/dwa/g znajdź i zastąp (raz dwa), :s/raz/dwa/g znajdź i zastąp w bieżącym wierszu, :s/raz/dwa/gc znajdź i zastąp z potwierdzeniem, v zaznacz (przesuwając kursor: [ ], [ ], [ ], [ ]), y skopiuj zaznaczenie, d wytnij zaznaczenie, p wklej skopiowane. M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 7 / 27

Kompilacja kodu źródłowego student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 8 / 27

Kompilacja kodu źródłowego student@wftlab-180:~$ cat hello.c M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 8 / 27

Kompilacja kodu źródłowego student@wftlab-180:~$ cat hello.c #include <stdio.h> int main (void) { puts ("Hello World!"); return 0; } student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 8 / 27

Kompilacja kodu źródłowego student@wftlab-180:~$ cat hello.c #include <stdio.h> int main (void) { puts ("Hello World!"); return 0; } student@wftlab-180:~$ gcc hello.c M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 8 / 27

Kompilacja kodu źródłowego student@wftlab-180:~$ cat hello.c #include <stdio.h> int main (void) { puts ("Hello World!"); return 0; } student@wftlab-180:~$ gcc hello.c student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 8 / 27

Kompilacja kodu źródłowego student@wftlab-180:~$ cat hello.c #include <stdio.h> int main (void) { puts ("Hello World!"); return 0; } student@wftlab-180:~$ gcc hello.c student@wftlab-180:~$ ls M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 8 / 27

Kompilacja kodu źródłowego student@wftlab-180:~$ cat hello.c #include <stdio.h> int main (void) { puts ("Hello World!"); return 0; } student@wftlab-180:~$ gcc hello.c student@wftlab-180:~$ ls a.out hello.c student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 8 / 27

Kompilacja kodu źródłowego student@wftlab-180:~$ cat hello.c #include <stdio.h> int main (void) { puts ("Hello World!"); return 0; } student@wftlab-180:~$ gcc hello.c student@wftlab-180:~$ ls a.out hello.c student@wftlab-180:~$ file a.out M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 8 / 27

Kompilacja kodu źródłowego student@wftlab-180:~$ cat hello.c #include <stdio.h> int main (void) { puts ("Hello World!"); return 0; } student@wftlab-180:~$ gcc hello.c student@wftlab-180:~$ ls a.out hello.c student@wftlab-180:~$ file a.out a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32 (...) student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 8 / 27

Kompilacja kodu źródłowego student@wftlab-180:~$ cat hello.c #include <stdio.h> int main (void) { puts ("Hello World!"); return 0; } student@wftlab-180:~$ gcc hello.c student@wftlab-180:~$ ls a.out hello.c student@wftlab-180:~$ file a.out a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32 (...) student@wftlab-180:~$./a.out M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 8 / 27

Kompilacja kodu źródłowego student@wftlab-180:~$ cat hello.c #include <stdio.h> int main (void) { puts ("Hello World!"); return 0; } student@wftlab-180:~$ gcc hello.c student@wftlab-180:~$ ls a.out hello.c student@wftlab-180:~$ file a.out a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32 (...) student@wftlab-180:~$./a.out Hello World! M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 8 / 27

Uruchamianie skryptów powłoki Więcej informacji nt GCC i możliwych opcji: student@wftlab-180:~$ man gcc student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 9 / 27

Uruchamianie skryptów powłoki Więcej informacji nt GCC i możliwych opcji: student@wftlab-180:~$ man gcc student@wftlab-180:~$ cat hello.sh M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 9 / 27

Uruchamianie skryptów powłoki Więcej informacji nt GCC i możliwych opcji: student@wftlab-180:~$ man gcc student@wftlab-180:~$ cat hello.sh #!/bin/bash echo "Hello World!" student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 9 / 27

Uruchamianie skryptów powłoki Więcej informacji nt GCC i możliwych opcji: student@wftlab-180:~$ man gcc student@wftlab-180:~$ cat hello.sh #!/bin/bash echo "Hello World!" student@wftlab-180:~$ file hello.sh M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 9 / 27

Uruchamianie skryptów powłoki Więcej informacji nt GCC i możliwych opcji: student@wftlab-180:~$ man gcc student@wftlab-180:~$ cat hello.sh #!/bin/bash echo "Hello World!" student@wftlab-180:~$ file hello.sh hello.sh: Bourne-shell script, ASCII text executable student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 9 / 27

Uruchamianie skryptów powłoki Więcej informacji nt GCC i możliwych opcji: student@wftlab-180:~$ man gcc student@wftlab-180:~$ cat hello.sh #!/bin/bash echo "Hello World!" student@wftlab-180:~$ file hello.sh hello.sh: Bourne-shell script, ASCII text executable student@wftlab-180:~$./hello.sh M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 9 / 27

Uruchamianie skryptów powłoki Więcej informacji nt GCC i możliwych opcji: student@wftlab-180:~$ man gcc student@wftlab-180:~$ cat hello.sh #!/bin/bash echo "Hello World!" student@wftlab-180:~$ file hello.sh hello.sh: Bourne-shell script, ASCII text executable student@wftlab-180:~$./hello.sh Hello World! student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 9 / 27

Uruchamianie skryptów powłoki Więcej informacji nt GCC i możliwych opcji: student@wftlab-180:~$ man gcc student@wftlab-180:~$ cat hello.sh #!/bin/bash echo "Hello World!" student@wftlab-180:~$ file hello.sh hello.sh: Bourne-shell script, ASCII text executable student@wftlab-180:~$./hello.sh Hello World! student@wftlab-180:~$ ls -l hello.sh M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 9 / 27

Uruchamianie skryptów powłoki Więcej informacji nt GCC i możliwych opcji: student@wftlab-180:~$ man gcc student@wftlab-180:~$ cat hello.sh #!/bin/bash echo "Hello World!" student@wftlab-180:~$ file hello.sh hello.sh: Bourne-shell script, ASCII text executable student@wftlab-180:~$./hello.sh Hello World! student@wftlab-180:~$ ls -l hello.sh -rwxr-xr-x 1 student student 33 paź 22 12:13 hello.sh M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 9 / 27

Uruchamianie skryptów powłoki Więcej informacji nt GCC i możliwych opcji: student@wftlab-180:~$ man gcc student@wftlab-180:~$ cat hello.sh #!/bin/bash echo "Hello World!" student@wftlab-180:~$ file hello.sh hello.sh: Bourne-shell script, ASCII text executable student@wftlab-180:~$./hello.sh Hello World! student@wftlab-180:~$ ls -l hello.sh -rwxr-xr-x 1 student student 33 paź 22 12:13 hello.sh Shebang line linia specjalna: #!/bin/bash M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 9 / 27

Uruchamianie skryptów powłoki $./hello.sh Ale: musi być wykonywalny (chmod +x hello.sh). $ bash./hello.sh Wówczas: nie musi być wykonywalny (wystarczy -r--------). M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 10 / 27

Uruchamianie skryptów powłoki $./hello.sh Ale: musi być wykonywalny (chmod +x hello.sh). $ bash./hello.sh Wówczas: nie musi być wykonywalny (wystarczy -r--------). Standardowe wyjście (stdout, 1) $./hello.sh Hello World! standardowe WYjście M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 10 / 27

Uruchamianie skryptów powłoki $./hello.sh Ale: musi być wykonywalny (chmod +x hello.sh). $ bash./hello.sh Wówczas: nie musi być wykonywalny (wystarczy -r--------). Standardowe wyjście (stdout, 1) $./hello.sh Hello World! standardowe WYjście Przekierowanie stdout do pliku: $./hello.sh > plik M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 10 / 27

Uruchamianie skryptów powłoki $./hello.sh Ale: musi być wykonywalny (chmod +x hello.sh). $ bash./hello.sh Wówczas: nie musi być wykonywalny (wystarczy -r--------). Standardowe wyjście (stdout, 1) $./hello.sh Hello World! standardowe WYjście Przekierowanie stdout do pliku: $./hello.sh > plik Alternatywnie: $./hello.sh 1>plik M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 10 / 27

Uruchamianie skryptów powłoki Analogicznie (stderr = 2): $./hello.sh 2>plik err M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 11 / 27

Uruchamianie skryptów powłoki Analogicznie (stderr = 2): $./hello.sh 2>plik err stderr stdout: $./hello.sh 2>&1 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 11 / 27

Uruchamianie skryptów powłoki Analogicznie (stderr = 2): $./hello.sh 2>plik err stderr stdout: $./hello.sh 2>&1 stdout i stderr do jednego pliku: $./hello.sh &>plik M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 11 / 27

Uruchamianie skryptów powłoki Analogicznie (stderr = 2): $./hello.sh 2>plik err stderr stdout: $./hello.sh 2>&1 stdout i stderr do jednego pliku: $./hello.sh &>plik Można też: $./hello.sh &>/dev/null M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 11 / 27

Uruchamianie skryptów powłoki Analogicznie (stderr = 2): $./hello.sh 2>plik err stderr stdout: $./hello.sh 2>&1 stdout i stderr do jednego pliku: $./hello.sh &>plik Można też: $./hello.sh &>/dev/null A także: $./hello.sh 1>plik 2>bledy M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 11 / 27

Uruchamianie skryptów powłoki /dev/null to plik specjalny urządzenie zerowe (tzw. czarna dziura). Przekierowanie informacji do tego pliku powoduje ich utratę (bezpowrotne usunięcie). M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 12 / 27

Uruchamianie skryptów powłoki /dev/null to plik specjalny urządzenie zerowe (tzw. czarna dziura). Przekierowanie informacji do tego pliku powoduje ich utratę (bezpowrotne usunięcie). W systemie GNU/Linux wszystko jest plikiem, również urządzenia, dlatego można zrobić tak: $./hello.sh > /dev/lpr /dev/lpr to drukarka. Jeżeli jest podłączona do komputera i skonfigurowana w systemie wówczas wynik działania skryptu zostanie wydrukowany. M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 12 / 27

Uruchamianie skryptów powłoki /dev/null to plik specjalny urządzenie zerowe (tzw. czarna dziura). Przekierowanie informacji do tego pliku powoduje ich utratę (bezpowrotne usunięcie). W systemie GNU/Linux wszystko jest plikiem, również urządzenia, dlatego można zrobić tak: $./hello.sh > /dev/lpr /dev/lpr to drukarka. Jeżeli jest podłączona do komputera i skonfigurowana w systemie wówczas wynik działania skryptu zostanie wydrukowany. Inne pliki urządzeń: skanery, plotery, dyski twarde, napędy CD-ROM, stacje dyskietek, streamery itd. M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 12 / 27

Narzędzie grep grep (man grep) przeszukuje zadany plik (lub stdout) w poszukiwaniu wierszy zawierających określony wzorzec. SKŁADNIA: grep WZORZEC plik Przykład: $ cat liczby.txt 45678 23 2435 67876 245723 $ grep 23 liczby.txt 23 245723 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 13 / 27

Potok (pipeline) Potok pipeline (symbol: ) przekierowuje standardowe WYjście (stdout) programu na WEjście innego. Przykład z użyciem narzędzia grep: $ cat liczby.txt grep 23 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 14 / 27

Potok (pipeline) Potok pipeline (symbol: ) przekierowuje standardowe WYjście (stdout) programu na WEjście innego. Przykład z użyciem narzędzia grep: $ cat liczby.txt grep 23 23 245723 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 14 / 27

Potok (pipeline) Potok pipeline (symbol: ) przekierowuje standardowe WYjście (stdout) programu na WEjście innego. Przykład z użyciem narzędzia grep: $ cat liczby.txt grep 23 23 245723 Narzędzie wc (word count) - zlicza słowa, wiersze, bajty: $ wc -l liczby.txt ( z przełącznikiem -l zlicza wiersze) M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 14 / 27

Potok (pipeline) Potok pipeline (symbol: ) przekierowuje standardowe WYjście (stdout) programu na WEjście innego. Przykład z użyciem narzędzia grep: $ cat liczby.txt grep 23 23 245723 Narzędzie wc (word count) - zlicza słowa, wiersze, bajty: $ wc -l liczby.txt ( z przełącznikiem -l zlicza wiersze) 5 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 14 / 27

Potok (pipeline) Potok pipeline (symbol: ) przekierowuje standardowe WYjście (stdout) programu na WEjście innego. Przykład z użyciem narzędzia grep: $ cat liczby.txt grep 23 23 245723 Narzędzie wc (word count) - zlicza słowa, wiersze, bajty: $ wc -l liczby.txt ( z przełącznikiem -l zlicza wiersze) 5 $ cat liczby.txt grep 23 wc -l M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 14 / 27

Potok (pipeline) Potok pipeline (symbol: ) przekierowuje standardowe WYjście (stdout) programu na WEjście innego. Przykład z użyciem narzędzia grep: $ cat liczby.txt grep 23 23 245723 Narzędzie wc (word count) - zlicza słowa, wiersze, bajty: $ wc -l liczby.txt ( z przełącznikiem -l zlicza wiersze) 5 $ cat liczby.txt grep 23 wc -l 2 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 14 / 27

Potok (pipeline) Narzędzie tee (man tee): czyta WEjście i zapisuje na WYjście oraz do pliku. Przykład: $ cat liczby.txt tee out M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 15 / 27

Potok (pipeline) Narzędzie tee (man tee): czyta WEjście i zapisuje na WYjście oraz do pliku. Przykład: $ cat liczby.txt tee out 45678 23 2435 67876 245723 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 15 / 27

Potok (pipeline) Narzędzie tee (man tee): czyta WEjście i zapisuje na WYjście oraz do pliku. Przykład: $ cat liczby.txt tee out 45678 23 2435 67876 245723 $ cat out M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 15 / 27

Potok (pipeline) Narzędzie tee (man tee): czyta WEjście i zapisuje na WYjście oraz do pliku. Przykład: $ cat liczby.txt tee out 45678 23 2435 67876 245723 $ cat out 45678 23 2435 67876 245723 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 15 / 27

Pętla for: Pętla for: for i in 1 2 3 4 5 do echo $i done M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 16 / 27

Pętla for: Pętla for: for i in 1 2 3 4 5 do echo $i done Wynik działania: 1 2 3 4 5 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 16 / 27

Pętla for: Pętla for: for i in 1 2 3 4 5 do echo $i done Wynik działania: 1 2 3 4 5 Dla każdego elementu i z zadanego zbioru wykonaj instrukcje zawarte pomiędzy do a done. Zmienne wywołujemy poprzedzając je znakiem $. M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 16 / 27

Pętla for: Można inaczej: $ seq 1 1 5 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 17 / 27

Pętla for: Można inaczej: $ seq 1 1 5 1 2 3 4 5 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 17 / 27

Pętla for: Można inaczej: $ seq 1 1 5 1 2 3 4 5 SKŁADNIA: seq [początek] [krok] [koniec] M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 17 / 27

Pętla for: Można inaczej: $ seq 1 1 5 1 2 3 4 5 SKŁADNIA: seq [początek] [krok] [koniec] A w skrypcie (symbol pod klawiszem ESC): for i in seq 1 1 5 do echo $i done M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 17 / 27

Pętla for: $ seq 0.0 0.5 2 0.0 0.5 1.0 1.5 2.0 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 18 / 27

Pętla for: $ seq 0.0 0.5 2 0.0 0.5 1.0 1.5 2.0 Uwaga na separator dziesiętny zależy od lokalizacji środowiska (export LC NUMERIC=C). M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 18 / 27

Pętla for: $ seq 0.0 0.5 2 0.0 0.5 1.0 1.5 2.0 Uwaga na separator dziesiętny zależy od lokalizacji środowiska (export LC NUMERIC=C). Alternatywna składnia pętli for: for ((i=0; i<10; i++)) do echo $i done M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 18 / 27

Pętla while: Pętla while: x=1 while [ $x -le 4 ] do echo "x=$x" x=$[x + 1] done M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 19 / 27

Pętla while: Pętla while: x=1 while [ $x -le 4 ] do echo "x=$x" x=$[x + 1] done Wynik działania: x=1 x=2 x=3 x=4 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 19 / 27

Pętla while: Pętla while: x=1 while [ $x -le 4 ] do echo "x=$x" x=$[x + 1] done Wynik działania: x=1 x=2 x=3 x=4 Wykonuj instrukcje w pętli dopóki [ warunek ] pozostaje spełniony. M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 19 / 27

Pętla until: Pętla until: x=1 until [ $x -gt 4 ] do echo "x=$x" x=$[x + 1] done M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 20 / 27

Pętla until: Pętla until: x=1 until [ $x -gt 4 ] do echo "x=$x" x=$[x + 1] done Wynik działania: x=1 x=2 x=3 x=4 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 20 / 27

Pętla until: Pętla until: x=1 until [ $x -gt 4 ] do echo "x=$x" x=$[x + 1] done Wynik działania: x=1 x=2 x=3 x=4 Wykonuj instrukcje w pętli dopóki [ warunek ] pozostaje niespełniony. M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 20 / 27

Instrukcja warunkowa if Konstrukcje typu [ warunek ] (spacje przed/po są konieczne!) realizują instrukcję test (man test). Na przykład: if [ -e plik ] then operacja1 else operacja2 fi Jeżeli plik istnieje wykonaj operację 1, jeżeli nie istnieje wykonaj operację 2. Można zadać więcej warunków poprzez elif [ warunek ]. Instrukcje elif i else są opcjonalne. Wszystkie możliwe warunki można sprawdzić w dokumentacji polecenia test (man test). M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 21 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ echo $((2+2)) M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ echo $((2+2)) 4 student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ echo $((2+2)) 4 student@wftlab-180:~$ b=2 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ echo $((2+2)) 4 student@wftlab-180:~$ b=2 student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ echo $((2+2)) 4 student@wftlab-180:~$ b=2 student@wftlab-180:~$ let b=$b+2 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ echo $((2+2)) 4 student@wftlab-180:~$ b=2 student@wftlab-180:~$ let b=$b+2 student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ echo $((2+2)) 4 student@wftlab-180:~$ b=2 student@wftlab-180:~$ let b=$b+2 student@wftlab-180:~$ echo $b M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ echo $((2+2)) 4 student@wftlab-180:~$ b=2 student@wftlab-180:~$ let b=$b+2 student@wftlab-180:~$ echo $b 4 student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ echo $((2+2)) 4 student@wftlab-180:~$ b=2 student@wftlab-180:~$ let b=$b+2 student@wftlab-180:~$ echo $b 4 student@wftlab-180:~$ expr 5 + 5 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ echo $((2+2)) 4 student@wftlab-180:~$ b=2 student@wftlab-180:~$ let b=$b+2 student@wftlab-180:~$ echo $b 4 student@wftlab-180:~$ expr 5 + 5 10 student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ echo $((2+2)) 4 student@wftlab-180:~$ b=2 student@wftlab-180:~$ let b=$b+2 student@wftlab-180:~$ echo $b 4 student@wftlab-180:~$ expr 5 + 5 10 student@wftlab-180:~$ c= expr 5 + 5 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ echo $((2+2)) 4 student@wftlab-180:~$ b=2 student@wftlab-180:~$ let b=$b+2 student@wftlab-180:~$ echo $b 4 student@wftlab-180:~$ expr 5 + 5 10 student@wftlab-180:~$ c= expr 5 + 5 student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ echo $((2+2)) 4 student@wftlab-180:~$ b=2 student@wftlab-180:~$ let b=$b+2 student@wftlab-180:~$ echo $b 4 student@wftlab-180:~$ expr 5 + 5 10 student@wftlab-180:~$ c= expr 5 + 5 student@wftlab-180:~$ echo $c M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ echo $((2+2)) 4 student@wftlab-180:~$ b=2 student@wftlab-180:~$ let b=$b+2 student@wftlab-180:~$ echo $b 4 student@wftlab-180:~$ expr 5 + 5 10 student@wftlab-180:~$ c= expr 5 + 5 student@wftlab-180:~$ echo $c 10 student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ echo $((2+2)) 4 student@wftlab-180:~$ b=2 student@wftlab-180:~$ let b=$b+2 student@wftlab-180:~$ echo $b 4 student@wftlab-180:~$ expr 5 + 5 10 student@wftlab-180:~$ c= expr 5 + 5 student@wftlab-180:~$ echo $c 10 student@wftlab-180:~$ let c= expr $c + 5 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ a=1 student@wftlab-180:~$ echo $a 1 student@wftlab-180:~$ echo $((2+2)) 4 student@wftlab-180:~$ b=2 student@wftlab-180:~$ let b=$b+2 student@wftlab-180:~$ echo $b 4 student@wftlab-180:~$ expr 5 + 5 10 student@wftlab-180:~$ c= expr 5 + 5 student@wftlab-180:~$ echo $c 10 student@wftlab-180:~$ let c= expr $c + 5 ; echo $c M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 22 / 27

Arytmetyka w Bashu student@wftlab-180:~$ d=20 M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 23 / 27

Arytmetyka w Bashu student@wftlab-180:~$ d=20 student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 23 / 27

Arytmetyka w Bashu student@wftlab-180:~$ d=20 student@wftlab-180:~$ ((d = $d + 10)) M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 23 / 27

Arytmetyka w Bashu student@wftlab-180:~$ d=20 student@wftlab-180:~$ ((d = $d + 10)) student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 23 / 27

Arytmetyka w Bashu student@wftlab-180:~$ d=20 student@wftlab-180:~$ ((d = $d + 10)) student@wftlab-180:~$ echo $d M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 23 / 27

Arytmetyka w Bashu student@wftlab-180:~$ d=20 student@wftlab-180:~$ ((d = $d + 10)) student@wftlab-180:~$ echo $d 30 student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 23 / 27

Arytmetyka w Bashu student@wftlab-180:~$ d=20 student@wftlab-180:~$ ((d = $d + 10)) student@wftlab-180:~$ echo $d 30 student@wftlab-180:~$ ((d++)) M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 23 / 27

Arytmetyka w Bashu student@wftlab-180:~$ d=20 student@wftlab-180:~$ ((d = $d + 10)) student@wftlab-180:~$ echo $d 30 student@wftlab-180:~$ ((d++)); echo $d M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 23 / 27

Arytmetyka w Bashu student@wftlab-180:~$ d=20 student@wftlab-180:~$ ((d = $d + 10)) student@wftlab-180:~$ echo $d 30 student@wftlab-180:~$ ((d++)); echo $d 31 student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 23 / 27

Arytmetyka w Bashu student@wftlab-180:~$ d=20 student@wftlab-180:~$ ((d = $d + 10)) student@wftlab-180:~$ echo $d 30 student@wftlab-180:~$ ((d++)); echo $d 31 student@wftlab-180:~$ Możliwa jest prosta arytmetyka w powłoce Bash, ale możemy też użyć zewnętrznego narzędzia do wykonywania operacji matematycznych, np. bc (więcej informacji: man bc). student@wftlab-180:~$ echo 13/2 bc M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 23 / 27

Arytmetyka w Bashu student@wftlab-180:~$ d=20 student@wftlab-180:~$ ((d = $d + 10)) student@wftlab-180:~$ echo $d 30 student@wftlab-180:~$ ((d++)); echo $d 31 student@wftlab-180:~$ Możliwa jest prosta arytmetyka w powłoce Bash, ale możemy też użyć zewnętrznego narzędzia do wykonywania operacji matematycznych, np. bc (więcej informacji: man bc). student@wftlab-180:~$ echo 13/2 bc 6 student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 23 / 27

Arytmetyka w Bashu student@wftlab-180:~$ d=20 student@wftlab-180:~$ ((d = $d + 10)) student@wftlab-180:~$ echo $d 30 student@wftlab-180:~$ ((d++)); echo $d 31 student@wftlab-180:~$ Możliwa jest prosta arytmetyka w powłoce Bash, ale możemy też użyć zewnętrznego narzędzia do wykonywania operacji matematycznych, np. bc (więcej informacji: man bc). student@wftlab-180:~$ echo 13/2 bc 6 student@wftlab-180:~$ echo 13/2 bc -l M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 23 / 27

Arytmetyka w Bashu student@wftlab-180:~$ d=20 student@wftlab-180:~$ ((d = $d + 10)) student@wftlab-180:~$ echo $d 30 student@wftlab-180:~$ ((d++)); echo $d 31 student@wftlab-180:~$ Możliwa jest prosta arytmetyka w powłoce Bash, ale możemy też użyć zewnętrznego narzędzia do wykonywania operacji matematycznych, np. bc (więcej informacji: man bc). student@wftlab-180:~$ echo 13/2 bc 6 student@wftlab-180:~$ echo 13/2 bc -l 6.50000000000000000000 student@wftlab-180:~$ M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 23 / 27

Przykładowe zadanie Zadanie z zajęć w pracowni: a utworzyć katalog o nazwie zadanie1, a w nim (za pomocą skryptu) wygenerować 1366 plików o nazwach zawierających liczbę losową (przed utworzeniem upewnić się, że plik o zadanej nazwie nie istnieje już w bieżącym katalogu); b zmodyfikować skrypt w taki sposób, żeby pliki zawierające w nazwie liczbę parzystą/nieparzystą były tworzone w oddzielnych podkatalogach. M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 24 / 27

Przykładowe zadanie Zadanie z zajęć w pracowni: a utworzyć katalog o nazwie zadanie1, a w nim (za pomocą skryptu) wygenerować 1366 plików o nazwach zawierających liczbę losową (przed utworzeniem upewnić się, że plik o zadanej nazwie nie istnieje już w bieżącym katalogu); b zmodyfikować skrypt w taki sposób, żeby pliki zawierające w nazwie liczbę parzystą/nieparzystą były tworzone w oddzielnych podkatalogach. Przydatne informacje: polecenie touch zmiana czasu dostępu/modyfikacji pliku, ale pozwala też utworzyć pusty plik (więcej: man touch), zmienna RANDOM: echo $RANDOM zwraca liczbę pseudolosową, polecenia: mkdir (tworzenie katalogów), rm (usuwanie plików). M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 24 / 27

Przydatne polecenia ls lista plików w bież. katalogu, mkdir nazwa utwórz katalog, cd nazwa przejdź do katalogu, cd.. przejdź do kat. wyżej, pwd ścieżka dost. do bież. katalogu, rm * usuń wszystkie pliki w bieżącym katalogu, rm -R * usuń wszystkie pliki i katalogi w bieżącym katalogu, touch plik zmienia czas modyf. / tworzy nieistniejący plik, cat nazwa wyświetla zawartość pliku nazwa, cp nazwa1 nazwa2 skopiuj nazwa1 nazwa2, mv nazwa1 nazwa2 przenieś / zmień nazwę, grep wzorzec plik zwraca wiersze (z pliku) zawierające wzorzec, less plik przeglądaj zawartość pliku (wyjście: q), [TAB] uzupełnianie składni, [ ] poprzednie polecenie, nazwa (./nazwa) uruchamia program,. symbol bieżącego katalogu,.. katalog wyżej w systemie plików. M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 25 / 27

Ćwiczenia Typy zmiennych (declare i readonly), zmienne środowiskowe (env, export) i specjalne, M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 26 / 27

Ćwiczenia Typy zmiennych (declare i readonly), zmienne środowiskowe (env, export) i specjalne, przekazywanie argumentów do skryptu, proste wyrażenia regularne i grep, funkcje, wartości zwracane przez funkcje i skrypty, (...) M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 26 / 27

Podsumowanie Pytania i dyskusja M. Hermanowicz (IF PP) Podstawy informatyki / wykład nr 02 Rok akademicki 2018/2019 27 / 27