PODSTAWY INFORMATYKI

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

1 Przygotował: mgr inż. Maciej Lasota

Laboratorium 5 Podstawy budowy skryptów w systemie UNIX cz. 1

Systemy operacyjne 10

#Tu jest komentarz. fi case. until while { } time [ ] for do. function done. if elif. in else. select esac. then

Pracownia Komputerowa wykład III

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Pracownia Komputerowa wykład III

Tworzenie skryptu: Skrypty powłoki

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

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

Programowanie w BASH u Skrypt do ćwiczeń

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Wprowadzenie do programowania w powłoce

Interpreter poleceń oraz zmienne środowiskowe

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

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

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

11. Wstęp do skryptów w Linuxie

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

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

Skrypty powłoki w systemie Linux

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

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

Przekierowanie wejścia wyjścia:

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

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

Powłoka interpreter poleceń systemu UNIX

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

Powłoka bash. Kurs systemu Unix 1

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

Wstęp do systemu Linux

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

Technologie Informacyjne - Linux 2

Wstęp do systemu Linux

Pracownia Komputerowa wyk ad III

Powłoka (shell) Powłoka ksh

Laboratorium Ubuntu Linux.

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

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

Technologie Informacyjne - Linux 3

Egzamin pisemny z przedmiotu: Systemy operacyjne Semestr I

Powłoka, redyrekcja, potok

Podstawy programowania w Bash'u

Narzędzia informatyczne w językoznawstwie

Programowanie w języku Python. Grażyna Koba

System Linux - użytkowanie

System operacyjny Linux

5. Linux - powłoka Kilka słów o powłoce Zmienne systemowe

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

Ćwiczenie 1. Podstawowe wiadomości

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

Pracownia komputerowa. Dariusz wardecki, wyk II

BASH - WPROWADZENIE Bioinformatyka 4

PRACOWNIA INFORMATYCZNA CHARAKTERYSTYKA PRZEDMIOTU BASH - PODSTAWOWE INFORMACJE

Pracownia Informatyczna I ORGANIZACJA ZAJĘĆ, ZASADY ZALICZENIA

Strona1. Linux. Skrypty powłoki

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Znaki globalne w Linuxie

Wstęp do Informatyki dla bioinformatyków

Systemy operacyjne Programowanie w języku powłoki sh

Konsola i interpreter poleceń

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

Linux: System Plików

Programowanie 1. Wprowadzenie do bash-a. Elwira Wachowicz. 06 lutego 2012

Systemy Operacyjne. Część II Zarządzanie/Administracja Systemem. 5: Skrypty. autor: mgr inż. Andrzej Woźniak

Systemy operacyjne / Programowanie w języku powłoki sh str.1/19

System operacyjny UNIX Ćwiczenie 1. Podstawowe polecenia systemu Unix

host name: protokół SSH System plików - wprowadzenie Ścieżki dostępu

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Pracownia Komputerowa wyk ad II

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

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

SPIS TREŚCI 1. WIADOMOŚCI OGÓLNE ZARZĄDZANIE SYSTEMEM LINUX WIELODOSTĘPNOŚĆ SYSTEMY PLIKÓW I STRUKTURA FOLDERÓW...

PODSTAWOWE INFORMACJE NA TEMAT KONSOLI W SYSTEMIE WINDOWS

Technologie Informacyjne - Linux 1

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

Podstawy informatyki

Pracownia Komputerowa wykład II

Podstawy JavaScript ćwiczenia

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

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

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

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

Podstawy użytkowania Linux a

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Wstęp do obsługi Linux a

Trochę o plikach wsadowych (Windows)

Wstęp do informatyki Shell podstawy

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

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

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

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

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

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

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

Zakład Systemów Rozproszonych

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

Ćwiczenie nr 14: System Linux

chmod +x skrypt /bin/bash nazwa_skryptu ZMIENNA=123 ZMIENNA="wartość tekstowa" SCIEZKA="$HOME/plik" echo $SCIEZKA

Transkrypt:

