11 QLXYLHOVX6YG3PG7YUBHGSX2BK5E Nieznany

background image

235

W rozdziałach 9. i 10. przedstawiliśmy informacje dotyczące pracy
z linuksowym wierszem poleceń. Polega ona na wydawaniu pojedynczych
poleceń wykonywanych natychmiast po naciśnięciu klawisza Enter.
W tym rozdziale pójdziemy nieco dalej: pokażemy, w jaki sposób zlecać
systemowi wykonanie pewnych czynności w przyszłości oraz jak tworzyć
pliki wsadowe mogące zawierać większą liczbę poleceń. Takie pliki nazywane
są często skryptami powłoki, ponieważ ich składnia i język w nich używany
są wbudowane właśnie w powłokę. Podobnie sprawa wygląda w przypadku
plików wsadowych systemu MS-DOS – z tym, że skrypty powłoki mogą
mieć o wiele większe możliwości i łatwiej jest je tworzyć. Skrypty pozwalają
na korzystanie ze swego rodzaju języka makropoleceń, działających
w systemie operacyjnym.
Przedstawimy podstawowe wiadomości dotyczące zlecania systemowi
wykonania pewnych poleceń w przyszłości. Następnie pokażemy, w jaki
sposób tworzyć i uruchamiać nieskomplikowane skrypty powłoki.
Jeśli skrypty powłoki mają według Ciebie zbyt małe możliwości, możesz
wykorzystać jeden z wielu języków programowania dostarczanych wraz
z systemem Red Hat Linux. Omówię pokrótce możliwości języków
Awk, Perl, Python i Tcl.
Dla wielu użytkowników Linuksa bardzo ważny jest fakt, że rozprowadza się
go wraz z kodem źródłowym. Pokażę Wam świetny sposób na wykorzystanie
wolnego czasu: przeglądanie kodu źródłowego jądra systemu Linux!

Skrypty powłoki

i programowanie

11

Skrypty pow

łoki i

program

owanie

background image

Rozdział 11.

236

Planowanie zadań

Korzystając z polecenia at, możesz zlecić
systemowi wykonanie jakiegoś polecenia
o określonej godzinie. Jeśli chcesz,
aby polecenie wykonywane było cyklicznie,
możesz dodać je do pliku cron danego
użytkownika.

Aby przesłać wiadomość pocztą
elektroniczną za pomocą polecenia at

1.

W wierszu poleceń wpisz at i wyrażenie
określające czas (patrz ramka). Wpisz
na przykład at teatime + 5 minutes.

2.

teatime jest prawidłowym określeniem
czasu (oznacza godzinę szesnastą), więc
teatime + 5 minutes to po prostu 16.05.

3.

Wciśnij Enter. W nowym wierszu znak
zachęty powłoki zostanie zastąpiony przez
znak zachęty polecenia at, który ma postać
at> (rysunek 11.1). Każde prawidłowe
polecenie wpisane po tym znaku zachęty
zostanie wykonane o zadanej godzinie.

4.

Określ adresata i temat wiadomości, która
zostanie wysłana, na przykład
at> mail –s "Time to eat cake!"
harold@bearhome.com.

5.

Wciśnij Enter. W następnym wierszu znów
wyświetlony zostanie znak zachęty at>.

6.

Wprowadź tekst wiadomości – może on
zajmować dowolną liczbę wierszy.

Wyrażenia określające czas w poleceniu at

Czas można określić na wiele sposobów. Domyślnie przyjmowany jesz czas 24-godzinny.
Podawanie minut jest opcjonalne. Jeśli dodany zostanie przyrostek am lub pm, czas będzie
traktowany jako czas 12-godzinny. Jeśli użyte zostanie słowo kluczowe zulu, będzie
traktowany jako czas Greenwich (GMT), a nie zgodnie z obowiązującą strefą czasową.
Zamiast numerycznych określeń można również stosować kilka słów mających specjalne
znaczenie: midnight (północ), noon (południe), teatime (czas na herbatę) oraz now (teraz).
Słowo teatime oznacza godzinę 16.00, natomiast po słowie now trzeba podać czas, po jakim
polecenie ma zostać wykonane.
Oprócz wartości oznaczających godziny można również podawać, w którym miesiącu zadanie
ma się rozpocząć (za pomocą liczb od 1 do 12 lub pierwszych trzech liter angielskiej nazwy
miesiąca). Rok oznaczany jest liczbą czterocyfrową. Dni tygodnia podaje się za pomocą
pierwszych trzech liter nazwy angielskiej. Można również używać słów today (dziś) oraz
tomorrow (jutro).
Odstępy czasu pozwalają na podanie pory rozpoczęcia zadania w odniesieniu do czasu bieżącego.
Do ich określania służy znak +, po którym następuje liczba i jeden z wyrazów: minute, hour,
day, week lub year (można również używać liczby mnogiej, na przykład weeks). Słowo next
(następny) ma takie samo znaczenie, jak +1.
Oto kilka przykładów poprawnych określeń czasu (pierwsze dwa oznaczają to samo):
at 1412 January 9
at 2:12pm Jan 9
at 1 am Sat
at now + 5 minutes
at teatime next day

