Pracownia Komputerowa wykład III dr Magdalena Posiadała-Zezula http://www.fuw.edu.pl/~mposiada/pk16 1
Powłoki - rodzaje! W Linux ie mamy kilka powłok do wyboru:! sh : Bourne Shell, oryginalna powłoka systemu unix! csh : C shell, nowa składnia polecen, udogodnienia w pracy interakcyjnej! ksh : Korn shell, zgodnosc składniowa z powłoka Bourne a +m.innymi udogodnienia jak w powłoce csh! bash : Bourne Again Shell, połaczenie najlepszych cech csh i ksh! tcsh : udoskonalona wersja csh 2
Powłoki! Typ powłoki definiuje administrator systemu w pliku z hasłami! Obecnie każdy użytkownik w OKWF ma standardowo ustawiona powłokę bash (zmienna $SHELL)! Standardowo uruchamiane skrypty:! przy logowaniu: /etc/profile i./bash_profile! start powłoki:./bashrc 3
POWŁOKA BASH -Bourne Again Shell (1)! Bash to skrót od wyrazów Bourne Again Shell. Powłoka ta jest dostępna za darmo i jest domyślną powłoką systemu Red Hat Linux! Dokańczanie poleceń- Dzięki niej nie trzeba wpisywać pełnej nazwy programu (ścieżki do katalogu, pliku itp) lub znać jego dokładnej nazwy. Wystarczy, wpisać jego pierwszą literkę i wciśnąc klawisz TAB. 4
POWŁOKA BASH -Bourne Again Shell (2)! Historia poleceń - Bash zapamiętuje wydane przez użytkownika polecenia, dzięki temu za pomocą klawiszy kursora (góra - dół), można szybko przywołać polecenie, które zostało wcześniej wydane.! Lista wydanych przez użytkownika poleceń jest ładowana z pliku historii, który domyślnie nosi nazwę.bash_history.! Parametry nazwy pliku historii oraz ilości przechowywanych w nim ostatnio wydanych poleceń ustalają zmienne HISTFILE oraz HISTSIZE powłoki.! Aby obejrzeć na ekranie dostępne z historii polecenia wystarczy użyć polecenia:! history 5
Zmienne! Zmienne służą do określania konfiguracji powłoki i są one dostępne dla wszystkich procesów potomnych. Wszystkie dostępne zmienne można wylistować poleceniem: printenv more! Najbardziej użyteczne zmienne powłoki:! HOME określa pełną scieżkę katalogu domowego,! USER- określa nazwę zalogowanego użytkownika! PATH - ścieżka przeszukiwania,! PWD - określa nazwę bieżącego katalogu,! HOSTNAME - nazwa komputera,! Wszystkie zmienne tracą ważność po wylogowaniu się i aby były dostępne za każdym razem, trzeba je dodać do plików konfiguracyjnych bash`a. 6
Pisanie skryptów w Bash-u (1)! Wszystkie shelle oferują rodzaj języka skryptowego. Za jego pomocą można pisać różne rodzaje skryptów: od tych prostych, które ograniczają się do wykonania serii poleceń, do bardzo skomplikowanych, zawierających różne pętle, warunki itp.! Skrypty można pisać we wszelkiego rodzaju edytorach tekstu. Jest to zwykły plik tekstowy, ale zawierający w pierwszej linijce "#!/bin/ bash".! Kolejne programy wywołuje się przez wpisanie ich kolejno do tego pliku.! Powłoka zakłada, że każda linia to osobne polecenie! Komentarze zaczynaja się od znaku # 7
Pisanie skryptów w Bash-u (2)! Aby taki skrypt można było uruchomić, należy nadać mu atrybut wykonywalności, np. poleceniem! chmod u+x skrypt.sh! Tak przygotowany skrypt uruchamia się jak każdy inny program tzn. :!./skrypt.sh 8
Zmienne w skryptach (1)! W skryptach powłoki można definiować tzw. zmienne, czyli wartości przypisane do nazwy.! Zmienne definiuje się tak:! ZMIENNA=123! ZMIENNA="wartość tekstowa! Przypisanie do zmiennej wartości tekstowej tak jak powyżej będzie powodowało "rozwijanie" zmiennych. Oznacza to, że jeśli między cudzysłowy użytkownik wpisze zmienną w postaci $ZMIENNA1, to zmienna, do której chcemy to przypisać, będzie zawierała wartość zmiennej ZMIENNA1 9
Zmienne w skryptach (2)! Bash oferuje sporo pre-definiowanych zmiennych. Oto ich skrócona lista:! $0 - ścieżka do skryptu - dokładnie taka, z jaką wywołano ten skrypt.! $1, $2... - zmienne, które zawierają wartość kolejnych parametrów podanych do skryptu.! $# - liczba argumentów skryptu. 10
Pisanie skryptów- przykład 1 Utworzyć skrypt o nazwie przyklad1.sh: #!/bin/bash # (Tu jest komentarz) definuje w jakiej powłoce bedzie uruchamiany skrypt echo "Pierwszy program pwd! Zmienic prawa dostepu pliku prog.sh aby móc go wykonywać! Uruchomić w terminalu prog.sh ->./przyklad1.sh 11
Pisanie skryptów- przykład 2! #!/bin/bash echo "Witam. Twoj login to $USER" echo "Lista plików w bieżącym katalogu, $PWD" ls # wypisz listę plików 12
Pisanie skryptów- przykład 3 pętla for! #!/bin/sh! for (( i=1; $i <= 10; i++ )) ; do! echo " Iteracja nr: $i"! done 13
Pisanie skryptów- parametry! Odwoływanie się do argumentów z linii komend :! #!/bin/sh! echo nazwa skryptu to $0! echo pierwszy argument to $1! echo drugi argument to $2! echo siedemnasty argument to $17! echo ilość argumentów to $# 14
Pisanie skryptów- przykład 4 parametry! Kod skryptu skrypt.sh! #!/bin/sh! mkdir $1 - $1 to pierwszy parametr podany podczas uruchamiania skryptu zaraz po jego nazwie! mkdir $2! ls ltr! Uruchamiamy skrypt z parametrami wejściowymi!./skrypt nazwa_kat1 nazwa_kat2 15
Koniec 16