PODSTAWY INFORMATYKI Bash literatura Wykład został opracowany na podstawie materiałów: http://www.ournet.pl/kursbasha/main.html 2 1

Bash BASH (ang. Bourne Again SHell) to stworzony przez Briana Foxa i Cheta Rameya zgodny z sh interpreter poleceń, łączący w sobie zalety shella Korna (ksh) i C- shella (csh). BASH to najbardziej popularna powłoka używana na systemach unixowych, jest też skryptowym językiem programowania, umożliwiającym efektywne zarządzanie systemem. Skrypt to niekompilowany tekstowy plik wykonywalny, zawierający pewne polecenia systemowe oraz polecenia sterujące jego wykonaniem (instrukcje, pętle itp.). Wykonywany jest tylko i wyłącznie przez interpreter (np. /bin/bash), który tłumaczy polecenia zawarte w skrypcie na język zrozumiały dla procesora. 3 ls (np. ls l) Przykładowe polecenia prawa dostępu ([d-katalog, l-dowiązanie], właściciel, grupa, do której należy właściciel, pozostali): drwxrwxrwx man apropos mkdir touch zakładanie pliku (pico, vim, vi, mcedit,.) cp mv rm (np. rm r nazwa_katalogu - kasowanie katalogu, niepustego) cat wyświetlenie zawartości zbioru 4 2

Wzorce nazw? zastępuje dowolny znak (bez spacji) * zastępuje ciąg znaków Przykłady???.* *.* * 5 Echo Polecenie echo służy do wydrukowania na standardowym wyjściu (stdout - domyślnie jest to ekran) napisu podanego jako argument polecenia. echo "jakiś napis Można też pisać do pliku. echo "jakiś napis" > plik Kasowanie zawartości echo "jakiś napis" >> plik Dopisywanie na końcu 6 3

Echo parametry polecenia -n nie jest wysyłany znak nowej linii -e włącza interpretacje znaków specjalnych: \a alert, dzwonek \b backspace \c pomija znak kończący nowej linii \f escape \n form feed czyli wysuw strony \r znak nowej linii \t tabulacja pozioma \v tabulacja pionowa \\ backslash \nnn znak, którego kod ASCII ma wartość ósemkowo \xnnn znak, którego kod ASCII ma wartość szesnastkowo 7 Echo $ echo Angielskie I m $ echo Angielskie I \ m W tym przypadku zapis \ (apostrof, backslash, apostrof, apostrof) zadziała tak jakby apostrof znajdował się w ciągu znaków objętych apostrofami. Pierwszy znak w ciągu \ kończy pierwszy ciąg objęty apostrofami ( Angielskie I ), \ dodaje znak apostrofu, a następny apostrof rozpoczyna kolejny ciąg znaków objęty apostrofami, zawierający literę m. 8 4

Pierwszy skrypt!! touch skrypt1 #Tu jest komentarz. echo "Witaj" Znak # oznacza komentarz, interpreter pomija wszystko co znajduje się za nim w tej samej linii. #! ma szczególne znaczenie - wskazuje na rodzaj shella w jakim skrypt ma być wykonany. Ale to nie wszystko 9 Pierwszy skrypt!! Aby móc uruchomić skrypt należy mu jeszcze nadać atrybut wykonywalności za pomocą polecenia: chmod +x skrypt1 Jeśli katalog bieżący w którym znajduje się skrypt nie jest dopisany do zmiennej PATH, to nasz skrypt możemy uruchomić następująco:./skrypt1 10 5

chmod chmod chmod u+x, chmod u-x, chmod +x, chmod -x, chmod 777, itd. Czy są inne możliwości? UWAGA: chmod 000. 11 read Polecenie read czyta ze standardowego wejścia pojedynczy wiersz. read [-opcje] nazwa_zmiennej Przykład: echo -n "Podaj swoje imię: " read imie echo "$imie" Wprowadzenie danych do zmiennej imie zmienna nie musi być wcześniej tworzona, jeśli istniała wcześniej, to jej zawartość zostanie zastąpiona tym co wpisaliśmy. 12 6