Planowanie zad

background image

Skrypty powłoki i programowanie

237

Rysunek 11.1. Polecenia wprowadzane po znaku
zachęty at> zostaną wykonane o zadanej godzinie.

Rysunek 11.2. Za pomocą polecenia at można
wysłać wiadomość pocztą elektroniczną czy
wykonać szereg poleceń.

Rysunek 11.3. Aby wyświetlić polecenia oczekujące
na wykonanie, wpisz atq.

7.

Po wprowadzeniu ostatniego wiersza
wiadomości wciśnij Enter, aby przejść
do nowego wiersza.

8.

Przytrzymaj klawisz Control i wciśnij D,
aby zakończyć polecenie. Wiadomość
zlecona za pomocą polecenia at zostanie
wysłana o 16.05 (rysunek 11.2).

Wskazówki

„

W powyższym przykładzie o zadanej porze
wykonywane było tylko jedno polecenie.
Nic nie stoi jednak na przeszkodzie, aby
takich poleceń było więcej – wystarczy
podać je kolejno po znaku zachęty at>.
Wszystkie podane polecenia zostaną
wykonane o określonej porze.

„

Zawartość pliku można przesłać pocztą
elektroniczną, korzystając z następującej
składni polecenia mail:
mail harold@bearhome.com <
~/nazwapliku

Aby anulować zlecenie programu at

1.

Wyświetl wszystkie polecenia oczekujące
na wykonanie wpisując atq.

2.

Wciśnij Enter. Wyświetlona zostanie lista
poleceń wchodzących w skład kolejki
danego użytkownika (rysunek 11.3).
Jeśli użytkownikiem jest root, wyświetlone
zostaną wszystkie zadania oczekujące
na wykonanie. Pierwsza kolumna zawiera
numer zadania, następna określa, kiedy
zadanie ma zostać wykonane.

3.

Aby usunąć zadanie, wpisz atrm i jego
numer, na przykład atrm 2.

4.

Wciśnij Enter.

5.

Aby sprawdzić, czy zadanie zostało
usunięte, ponownie wydaj polecenie atq
(rysunek 11.4).

Planowanie zad

background image

Rozdział 11.

238

Pliki cron

Pliki cron służą do tego, aby użytkownicy mieli
możliwość automatycznego uruchamiania
poleceń w określonych odstępach czasu.
Dla przykładu, można codziennie wysyłać
administratorowi wiadomość przypominającą
o konieczności wykonania kopii zapasowej
systemu, można również co tydzień uruchamiać
program sporządzający tygodniowe
sprawozdania.
Warto zgrupować wszystkie potrzebne polecenia
w pojedynczym skrypcie powłoki, zamiast
wprowadzać je z osobna do pliku cron.
Administrator systemu, czyli root, może
wykorzystać polecenie crontab, aby uzyskać
dostęp do plików cron wszystkich
użytkowników, co za chwilę wyjaśnię.
Włącznie z poleceniem crontab administrator
może zmieniać ustawienia programu cron
na trzy sposoby:

„

Korzystając z programu Linuxconf.

„

Bezpośrednio edytując plik cron.

„

Korzystając z polecenia crontab –e.

W kolejnych akapitach opiszemy wszystkie
te sposoby. Należy jednak pamiętać, że ze
względów bezpieczeństwa edycja plików cron
poszczególnych użytkowników może być
zabroniona. Jeśli chcesz zmodyfikować plik
cron, a nie jesteś administratorem systemu,
powinieneś skontaktować się
z administratorem.

Aby zlecić programowi cron wykonanie
polecenia za pomocą panelu sterowania
systemu Linux

1.

Zaloguj się jako root.

2.

Otwórz program Linuxconf.

3.

Przewiń listę znajdującą się w lewej części
okna i wybierz pozycję Configure
Superuser Scheduled Tasks
(rysunek 11.5).

Rysunek 11.4. Zadania mogą zostać usunięte
z kolejki za pomocą polecenia atrm.

