11(2), Informacje dot. kompa


0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic


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.

0x08 graphic
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!

0x08 graphic
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.

  1. 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.

  1. 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.

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

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

0x08 graphic

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

0x08 graphic
0x01 graphic

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

0x01 graphic

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

0x01 graphic

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

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

  1. 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).

0x08 graphic
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).

0x01 graphic

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

0x01 graphic

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

0x08 graphic
0x08 graphic
0x01 graphic

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

0x01 graphic

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

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

  1. Zaznacz opcję This Entry is Active.

  2. 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

  3. 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.

  4. 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.

0x08 graphic
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).

0x01 graphic

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

0x01 graphic

Rysunek 11.9.Mam już dość ciastek!

0x08 graphic
0x01 graphic

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

0x01 graphic

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).

0x08 graphic
Aby skrypt był wykonywalny

  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.

0x08 graphic
0x01 graphic

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).

0x08 graphic
0x08 graphic
0x08 graphic
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.

0x01 graphic

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

0x08 graphic

Instrukcje iteracyjne 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"

0x08 graphic
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).

0x01 graphic

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

0x01 graphic

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

0x01 graphic

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

0x08 graphic
0x01 graphic

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

0x01 graphic

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.

0x01 graphic

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

  1. 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).

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

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

  4. 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.



0x01 graphic

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

0x08 graphic
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).

  1. Zapisz plik pod nazwą barn.txt.

  1. 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.

  2. 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}.

0x01 graphic

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

0x01 graphic

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.

0x08 graphic

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.

0x08 graphic
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"
    pr
    int "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.

0x01 graphic

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

0x01 graphic

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


0x08 graphic
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.

0x08 graphic
0x01 graphic

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

0x01 graphic

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.

0x08 graphic
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.

Rozdział 11.

252

251

Skrypty powłoki i programowanie

11

Skrypty powłoki i programowanie

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ń

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)

Skrypty powłoki i programowanie

Planowanie zadań

Planowanie zadań

Planowanie zadań

Planowanie zadań

Planowanie zadań

Podstawy tworzenia skryptów powłoki

Podstawy tworzenia skryptów powłoki

Składnia skryptów powłoki

Składnia skryptów powłoki

Składnia skryptów powłoki

Składnia skryptów powłoki

Składnia skryptów powłoki

Język Awk

Język Perl

Język Perl

Kod źródłowy systemu Linux

Podsumowanie



Wyszukiwarka

Podobne podstrony:
11(1), Informacje dot. kompa
R04-05(2), Informacje dot. kompa
06(1), Informacje dot. kompa
r18-05(1), Informacje dot. kompa
r12-04(1), Informacje dot. kompa
r03-04(1), Informacje dot. kompa
r08-02(1), Informacje dot. kompa
01(1), Informacje dot. kompa
r04-03(1), Informacje dot. kompa
R15-05(2), Informacje dot. kompa
15(1), Informacje dot. kompa

więcej podobnych podstron