read cd. Przykład: echo Wpisz coś: answer= napis read answer echo $answer Sposób zapisu!!! 13 read cd. Polecenie read pozwala na przypisanie kilku wartości kilku zmiennym. Przykład: echo Wpisz cztery wartości: read a b c echo Wartość zmiennej a to: $a echo Wartość zmiennej b to: $b echo Wartość zmiennej c to: $c Np. 5 7 8 3 A co tutaj będzie? 14 7

read wybrane opcje -p Pokaże znak zachęty bez kończącego znaku nowej linii. read -p "Podaj swoje imię :" odp echo "$odp" -a Kolejne wartości przypisywane są do kolejnych indeksów zmiennej tablicowej. echo Podaj elementy zmiennej tablicowej: read a tablica echo "${tablica[*]} 15 Cytowanie Znaki cytowania służą do usuwania interpretacji znaków specjalnych przez powłokę. cudzysłów (ang. double quote): " " do umieszczania tekstu, wartości zmiennych zawierających spacje. Cudzysłowy zachowują znaczenie specjalne trzech znaków: $ wskazuje na nazwę zmiennej, umożliwiając podstawienie jej wartości, \ znak maskujący, ` ` odwrotny apostrof, umożliwia zacytowanie polecenia. 16 8

Cytowanie przykład x=2 echo "Wartość zmiennej x to $x" #wydrukuje Wartość zmiennej x to 2 echo -ne "Usłyszysz dzwonek\a " echo "Polecenie date pokaże: `date`" 17 Cytowanie cd. apostrof (ang. single quote): ' ' Wszystko co ujęte w znaki apostrofu traktowane jest jak łańcuch tekstowy, apostrof wyłącza interpretowanie wszystkich znaków specjalnych, znaki traktowane są jak zwykłe znaki. echo '$USER' #nie wypisze loginu!!! 18 9

Cytowanie cd. odwrotny apostrof (ang. backquote): ` ` umożliwia zacytowanie polecenia, bardzo przydatne jeśli chce się podstawić pod zmienną wynik jakiegoś polecenia np: x=`ls -la $PWD` echo $x #pokaże rezultat polecenia Alternatywny zapis, który ma takie samo działanie: echo $(ls -la $PWD) 19 Cytowanie cd. backslash, czyli znak maskujący: \ na ekranie ma pojawić się napis $HOME echo "$HOME" #wydrukuje /home/ja aby wyłączyć interpretacje przez powłokę tej zmiennej, trzeba napisać: echo \$HOME i jest napis $HOME 20 10

Funkcje Coś w rodzaju podprogramów. Stosuje się, gdy w skrypcie powtarza się jakaś grupa poleceń. Do danej funkcji odwołujemy się podając jej nazwę, a wykonane zostanie wszystko, co wpisaliśmy między nawiasy { }. Funkcje skracają znacznie długość skryptu. Składnia: function nazwa_funkcji { polecenie1 polecenie2 } 21 Funkcje przykład function napis { echo "To jest napis" } napis wywołanie naszej funkcji 22 11

Funkcje cd. Funkcje mogą się znajdować w innym pliku, co uczyni nasz skrypt bardziej przejrzystym i wygodnym, tworzy się własne pliki nagłówkowe, wywołuje się je tak:. ~/nasz_plik_z_funkcjami nazwa_funkcji Trzeba pamiętać o podaniu kropki i spacji przed nazwą pliku!!!! 23 Funkcje przykład function nasza_funkcja { echo -e 'Właśnie użyłeś funkcji o nazwie "nasza_funkcja".\a' } Teraz pozostało jeszcze utworzyć skrypt, w którym wywołamy funkcję: nasza_funkcja: echo "Test funkcji.". funkcja nasza_funkcja 24 12