Rysunek 11.5. Za pomocą panelu sterowania
systemu Linux można zdefiniować zadania
wykonywane okresowo dla użytkownika root.

Planowanie zad

background image

Skrypty powłoki i programowanie

239

Rysunek 11.6. Zakładka Schedule Jobs Definition
pozwala dodawać zadania do pliku gron bez
konieczności jego bezpośredniej edycji.

Rysunek 11.7. Pliki cron, zapisane w katalogu
/var/spool/cron, można również edytować
bezpośrednio.

Czas według programu cron

Liczby znajdujące się przed każdym
z poleceń w pliku cron określają porę jego
wykonania. Podawane są w pięciu
kolumnach rozdzielonych przecinkami;
myślnik oznacza zakres, natomiast gwiazdka
– wszystkie dostępne wartości (jeśli
na przykład w polu określającym dzień
miesiąca znajdzie się gwiazdka, polecenie
będzie wykonywane codziennie). Oto lista
poszczególnych pól i dostępnych w nich
wartości:
Minuty

0-59

Godziny

0-23

Dni miesiąca 1-31
Miesiące

1-12

Dni tygodnia 0-6, 0 = niedziela

4.

Kliknij przycisk Add na zakładce
Schedule Jobs for Account Root. Otwarte
zostanie okno dialogowe Schedule Job
Definition
(rysunek 11.6).

5.

Zaznacz opcję This Entry is Active.

6.

W polu Command wprowadź polecenie,
które ma zostać wykonane. Polecenie
przedstawione na rysunku 11.6 spowoduje
wysłanie wiadomości pocztą elektroniczną:
mail –s "Czas na ciacho!"
harold@bearhome.com

7.

W polach opisanych etykietą Time
wprowadź dane określające porę wykonania
zadania (szczegóły znajdziesz w ramce
„Czas według programu cron”).
Ustawienia przedstawione na ilustracji
11.6, czyli 0-59/2 w polu minut oraz
gwiazdki we wszystkich innych polach,
spowodują wysyłanie dwóch wiadomości
w ciągu minuty.

8.

Kliknij na Accept.

Wskazówka

„

Zlecanie programowi cron wysyłania
poczty może być traktowane jako nadużycie.
Dobrze się zastanów, zanim uznasz,
że poczta faktycznie powinna być wysyłana
automatycznie.

Aby bezpośrednio edytować plik cron

Pliki cron poszczególnych użytkowników są
zlokalizowane w katalogu /var/spool/cron.
Można otworzyć taki plik oraz dodać,
zmodyfikować czy usunąć odpowiednie
zadania za pomocą ulubionego edytora tekstów
(rysunek 11.7) – przedstawiony tu plik cron
został utworzony za pomocą programu
Linuxconf). Możesz również tworzyć pliki
cron dla poszczególnych użytkowników
– nazwa takiego pliku musi być taka sama jak
identyfikator użytkownika, a sam plik musi
znajdować się w katalogu /var/spool/cron.

Planowanie zad

background image

Rozdział 11.

240

Aby dodać polecenie programu cron za
pomocą polecenia crontab

1.

W wierszu poleceń wpisz crontab –e. Plik
cron odpowiadający Twojemu
identyfikatorowi użytkownika zostanie
otwarty za pomocą domyślnego edytora
tekstów (rysunek 11.8 – tu przedstawiony
jest edytor vi).

2.

Wykorzystując odpowiednie polecenia
edytora tekstów, możesz dodawać,
modyfikować czy usuwać poszczególne
zadania (więcej informacji o edytorach
pracujących w trybie tekstowym znajdziesz
w rozdziale 9.).

Wskazówki

„

Jeśli plik cron nie istnieje, polecenie
crontab –e spowoduje jego utworzenie.

„

Użytkownik root może zastosować
polecenie crontab –e –u do edycji pliku
cron dowolnego użytkownika, na przykład
tak:
crontab –e –u hdavis

„

Wiadomości przesyłane pocztą kumulują
się bardzo szybko (rysunek 11.9).

Rysunek 11.8. Polecenie crontab –e otwiera plik
cron użytkownika w domyślnym edytorze tekstów.

Rysunek 11.9.Mam już dość ciastek!

Planowanie zad

background image

Skrypty powłoki i programowanie

241

Rysunek 11.10. Skrypty powłoki można tworzyć
za pomocą dowolnego edytora tekstów (na rysunku
edytor Gnotepad+).

Rysunek 11.11. Skrypt można uruchomić, podając
jego nazwę jako argument polecenia uruchamiającego
powłokę.

