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