Laboratorium czwarte Skrypty powłoki - ciąg dalszy
Transkrypt
Laboratorium czwarte Skrypty powłoki - ciąg dalszy
Laboratorium czwarte Skrypty powłoki - ciąg dalszy Wojciech Penar 21 kwietnia 2012 Cel Przyswojenie podstaw pisania skryptów powłoki bash. Wprowadzenie Dzisiejsze ćwiczenia są kontynuacją poprzednich zajęć. Zadania podzielone są na łatwiejsze (za 1 punkt) i trudniejsze (za 3 punkty), w celu zaliczenia zajęć należy “uzbierać” minimum 4 punkty. Zwracam uwagę na formatowanie treści skryptu (wiersze powinny być krótsze niż 80 znaków), umieszczenie w komentarzu informacji o autorach oraz kontrolę błędów. Skrypty powinny posiadać opcję pozwalającą wyświetlić pomoc dotyczącą sposobu użycia, a w razie podania niewłaściwych parametrów – informować o tym fakcie. Przy wykonywaniu zadań przydatne mogą być materiały dodatkowe z sekcji 2. 1 Ćwiczenia do wykonania 1.1 Za 1 punkt 1. Wczytać nazwę pliku (read <zmienna>), a następnie wypisać jedną z odpowiedzi: • plik nie istnieje • plik istnieje i jest katalogiem • plik istnieje i jest zwykłym plikiem • plik istnieje i jest plikiem specjalnym 2. Wczytać nazwę pliku, a następnie wypisać jego zawartość na standardowym wyjściu. Przed wykonaniem operacji sprawdzić: • czy plik istnieje • czy plik jest plikiem zwykłym • czy plik jest katalogiem • czy plik można czytać 3. Wczytać nazwę pliku, a następnie usunąć podany plik. Przed wykonaniem operacji sprawdzić: • czy plik istnieje • czy plik jest plikiem zwykłym • czy plik jest katalogiem 4. Wczytać nazwę katalogu do zmiennej D oraz nazwę pliku do zmiennej F, a następnie sprawdzić czy w katalogu D istnieje plik F. Sprawdzić czy: 1 • istnieje katalog D • katalog D daje się czytać • istnieje plik F w katalogu D Zakończyć skrypt poleceniem exit zwracając kod wyjścia: 0 - odpowiedź pozytywna, 1 - odpowiedź negatywna. 5. Wczytać nazwę pliku a następnie wypisać uprawnienia do tego pliku w postaci 4 znaków w formacie: [d lub -][r lub -][w lub -][x lub -]. 1.2 Za 3 punkty 1. Polecenie read X Y < dane.txt powoduje odczyt wartości dwóch zmiennych z pierwszej linii pliku dane.txt. Jeżeli linia zawiera więcej niż dwa słowa, to pierwsze z nich trafi do zmiennej X, pozostałe słowa do zmiennej Y. W przypadku pustej linii lub linii zawierającej tylko jedno słowo zmienna Y po wykonaniu polecenia będzie miała wartość napisu pustego. Wszystkie linie pliku można odczytać za pomocą plecenia read umieszczając je w potoku z pętlą: cat plik | while read X Y do ... done Plik dane zawiera w każdej linii zero, jedną lub dwie liczby. Taki plik łatwiej można by przetwarzać jeśli zawierałby w każdej linii dwie liczby. Napisz skrypt, który wygeneruje plik wynik zawierający takie same liczby, w którym dopisane zostaną brakujące liczby 0 oraz pominięte linie puste. 2. Każda linia pliku dane zawiera dwie liczby całkowite. Przetwórz ten plik w plik wynik, w którym liczby te zapisane będą w kolejności nierosnącej (jedna liczba w każdej linii). 3. Polecenie shift wykonane w skrypcie powłoki wykonuje tzw. przesunięcie argumentów. W wyniku wykonania polecenia pierwszy argument skryptu $1 jest bezpowrotnie tracony, dotychczasowy argument $2 przypisywany jest do zmiennej $1, dotychczasowy argument $3 przypisywany jest do zmiennej $2, itd. Ogólnie: argument skryptu $(n+1) jest przesuwany do zmiennej $n. W wyniku wykonania polecenia shift zmniejszana jest również o 1 wartość zmiennej specjalnej $# (ilość argumentów skryptu) - tylko wówczas, gdy jej wartość jest większa od 0. Napisz skrypt powłoki, który uruchomiony z pewną ilością argumentów, które są liczbami całkowitymi wypisze na standardowe wyjście ich sumę. 2 2.1 Materiały dodatkowe Przydatne narzędzia sh-utils pakiet podstawowych narzędzi dla powłoki, posiada bogatą dokumentację man (na początek man sh-utils) textutils przydatnych narzędzi operujących na tekście, również posiada dokumentację w postaci podręcznika 2.2 Przydatne materiały pomocnicze Po polsku http://materialy.adelanto.pl/files/Materialy0.pdf “ściąga” do zajęć man bash obszerna i wyczerpująca dokumentacja dostępna w systemie http://www.dief.republika.pl/main.html kurs autorstwa Sołtysa. 2 Po angielsku http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html podstawy pisania skryptów powłoki http://tldp.org/guides.html szczególnie polecam Bash Guide for Beginners oraz Advanced Bash-Scripting Guide 3 Dla ciekawych świata Poza skryptami w języku powłoki, można korzystać także z wielu języków skryptowych. Najbardziej popularne to: • perl • python • ruby • awk • php Wykonaj zadania z drugiej grupy z użyciem wybranego narzędzia. 3