Podstawowe informacje
o tworzeniu skryptów powłoki

Tworzenie skryptu powłoki sprowadza się
do utworzenia pliku tekstowego zawierającego
odpowiednie polecenia i zapisania go.
Taki skrypt może zostać uruchomiony przez
przekazanie jego nazwy jako argumentu
polecenia uruchamiającego powłokę lub też
jako odrębny plik wykonywalny. Zwykle
skrypty są właśnie plikami wykonywalnymi.

Aby utworzyć skrypt powłoki

1.

Uruchom edytor tekstów, na przykład
Gnotepad+ (rysunek 11.10).

2.

W pierwszym wierszu skryptu wprowadź
tekst #!/bin/bash. Powinien on zawierać
pełną ścieżkę dostępu do programu, który
będzie interpretował skrypt.

3.

W następnym wierszu skryptu wprowadź
znak # (oznaczający początek komentarza)
i krótką informację dotyczącą działania
skryptu (jest to powszechnie przyjęta
konwencja): # Malutki skrypt.

4.

Wprowadź polecenia będące właściwą
treścią skryptu (w tym przykładzie będzie
to polecenie wyświetlające tekst i wydające
krótki dźwięk): echo –e "Ring that bell
\a"

5.

Zapisz plik na przykład pod nazwą myscript.

Aby uruchomić skrypt
za pomocą powłoki

W wierszu poleceń wpisz nazwę powłoki,
a po niej nazwę pliku zawierającego skrypt:
bash myscript
Tekst zostanie wyświetlony na ekranie,
a terminal wyda krótki dźwięk
(rysunek 11.11).

Aby skrypt był wykonywalny

Podstawy tworzenia skryptów pow

łoki

background image

Rozdział 11.

242

1.

Zmień prawa dostępu do pliku zawierającego
skrypt, tak aby był on wykonywalny,
korzystając z polecenia chmod zgodnie ze
wskazówkami zawartymi w rozdziale 10.,
na przykład
chmod u+x myscript.

2.

Upewnij się, że katalog, w którym zapisany
jest skrypt, wchodzi w skład ścieżki
przeszukiwania, porównując dane zwracane
przez polecenia pwd i echo $PATH. Jeśli
nie, dodaj go, postępując zgodnie
z informacjami z rozdziału 9.

3.

W wierszu poleceń wpisz nazwę skryptu,
myscript. Tekst zostanie wyświetlony
na ekranie, a terminal wyda krótki dźwięk.

Wskazówki

„

Możesz wykorzystać zawartość historii
sesji opisanej w rozdziale 9., aby zamienić
n ostatnio wydanych poleceń w skrypt,
po prostu zapisując n ostatnich wierszy
pliku historii w nowym pliku, na przykład
wydając polecenie history 10 > myscript.
Takie rozwiązanie pozwala na łatwe
rejestrowanie makropoleceń.

„

Jeśli plik skryptu nie jest plikiem
wykonywalnym, możesz go uruchomić
używając operatora . (kropka),
na przykład . myscript.

background image

Skrypty powłoki i programowanie

243

Rysunek 11.12. W skryptach powłoki można
korzystać z wartości parametrów pozycyjnych.

Składnia skryptów powłoki

Zmienne używane w skryptach powłoki nie
mają typów, co oznacza, że nie trzeba określać,
czy zmienna zawierać będzie tekst czy
wartości liczbowe (lub cokolwiek innego).
Zmienne deklaruje się równocześnie
z przypisywaniem im wartości za pomocą
znaku równości, na przykład
licznik = 0
nazw = "Harold Davis"
Jeśli w tekście nie znajdują się spacje,
nie trzeba otaczać go cudzysłowem.
Symbol $ używany jest do przypisywania
wartości jednej zmiennej jakiejś innej
zmiennej, na przykład
licznik = $mojazm

Korzystanie z argumentów podawanych w
wierszu poleceń

