Instrukcja do laboratorium z przedmiotu
Podstawy Techniki Komputerowej
Laboratoria nr 4 i 5
Temat:
Powłoka systemu UNIX
Opracował: dr Edward Śliwa
Warszawa, marzec 1999
1. Przygotowanie do zajęć
Przed zajęciami należy zapoznać się z następującymi tematami (z man
pages lub dowolnej dobrej książki opisującej system UNIX):
- zmienne powłoki
- transformacje dokonywane przez powłokę
- redirekcja
- konstrukcje sterujące powłok Bourne'a i Korna
- zasady tworzenia skryptów w języku powłoki
Przygotować w domu
propozycje skryptów o których mowa w dalszych punktach instrukcji.
2. Zmienne powłoki
- Zdefiniować kilka zmiennych powłoki i sprawdzić ich wartości (np. za
pomocą komendy echo).
- Sprawdzić, jaką powłokę i standardowy edytor ustawił administrator
systemu.
- Ustawić prompt powłoki tak, by pokazywał katalog roboczy.
- Dodać do ścieżki przeszukiwań podkatalog bin ze swojego
prywatnego katalogu.
- Sprawdzić efekty niewłaściwego ustawienia zmiennych TERM i
EDITOR (np. wywołując edytor ASCII, próbując poprawiać tekst
wprowadzany z linii komendy).
- Obejrzeć listę zmiennych środowiskowych (set, env).
- Czym się różnią zmienne powłoki od zmiennych środowiskowych? Sprawdzić,
jakie zmienne są widziane w powłoce potomnej. Czy można tak zdefiniować
zmienną w powłoce potomnej, by była widziana w powłoce macierzystej?
3. Substytucje wykonywane przez powłokę
- Utworzyć aliasy:
- wyświetlający "długi" listing plików w aktualnym katalogu za
pośrednictwem programu stronicującego,
- łączący wszystkie pliki z aktualnego katalogu, a następnie
wyszukujący w tak postałym pliku linie komentarza (tzn. linie
zaczynające się od znaku #).
Obejrzeć aliasy automatycznie
definiowane przez powłokę.
- Przećwiczyć (np. za pomocą komendy echo) użycie substytucji
ścieżki (~user, ~+, ~-).
- Obejrzeć systemowy plik /etc/profile i prywatny plik .profile
(lub odpowiednio /etc/zprofile i $HOME/.zprofile w
przypadku korzystania z powłoki zsh). Zmodyfikować prywatny plik
.profile (np. modyfikując wartości zmiennych TERM,
PS1, PATH, definiując aliasy często używanych komend itp.).
Utworzyć plik startowy zawierający komendy wykonywane przy uruchamianiu powłok
potomnych.
- W aktualnym katalogu utworzyć plik filelist zawierający listę
plików ASCII (jedna nazwa pliku w linii). Za pomocą jednej komendy
wyszukać wszystkie linie zawierające słowo UNIX w pliku, którego
nazwa jest umieszczona w piątym od dołu wierszu pliku filelist.
Wskazówka: zastosować mechanizm substytucji wyniku działania
komendy.
- Wyświetlić listę plików (np. z katalogu /bin), których nazwy
spełniają jeden z następujących warunków:
- rozpoczynają się od litery c,
- kończą się na literę d
- zawierają ciąg znaków at
- zawierają cyfrę
- rozpoczynają się dużą literą alfabetu, zawierają co najmniej dwie
kropki, i kończą się cyfrą
4. Cytowanie
- Utworzyć (a następnie skasować) pusty plik, którego nazwa zawiera spację
lub gwiazdkę.
- Za pomocą komendy echo wyświetlić tekst:
$HOME = /wartość/przypisana/zmiennej/HOME
- Porównać cytowanie za pomocą znaków '...' i "...".
- Za pomocą jednoliniowej komendy echo wypisać trzyliniowy
komunikat.
5. Redirekcja
- Napisać skrypt tworzący plik ASCII headers.txt w taki sposób, że
dla każdego pliku będącego argumentem, z którym skrypt ten został wywołany, do
pliku headers.txt zostanie dodana linia z nazwą pliku i trzy pierwsze
linie tego pliku.
- Wywołać komendę
w taki sposób, by lista plików została jednocześnie
zapisana w pliku i wyświetlona na ekranie monitora.
Wskazówka: użyć
komendy tee.
- Wywołać komendę find w taki sposób, by na ekranie otrzymać tylko
listę znalezionych plików, a ewentualne komunikaty o błędach były ignorowane.
- Napisać skrypt, który wyświetla instrukcję swojego użycia za pomocą
programu more (przy czym instrukcja ta jest zawarta wewnątrz skryptu,
a nie w osobnym pliku).
Wskazówka: zastosować mechanizm dokumentu
wbudowanego.
6. Skrypty w języku powłoki
- Napisać skrypt, który po wywołaniu z jednym argumentem wypisze podstawowe
informacje o obiekcie, którego nazwa była argumentem (np. czy jest to nazwa
pliku lub katalogu, czy użytkownik ma prawo zapisu lub odczytu).
- Napisać skrypt zliczający liczbę zwykłych plików w aktualnym katalogu.
- Napisać skrypt wypisujący listę argumentów w odwróconej kolejności. ;-)
- Napisać prosty skrypt zmieniający katalog roboczy i/lub zmienną powłoki w
taki sposób, efekt działania skryptu nie zniknął z chwilą zakończenia jego
działania. ;-)
- Napisać skrypt wyszukujący w aktualnym katalogu pliki należące do
użytkownika wywołującego skrypt.
- Napisać skrypt obliczający n! (n jest argumentem wywołania
skryptu).
7. Edycja linii komendy
Zapoznać się ze sposobem edycji linii komendy w
powłokach Bourne'a, Korna i zsh. W szczególności przećwiczyć:
- sposoby przemieszczania kursora
- przywoływanie poprzednich komend
- automatyczne uzupełnianie nazw plików
8. Urządzenia
- Obejrzeć katalog /dev, zwracając uwagę na pliki specjalne
reprezentujące urządzenia blokowe i znakowe dotyczące tego samego fizycznego
urządzenia oraz na prawa dostępu do urządzeń.
- Zidentyfikować pliki specjalne reprezentujące:
- dyski w systemie,
- urządzenie puste,
- własny terminal,
- główny monitor i klawiaturę komputera.
- Zapisać (np. przez redirekcję) komunikat bezpośrednio na plik specjalny
reprezentujący terminal innego użytkownika. Zabezpieczyć się przed
informacjami od innych użytkowników za pomocą komendy chmod.
ES