Zmienne programowe (ang. program variables) Zmienne definiowane samodzielnie przez użytkownika. nazwa_zmiennej="wartość" Na przykład: x="napis" echo $x x = "napis" Błędny zapis!!! 25 Zmienne programowe cd. Pod zmienną możemy podstawić wynik jakiegoś polecenia (dwa sposoby): 1. Poprzez użycie odwrotnych apostrofów: `polecenie` GDZIE_JESTEM=`pwd` #Wartością zmiennej GDZIE_JESTEM jest wynik działania polecenia pwd, które wypisze nazwę katalogu w jakim się w danej chwili znajdujemy. echo "Jestem w katalogu $GDZIE_JESTEM" 26 13

Zmienne programowe cd. 2. Za pomocą rozwijania zawartości nawiasów: $(polecenie) GDZIE_JESTEM=$(pwd) echo "Jestem w katalogu $GDZIE_JESTEM" 27 Zmienne specjalne (ang. special variables, special parameters) To najbardziej prywatne zmienne powłoki, są udostępniane użytkownikowi tylko do odczytu. $0 nazwa bieżącego skryptu lub powłoki echo "$0" #Pokaże nazwę naszego skryptu. $1..$9 Parametry przekazywane do skryptu (użytkownik może modyfikować ten rodzaj $-ych specjalnych). echo "$1 $2 $3" Zadziała w przypadku uruchomienia skryptu z parametrami!!! 28 14

$@ Zmienne specjalne cd. Pokaże wszystkie parametry przekazywane do skryptu (też wyjątek), równoważne $1 $2 $3..., jeśli nie podane są żadne parametry $@ interpretowana jest jako nic. echo "Skrypt uruchomiono z parametrami: $@"./plik parametr1 parametr2 Wynik działania: Skrypt uruchomiono z parametrami: parametr1 parametr2 29 Zmienne specjalne cd. $? kod powrotu ostatnio wykonywanego polecenia $# Liczba wszystkich parametrów wywoływanego polecenia $$ PID procesu bieżącej powłoki 30 15

Zmienne środowiskowe (ang.environment variables) Definiują środowisko użytkownika, dostępne dla wszystkich procesów potomnych. Wyróżniamy: globalne - widoczne w każdym podshellu lokalne - widoczne tylko dla tego shella, w którym zostały ustawione x="napis" #definicja zmiennej echo $x xterm #wywołanie podshella ponowne wywołanie: echo $x nie pokaże nic, bo zmienne lokalne nie są widoczne w podshellach!!! 31 Zmienne środowiskowe cd. Inicjacja zmiennej globalnej: export x="napis" Teraz zmienna x będzie widoczna w podshellach. Polecenie export nadaje wskazanym zmiennym atrybut zmiennych globalnych. Polecenie export -p pozwala uzyskać listę aktualnie eksportowanych zmiennych. usunięcie atrybutu eksportu dla danej zmiennej export -n zmienna 32 16

Przykłady zmiennych środowiskowych $HOME $USER $HOSTNAME $OSTYPE #ścieżka do katalogu domowego #twój login #nazwa twojego hosta #rodzaj systemu operacyjnego dostępne zmienne środowiskowe można wyświetlić za pomocą polecenia: printenv more 33 Zmienne tablicowe BASH pozwala na stosowanie zmiennych tablicowych jednowymiarowych. Tablica? Zmienna, która przechowuje listę pewnych wartości (rozdzielonych spacjami). w BASH'u nie ma maksymalnego rozmiaru tablic. Kolejne wartości zmiennej tablicowej indeksowane są przy pomocy liczb całkowitych, zaczynając od 0. Składnia zmienna=(wartość1 wartość2 wartość3 wartośćn) 34 17

Zmienne tablicowe przykład tablica=(element1 element2 element3) echo ${tablica[0]} echo ${tablica[1]} echo ${tablica[2]} Do elementów tablicy odwołujemy się za pomocą wskaźników. ${nazwa_zmiennej[wskaźnik]} Wskaźnikami są indeksy elementów tablicy: 0 n, @, *. echo ${tablica[*]} #to samo co powyżej 35 Zmienne tablicowe cd. Można też uzyskać długość (liczba znaków) danego elementu tablicy: ${#nazwa_zmiennej[wskaźnik]} tablica=(element1 element2 element3) echo ${#tablica[0]} #liczba znaków pierwszego elementu tablicy, czyli 8. echo ${#tablica[@]} #liczba wszystkich elementów tablicy, czyli 3. 36 18