Argumenty, z których chcesz korzystać
w skrypcie, można przekazać do niego
za pomocą wiersza poleceń. Pierwszy
z argumentów w skrypcie dostępny jest
pod nazwą $1, drugi – $2 i tak dalej.
Poniżej przedstawiamy skrypt ilustrujący
to zagadnienie:
#Wyswietlanie argumentow z wiersza
polecen
if [ $# –eq 0 ]
then
echo "Please provide a command line
name!"
else
echo "Hello " $1
fi
Jeśli zapiszesz taki skrypt i uruchomisz go bez
argumentów, wyświetli on tekst „Please
provide a command line name!”. W
przeciwnym przypadku wyświetlony zostanie
identyfikator podany jako argument
(rysunek 11.12).

Sk

ładnia skryptów pow

łoki

background image

Rozdział 11.

244

Drobna uwaga: fi na końcu skryptu to nie

literówka – jest to słowo if (jeśli) pisane

od końca, ponieważ oznacza ono koniec

instrukcji if. Podobnie słowo esac oznacza

koniec instrukcji case.
W skrypcie występuje również zmienna

$# – jest to zmienna wewnętrzna, oznaczająca

liczbę parametrów podanych w wierszu poleceń

(patrz tabela 11.1). Operator –eq służy

do porównania wartości zmiennej $# z zerem

(patrz tabela 11.2). Zmienna $1 zawiera

wartość pierwszego argumentu przekazanego

w wierszu poleceń.

Aby pozwolić na wprowadzenie danych
przez użytkownika

1.

Uruchom edytor tekstów.

2.

Wpisz następujący skrypt:

#! /bin/bash

# Wprowadzanie danych przez

uzytkownika

echo "Enter your name:"

read name

echo "Is it time for tea, $name?"

3.

Zapisz plik pod nazwą yrname.

4.

W wierszu poleceń przypisz plikowi prawo

wykonywalności:

chmod +x yrname

5.

Uruchom skrypt, wpisując yrname. Skrypt

poprosi o podanie imienia, a następnie

wyświetli je jako część komunikatu

(rysunek 11.13).

Wskazówki

„

Umieszczając polecenie read
w nieskończonych pętlach, można tworzyć
struktury menu i aplikacje obsługiwane
za pomocą menu.

„

Jeśli chcesz tworzyć bardziej skomplikowane
programy, powinieneś zamiast ze skryptów
powłoki skorzystać z jakiegoś innego
języka skryptowego, na przykład Perla,
ponieważ w bardziej rozbudowanych
skryptach powłoki trudno jest szukać
ewentualnych błędów.

Rysunek 11.13. Aby pozwolić użytkownikowi
na wprowadzanie danych do skryptu, skorzystaj
z polecenia read.

Instrukcje iteracyjne

Tabela 11.2. Operatory porównania.

Operator

Znaczenie

=

równe (łańcuchy znaków)

!=

nierówne (łańcuchy znaków)

-eq

równe (liczby)

-ge

większe lub równe (liczby)

-le

mniejsze lub równe (liczby)

-ne

różne (liczby)

-gt

większe niż (liczby)

-lt

mniejsze niż (liczby)

Tabela 11.1. Zmienne wewnętrzne powłoki

Nazwa
zmiennej

Znaczenie

$#

Liczba argumentów przekazanych
w wierszu poleceń

$0

Nazwa programu powłoki

$*

Pojedynczy tekst utworzony ze wszystkich
argumentów przekazanych w wierszu
poleceń

Sk

ładnia skryptów pow

łoki

background image

Skrypty powłoki i programowanie

245

i warunkowe

Instrukcje iteracyjne i warunkowe to między
innymi:

„

instrukcje for…do…done,

„

instrukcje while…do…done,

„

instrukcje until…do…done,

„

instrukcje select element in
listaelementow…do…done,

„

instrukcje if…elif…else…fi,

„

instrukcje case.

Dokładniejsze informacje o składni tych
poleceń znajdziesz w dokumentacji powłoki
bash (patrz punkt „Aby uzyskać dokumentację
dotyczącą polecenia”).
Poniżej przedstawiamy skrypt, który
wykorzystuje dane wprowadzane przez
użytkownika oraz nieskończoną pętlę,
aby obliczyć sumę dowolnej ilości liczb.

#! /bin/bash
# Program interaktywny
sum=0
while :
do
echo –n "Add another number (y/n): "
read dalej
if [ $dalej = n ] ; then
break
fi
if [ $dalej != y ] ; then
echo '"y" or "n" please!';
continue
fi
echo –n "Enter a number to add to the sum: "
read nowy
sum=$(($sum + $nowy))
echo "Sum so far is $sum"
done
echo –e "Your sum is $sum"
echo "Bye"

background image

Rozdział 11.

246

Aby uruchomić skrypt sumujący liczby

1.

Zapisz skrypt do pliku o nazwie sum.

2.

Przypisz mu prawo do wykonywania:
chmod +x sum.

3.

W wierszu poleceń wpisz sum.

4.

Wciśnij Enter. Skrypt zostanie
uruchomiony i będzie prosił
o wprowadzanie kolejnych liczb
(rysunek 11.14).

Wskazówki

„

Dwukropek po instrukcji while w poleceniu
while : jest argumentem, który ma zawsze
wartość prawdy logicznej, co oznacza, że
pętla będzie wykonywana bez końca. Pętla
jest przerywana wewnątrz instrukcji if
w przypadku, gdy użytkownik zdecyduje,
że nie chce wprowadzać dalszych liczb
i wpisze n.

„

Skrypt nie sprawdza poprawności
wprowadzanych danych. Jeśli wprowadzone
zostanie cokolwiek innego niż liczba,
skrypt zakończy działanie z komunikatem
o błędzie składni (syntax error).

Aby uzyskać dokumentację
dotyczącą polecenia

1.

Kliknij na ikonę ze znakiem zapytania
wchodzącą w skład panelu środowiska
Gnome. Uruchomiony zostanie program
Przeglądarka pomocy GNOME ze stroną
zawierającą spis treści (rysunek 11.15).

2.

Kliknij na odnośnik Info Pages.
Wyświetlony zostanie indeks stron pomocy
systemu Info (rysunek 11.16).

Rysunek 11.14. Programy powłoki można tworzyć
za pomocą pętli zawierających instrukcje
wymagające interakcji z użytkownikiem.

Rysunek 11.15. Gnome Help Index, czyli skorowidz
pomocy systemu Gnome jest punktem wyjścia przy
szukaniu dokumentacji o składni poleceń.

Rysunek 11.16. Spis stron systemu pomocy Info
łączy dokumentację systemową i środowiska Gnome.

Sk

ładnia skryptów pow

łoki

background image

Skrypty powłoki i programowanie

247

Rysunek 11.17. Dokumentacja dotycząca powłoki
bash jest dostępna po wybraniu odnośnika bash.

Rysunek 11.18. Odnośniki w dokumentacji powłoki
bash pozwalają na przejście do dokładniejszych
informacji o programowaniu w języku powłoki.

Rysunek 11.19. Lista słów zastrzeżonych powłoki
pozwala łatwo dotrzeć do informacji o składni
poszczególnych instrukcji.

3.

Kliknij na odnośnik bash, aby wyświetlić
dokumentację dotyczącą powłoki bash.
Otwarta zostanie strona pod tytułem Bash
Features
(rysunek 11.17).

4.

Przewiń zawartość strony, aż dojdziesz
do punktu Contents (rysunek 11.18).

5.

Kliknij na odnośnik Reserved Word
Index
. Wyświetlona zostanie lista słów
zastrzeżonych powłoki (rysunek 11.19).

6.

Kliknij na odnośnik do którejś z instrukcji
– na przykład instrukcji if (rysunek 11.20);
wówczas wyświetlone zostaną informacje
dotyczące jej składni.

Rysunek 11.20. Instrukcje opisane są szczegółowo,
wraz ze związanymi z nimi konstrukcjami.

Sk

ładnia skryptów pow

łoki

background image

Rozdział 11.

248

Język Awk

Język GNU awk – lub gawk – jest wersją
języka służącego do przetwarzania tekstów.
Jego autorami byli Alfred V. Aho, Peter J.
Weinberger oraz Brian W. Kernighan (nazwa
awk pochodzi od pierwszych liter ich nazwisk).
Awk najlepiej nadaje się do przetwarzania
plików tekstowych, ponieważ „myśli” on
w kategoriach pól i rekordów, którymi zwykle
są wyrazy i wiersze takich plików. Z tego
powodu niezbyt dobrze nadaje się on do
przetwarzania plików binarnych. Typowym
zastosowaniem tego języka jest tworzenie
sformatowanych raportów na podstawie
dostarczonych danych.
Mnóstwo informacji na temat programowania
w tym języku znajdziesz w katalogu
/usr/doc/gawk-3.0.6.
Gawk może być używany bezpośrednio
z wiersza poleceń; w takim przypadku
polecenia języka gawk należy otoczyć
pojedynczym cudzysłowem, aby powłoka nie
próbowała ich interpretować. Programy
w języku Gawk dłuższe niż jedno czy dwa
polecenia należy zapisywać w plikach.
W języku Gawk zmienna NF jest zmienną
predefiniowaną zawierającą liczbę pól każdego
z rekordów (czyli wyrazów w wierszu).
Zmienna $0 zawiera cały rekord (wiersz),
$1 – pierwsze pole wiersza (czyli pierwszy
wyraz), $2 – drugie pole wiersza (czyli drugi
wyraz) itd.

Aby wypisać liczbę wyrazów
znajdujących się w każdym wierszu pliku
tekstowego

1.

Utwórz plik tekstowy (rysunek 11.21).

2.

Zapisz plik pod nazwą barn.txt.

3.

W wierszu poleceń wpisz

cat barn.txt | gawk '{print NF ": " $0}'

Wykorzystaliśmy tu polecenie cat i

mechanizm potoków, za pomocą którego

przekazaliśmy plik tekstowy na wejście

programu gawk.

4.

Wciśnij Enter. Wyświetlona zostanie liczba
wyrazów w każdym z wierszy wraz z ich
tekstem (rysunek 11.22).

Wskazówka

„

Skrypt w języku gawk ma w tym
przypadku postać {print NF ”: ” $0}.

Rysunek 11.21. Język Gawk najlepiej nadaje się
do przetwarzania plików tekstowych o określonej
strukturze.

Rysunek 11.22. Gawk może zostać uruchomiony
z wiersza poleceń lub po zapisaniu odpowiednich
poleceń do pliku; w tym przypadku wyświetla on
liczbę wyrazów wchodzących w skład każdego
wiersza pliku.

zyk Awk

background image

Skrypty powłoki i programowanie

249

Język Perl

Perl jest językiem wysokiego poziomu
opartym na języku C, językach skryptowych
takich jak awk, oraz językach skryptowych
powłoki. Choć dostępne są kompilatory
programów w nim napisanych, programy
zwykle kompilowane są tuż przed ich
uruchomieniem. Perl jest bardzo przenośny –
program w tym języku może być bez
większych zmian uruchomiony w prawie
każdym systemie operacyjnym.
Perl znakomicie radzi sobie z obsługą
procesów, plików i tekstu. Jest
wykorzystywany do obsługi danych
wprowadzanych przez użytkowników
na stronach WWW za pomocą mechanizmów
CGI. Warto go poznać choćby ze względu
na popularność na stronach WWW.
Poza tym Perl jest często używany do
automatyzacji zadań administracyjnych,
ponieważ posiada on dostęp do powłoki.
Zmienne w języku Perl nie posiadają typów,
ale w języku tym występuje kilka ich
rodzajów:

„

Zmienne skalarne to liczby lub tekst,
w zależności od kontekstu.

„

Tablice mogą zawierać elementy dostępne
za pomocą indeksowania.

„

Tablice asocjacyjne mogą zawierać
elementy dostępne za pośrednictwem
kluczy.

Więcej informacji na temat języka Perl
znajdziesz w książce Perl and CGI: Visual
QuickStart Guide
, wydanej przez Peachpit
Press. Zajrzyj też na stronę
http://www.perl.com poświęconą w całości
temu językowi.

zyk Perl

background image

Rozdział 11.

250

Aby wyświetlić numer identyfikacyjny
użytkownika za pomocą skryptu w języku
Perl

1.

W pliku tekstowym wpisz
#! /usr/bin/perl
print "Hello, your user ID is $< \n"
print "Have a nice day!\n"

2.

Zapisz plik pod nazwą testperl
(rysunek 11.23).

3.

W wierszu poleceń przypisz plikowi prawo
do wykonywania:
chmod +x testperl

4.

Uruchom skrypt, wpisując
testperl. Wyświetlony zostanie Twój
numer identyfikacyjny (numerem
użytkownika root jest 0, jak widać
na rysunku 11.24).

Wskazówka

„

W języku Perl dostępny jest spory zestaw
zmiennych wewnętrznych, na przykład
zmienna $< zawiera numer identyfikacyjny
użytkownika, a zmienna $$ – numer procesu.

Rysunek 11.23. Jeśli pierwszy wiersz skryptu ma
postać #!/usr/bin/perl, jego pozostała część będzie
przetwarzana przez program Perl.

Rysunek 11.24. W języku Perl dostępnych jest wiele
zmiennych wewnętrznych, na przykład zmienna $<
zawiera numer identyfikacyjny użytkownika.

Python i Tcl

Wraz z systemem Red Hat Linux rozprowadzanych jest jeszcze wiele innych języków
programowania i bibliotek.
Dwa bardziej interesujące to Python i Tcl.
Python to język obiektowy, w którym można pracować interaktywnie lub interpretując kod
zapisany w modułach. Rozprowadzany jest na licencji public domain. Jego autor to Guido van
Rossum, a nazwa pochodzi od latającego cyrku Monty Pythona. Python obsługuje moduły,
klasy, wyjątki i dynamiczne typy danych. Programy w tym języku mogą korzystać z interfejsu
graficznego, na przykład ze środowiska Gnome. Dokumentację znajdziesz w katalogu
/usr/doc/python-docs-1.5.2
.
Tcl, którego nazwa jest skrótem od angielskich słów tool control language, jest prostym
językiem skryptowym, przeznaczonym głównie do osadzania w innych językach. Inaczej
mówiąc, Tcl, napisany pierwotnie przez Johna Osterhouta, ma za zadanie spajać języki
programowania i biblioteki o większych możliwościach. Tk to zestaw dodatków, które
pozwalają na korzystanie z języka Tcl w środowisku graficznym. Pełną dokumentację
znajdziesz na stronie http://www.scriptics.com.

zyk Perl

background image

Skrypty powłoki i programowanie

251

Rysunek 11.25. Można przejrzeć zawartość pliku
makefile używanego do kompilacji jądra systemu.

Rysunek 11.26. Kod źródłowy modułów jądra
zawiera wiele komentarzy i dobrze się go czyta.

Poznawanie kodu źródłowego
systemu Linux

Jeśli chcesz dowiedzieć się, w jaki sposób
działa system Linux – nic nie stoi
na przeszkodzie!
Kod źródłowy systemu Linux znajduje się
w podkatalogach katalogu /usr/src/linux. Kod
źródłowy jądra systemu znajduje się
w katalogu /usr/src/linux/kernel.
Plik makefile jest używany do ustalania opcji
kompilacji oraz do poinformowania kompilatora,
które moduły i biblioteki należy połączyć.

Aby obejrzeć plik makefile służący do
kompilacji jądra

Za pomocą edytora tekstów otwórz plik
o nazwie makefile znajdujący się w katalogu
/usr/src/linux/kernel (rysunek 11.25).

Wskazówka

„

Przeglądając zawartość pliku makefile
możesz sprawdzić, które moduły kodu
wchodzą w skład jądra.

Głównym plikiem kodu źródłowego jądra jest
plik sched.c. Jeśli otworzysz go za pomocą
edytora tekstów, zobaczysz, że zaczyna się on
od informacji o prawach autorskich Linusa
Torvaldsa oraz o innych współautorach tego
pliku (rysunek 11.26).
Jeśli przejrzysz kod zapisany w tym pliku,
zorientujesz się, że dotyczy on zarządzania
procesami. Kod zawiera wiele komentarzy,
co bardzo ułatwia jego czytanie.

Kod

źród
łowy system

u Linux

background image

Rozdział 11.

252

Podsumowanie

W tym rozdziale nauczyłeś się:

„

Planować wykonanie zadania za pomocą
polecenia at.

„

Wysyłać wiadomości pocztą elektroniczną
za pomocą polecenia at.

„

Anulować zaplanowane zadania.

„

Konfigurować program cron
dla użytkownika root za pomocą panelu
sterowania.

„

Tworzyć skrypty powłoki.

„

Uruchamiać skrypty powłoki.

„

Przypisywać skryptom prawo
do wykonywania.

„

Pobierać od użytkownika dane ze skryptu.

„

Posługiwać się dokumentacją poleceń
powłoki bash.

„

Pisać proste skrypty w języku awk.

„

Tworzyć proste skrypty w języku Perl.

„

Znajdować materiały do nauki języków
Python i Tcl.

„

Przeglądać kod źródłowy jądra
systemu Linux.

Podsum

owanie


Wyszukiwarka

Podobne podstrony:
HIGIENA, CWICZENIE 7, 13 11 201 Nieznany
11 XQIKTJQ67D33AAWEGTHFTM5N7AXF Nieznany (2)
Promocja praca domowa 12 11 15 Nieznany
Materialy do Wykladu 22 11 13 i Nieznany
Laboratorium 11 5 4 Testowanie Nieznany
4 Sieci komputerowe 27 04 11 05 Nieznany
Historia?ministracji$ 11 20 Nieznany
Prawo konstytucyjne 4 11 2010 i Nieznany
12 rozdzial 11 c6lubhaczn3mh474 Nieznany
11 rozdzial 11 RFP26NVOB57TOXLU Nieznany
coreldraw graphics suite 11 pl Nieznany
hipotezy parametryczne 25 11 id Nieznany
Kinezyterapia Cwiczenia 11 id 2 Nieznany
Historia?ministracji 11 20 Nieznany
a02 kinematyka pm (01 11) TFP5K Nieznany
11 BTFMPTHXMSFT743XNJL6MSBYD3DG Nieznany (2)
12 rozdzial 11 pq6in2hf23wyel6j Nieznany (2)
NetAcademy MichalDudwal27 11 12 Nieznany

więcej podobnych podstron