UNIXscript.pdf

(22 KB) Pobierz
86714730 UNPDF
1
Przypomnienie
Podstawowe katalogi i ich funkcja
/bin - tu zapisywane s a wszystkie podstawowe pliki bez których niemozliwy jest start i póz-
niejsza praca systemu
/boot - zawiera j adro systemu oraz pliki niezbedne do poprawnego uruchomienia i pracy sys-
temu
/dev - zgodnie z zaimplementowan a w systemach unixowych koncepcj a urz adzen systemo-
wych katalog ten zawiera pliki reprezentuj ace poszczególne komponenty sprzetowe na-
szej maszyny
/etc - tu s a zapisywane pliki konguracyjne wszystkich zainstalowanych w systemie progra-
mów
/home - tu tworzone s a katalogi domowe uzytkowników. Katalog ten powinien znajdowac sie
na innej partycji.
/lib - gromadzi biblioteki współdzielone przez zainstalowane w systemie aplikacje
/lost+found - tu zapisywane s a pliki i katalogi tworzone podczas naprawiania systemu plików
/mnt - autorzy systemu proponuj a własnie tu podmontowywac zewnetrzne systemy plików
/omt - odpowiednik Program Files w MS Windows
/proc - podczas pracy system tworzy tu pliki umozliwiaj ace kontrole jego działania
/root - katalog osobisty superuzytkownika
/tmp
/usr - bardzo duzy objetosciowo katalog zawieraj acy pliki i biblioteki tworz ace srodowisko X-
Window i inne podstawowe aplikacje unixowe, t.j. greep, awk, more, less itd. (podkatalog
/bin)
/var - tutaj przechowywane s a pliki dzienników systemowych (/log), w których zapisywane s a
poszczególne zdarzenia. Tu takze traa poczta przychodz aca do uzytkowników systemu
oraz tworzone s a kolejki poczty wychodz acej i drukowania
Przykład wykorzystania potoku
ls --help | more
Przekierowanie standardowego we-wy
1
echo "Ala ma kota" > alafile
echo "i psa" >> alafile
2 Programowanie w Shellu - Podstawy
Pisanie skryptu polega na ł aczeniu polecen shella tak, aby zrealizowane były potrzeby uzyt-
kownika. Uzytkownik tworzy skrypt za pomoc a wpisania polecen shella do pliku. Mozna przy
tym uzywac dowolnego edytora, np. vi, emacs lub edytora z programu Midnight Commander.
Plik musi byc wykonywalny, zatem nalezy mu ustawic odpowiednie prawa dostepu np.
chmod 755 skrypt1
2.1 Kilka podstawowych polece n wykorzystywanych przy pisaniu skryp-
tów
Uwaga!!! Wszystkie ponizsze polecenia nalezy przetestowac pisz ac odpowiednie skryp-
ty
Polecenie grep szuka okreslonych napisów w plikach i wyswietla je na standardowym
wyjsciu.
grep "i psa" alafile grep -n "i psa" alafile
Zliczanie słów i wierszy, przykład sprawdzaj acy ilu uzytkowników pracuje w systemie
who | wc -l
Znajdz nazwisko uzytkownika np.
w pliku /etc/passwd za pomoc a polecenia
grep g3 /etc/passwd
Polecenia cut i paste
Wycinanie potrzebnych pól (z wyniku wyswietlonego przy uzyciu poprzedniego polecenia)
za pomoc a polecenia cut ( pola s a ograniczone za pomoc a znaku : ). Opis pól: 1 - nazwa konta,
2 - hasło itd.
Interesuje nas pozycja 1 i 5, wiec
grep student /etc/passwdgrep | cut -f1,5 -d:
Zakres pól wskazuje sie za pomoc a znaku - .
Z wyjscia polecenia ls wytnij prawa dostepu i nazwe pliku
ls -l | cut -c1-9,55-
2
Zapoznac sie z poleceniem paste ( man paste ). Napisac skrypt wykorzystuj acy to polece-
nie.
Przetwarzanie informacji
Zamiana napisu ala na heniek w pliku alafile
sed -e "s/ala/heniek/" alafile
Zamiana znak po znaku
Zamiana małych liter na duze z pliku ala do pliku ALA
tr "[a-z]" "[A-Z]" < ala > ALA
zamiana spacji na entery
tr "[ ]" "[\012]" < ala
usuwanie (squeeze) nadmiarowych spacji itp.
tr -s "[ ]" "[ ]" < ala
usuniecie tabulatora
tr -d "[\t]" < ala
uzywanie awk , kilka prostych polecen
awk -F: ’{print $1 $5}’ /etc/passwd
ls -l | awk -F: ’{print $1}’
2.2 Troche o zmiennych
Zmienna reprezentuj aca sciezke do katalogu osobistego uzytkownika
$HOME lub ~
Odnajdywanie polecen przez shell zmienna $PATH .
Zapoznaj sie z zawartosci a pliku .bash_profile . Zmodykuj zmienn a $PATH tak, aby
był widoczny katalog bin znajduj acy sie w twoim katalogu osobistym umiesc nim którys z
wczesniej stworzonych plików, a nastepnie spróbuj go uruchomic z innego katalogu.
Zmienne specjalne - dostarczaj a informacji o procesie shella. S a one zawsze ustawiane przez
shell - ich zawartosc jest dostepna po odwołaniu sie do nich za pomoca znaku $ . Wartosci
tych zmiennych nie mozna zmieniac za pomoc a zwykłych polecen. np. zmiennym $0 do $9
przekazywane s a parametry przekazywane do skryptu.
$# - nazwa programu shellowego
3
$1 ... - argumenty pozycyjne
$* - rozwijane do "$1 $2 ..."
$@ - rozwijane do "$1" "$2" ...
$$ - numer procesu biez acego procesu shella
$! - numer procesu ostatniego zadania shellowego
Zmienne srodowiska - wykorzystywane przez shell do przechowywania danych pomocnych do
nadzorowania sesji shella. Uzytkownik ma dostep do nich i moze je zmieniac.
$PS1 - znak zachety
\t - biez acy czas
\d - biez aca data
\w - biez acy katalog roboczy
\u - nazwa uzytkownika
\h - nazwa hosta
HISTFILE - nawa pliku z historia polecen
HISTSIZE - liczba pamietanych polecen
Wyswietl zawartosc zmiennej $PS1 , tzn. echo $PS1 .
Zmienne programowe
Przykład
temp_name=/usr/tmp
cd $temp_name
2.3 Instrukcje warunkowe
Polecenie test
Podstawowe warunki testujace ( $? - kod powrotu ostatniego polecenia)
-r plik - prawda, jesli plik istnieje i ma prawa do czytania
-w plik - prawda, jesli plik istnieje i ma prawa do pisania
-x plik - prawda, jesli plik istnieje i ma prawa do pisania
4
-f plik - prawda, jesli plik istnieje i jest zwykłym plikiem
-d plik - prawda, jesli plik istnieje i jest katalogiem
-s plik - prawda, jesli plik istnieje i ma rozmiar wiekszy od zera
-z s1 - prawda, jesli długosc napisu s1 wynosi zero
-n s1 - prawda, jesli długosc napisu s1 jest rózna od zera
s1 = s2 - prawda, jesli s1 i s2 s a identyczne
s1 != s2 - prawda, jesli s1 i s2 s a rózne
l1 -eq l2 - równe liczby
l1 -ne l2 - rózne
l1 -gt l2 - l1>l2
l1 -ge l2 - l1>=l2
l1 -lt l2 - l1<l2
l1 -le l2 - l1<=l2
Powyzsze wyrazenia mozna ł aczyc za pomoc a operatorów
AND (-a)
OR (-o)
Mozliwe jest takze uzycie operatora NOT (!) . Przykłady:
test -r filename
echo $?
0
dwa napisy
test "myname" = "lja"
echo $?
1
test -w ala -a -r ala
echo $?
5
Zgłoś jeśli naruszono regulamin