Dodawanie elementów do tablicy nazwa_zmiennej[wskaźnik]=wartość tablica=(element1 element2 element3) tablica[3]=element4 echo ${tablica[@]} BASH automatycznie utworzy tablicę, w przypadku dodania elementu do zmiennej nieistniejącej: linux[0]=slackware linux[1]=debian echo ${linux[@]} Tablica linux z dwoma elementami. 37 Usuwanie elementów tablic Polecenie unset. unset nazwa_zmiennej[wskaźnik] tablica=(element1 element2 element3) echo ${tablica[@]} unset tablica[2] echo ${tablica[*]} Usunięty ostatni element tablicy. 38 19

Usuwanie całych tablic Aby usunąć całą tablicę wystarczy podać jako wskaźnik: @ lub *. tablica=(element1 element2 element3) unset tablica[*] echo ${tablica[@]} Ciekawe, co zostanie wyświetlone? 39 Wyrażenia arytmetyczne mechanizm interpretacji wyrażeń arytmetycznych, obliczenia dokonywane są na liczbach całkowitych, nie przeprowadzana jest kontrola przepełnienia (ang. overflow). $((wyrażenie)) lub $[wyrażenie] echo $((8/2)) wynik=$[4*5/2] echo "$wynik" 40 20

Wyrażenia arytmetyczne cd. Polecenie let liczba1=5 liczba2=6 let wynik=liczba1*liczba2 echo "$wynik" 41 Strumienie danych stdin (ang. standard input), standardowe wejście, skąd proces pobiera dane, domyślnie jest to klawiatura stdout (ang. standard output) to standardowe wyjście, wysyłany jest tam wynik działania procesu, domyślnie ekran stderr (ang. standard error), standardowe wyjście błędów, tam trafiają wszystkie komunikaty o błędach, domyślnie ekran 42 21

Deskryptory plików Linux wszystko traktuje jako plik, niezależnie od tego czy to jest plik zwykły, katalog, urządzenie blokowe (klawiatura, ekran) itd. Tak samo jest ze strumieniami, BASH identyfikuje je za pomocą przyporządkowanych im liczb całkowitych (0 2), tzw. deskryptorów plików: 0 to plik, z którego proces pobiera dane: stdin, 1 to plik, do którego proces pisze wyniki swojego działania stdout, 2 to plik, do którego trafiają komunikaty o błędach stderr. Za pomocą operatorów przypisania można manipulować strumieniami, poprzez przypisanie deskryptorów: 0, 1, 2 innym plikom, niż tym reprezentującym klawiaturę i ekran. 43 Przełączanie standardowego wejścia Zamiast klawiatury jako standardowe wejście można otworzyć plik: < plik sort < lista Wynik na ekranie: caldera debian redhat slackware Plik lista: slackaware redhat debian caldera 44 22

Przełączanie standardowego wyjścia Wynik jakiegoś polecenia można wysłać do pliku (z nadpisaniem lub z dopisaniem), a nie na ekran: > plik lub >> plik ls -la /usr/bin > ~/wynik jeśli plik wynik wcześniej nie istniał, to zostanie utworzony, jeśli istniał cała jego poprzednia zawartość zostanie nadpisana. ls -la /usr/bin >> ~/wynik jeśli plik wynik istniał to zawartość zostanie uzupełniona. 45 Przełączanie standardowego wyjścia błędów Do pliku można też kierować strumień diagnostyczny: 2> plik echo "Stderr jest skierowane do pliku error" ls -y 2> ~/error #błąd ls -y 2>> ~/error #błąd Polecenie ls jest użyte z błędną opcją -y, komunikat o błędzie trafi do pliku error. 46 23

Koniec Dziękuję za uwagę 47 24