Powłoka BASH jest interfejsem tekstowym pomiędzy użytkownikiem

Transkrypt

Powłoka BASH jest interfejsem tekstowym pomiędzy użytkownikiem
Powłoka BASH jest interfejsem tekstowym pomiędzy użytkownikiem i jądrem systemu. Jest
też interpreterem poleceń i udostępnia interfejs wiersza poleceń. Składa się on z pojedynczego
wiersza do wprowadzania poleceń z opcjami i argumentami. Początek wiersza poleceń to
monit powłoki. Jest to pojedynczy znak $ dla zwykłego użytkownika i znak # dla
użytkownika root. Sposób używania powłoki jest bardzo prosty - użytkownik wprowadza
polecenie, informuje powłokę o zakończeniu wprowadzania polecenia klawiszem Enter, po
czym powłoka interpretuje wprowadzone polecenie i wysyła je do systemu, który je
wykonuje. Polecenie musi być napisane zgodnie z ustalonymi regułami nazywanymi składnią.
Ogólna postać składni polecenia jest następująca:
$ Polecenie Opcje Argumenty
Powłoka sprawdza poprawność wprowadzanego polecenia, istnienie polecenia, poprawność
opcji, argumenty.
Ćwiczenie:
Pod kontrolą prowadzącego na koncie administracyjnym root proszę o wykonanie polecenia
# useradd nazwa_użytkownika
a następnie po założeniu swojego konta o ustawienie hasła
# passwd nazwa_użytkownika
po czym zalogowanie się z innego komputera na swoje konto.
Opis interfejsu wiersza poleceń
Wiersz poleceń jest buforem tekstowym posiadającym pewne możliwości edycji tekstu
pozwalające na ograniczoną edycję tekstu wprowadzanego polecenia. Oto one:
BackSpace pozwala na usuwanie poprzedzającego kursor znaku
Del lub [Ctrl+D] pozwala na usuwanie znaku znajdującego się przed kursorem.
[Ctrl+U] usuwa cały wiersz
[Ctrl+F] lub kursor w prawo przesuwanie kursora o jeden znak w prawo
[Ctrl+B] lub kursor w lewo przesuwanie kursora o jeden znak w lewo
znak ‘\’ maskowanie klawisza Enter (wpisanie dalsze części polecenia w drugiej linii)
[Ctrl+C] przerwanie wykonywania polecenia
Powłoka BASH zapamiętuje kilka poprzednich poleceń w postaci listy poleceń. Można je
odtworzyć, edytować i powtórnie wykonać. Służą do tego klawisze:
kursor w górę przewijanie listy poleceń
kursor w dół przewijanie listy poleceń w drugą stronę
Ćwiczenie:
Proszę zalogować się na swoje konto podając najpierw w tekstowym monicie logowania
swoją nazwę użytkownika, a następnie hasło. Wydać polecenie useradd nazwa_użytkownika.
Zaobserwować reakcję powłoki. Przeczytać komunikat powłoki. Wykonać powtórnie to samo
polecenie z argumentem /etc/passwd. Przeczytać komunikat powłoki.
Wykonać polecenie ls bez żadnych argumentów. Zwrócić uwagę na miejsce, w którym
wykonywane jest polecenie i skojarzyć to miejsce z tekstem wyświetlanym przed monitem
powłoki. Wykonać polecenie
$ cat > pogoda
Wpisać swój własny tekst opisujący aktualną pogodę, oddzielając poszczególne linie
klawiszem Enter. Zakończyć polecenie kombinacją [Ctrl+D]. Powtórnie wykonać polecenie
ls. Zaobserwować zmiany w zawartości katalogu domowego.
Standardowe we/wy i przekierowanie.
Wszystkie pliki Linuxa są logicznie zorganizowane jako ciągły strumień bajtów. Fizyczną
strukturą pliku Linuxa są luźno rozrzucone po dysku bloki. Użytkownik poza wywołaniami
systemowymi nigdy nie odwołuje się do fizycznej struktury pliku, dlatego możliwe jest łatwe
skopiowanie pliku lub dodanie go do innego pliku. Nie ma rozróżnienia między plikami
tekstowymi, binarnymi, rekordowymi itp. Operacje wejścia i wyjścia są również traktowane
jako pliki o takiej samej strukturze. Standardowym urządzeniem wejścia jest klawiatura. Dane
wprowadzane za pomocą klawiatury są umieszczane w strumieniu danych jako plik. Podobnie
standardowym urządzeniem wyjściowym jest ekran (urządzenie do wyświetlania obrazu).
Dane wprowadzane z klawiatury są standardowo wyświetlane na ekranie. Podobnie
informacje wyświetlane przez polecenie ls standardowo kierowane są na ekran.
Znaki ‘<’ i ‘>’ pozwalają kierować informacje w inne miejsce. Są to znaki przekierowania.
Każdy plik w Linuksie ma specjalny znak oznaczający jego koniec. Jest to znak ^D (Ctrl+D).
Pomoc „on-line”
Każde polecenie powłoki ma swoją pomoc w postaci strony w podręczniku nazywanym
manualem. Uzyskanie tej pomocy jest bardzo proste. Przykładowo do polecenia ls pomoc
można uzyskać wykonując polecenie:
$ man ls
Przejście z powrotem do monitu powłoki wykonujemy wciskając klawisz q.
Wskazywanie miejsca wykonania polecenia - ścieżka dostępu
Głównym punktem montowania w Linuksie jest katalog ‘/’. Wskazanie miejsca wykonania
polecenia polega na pokazaniu systemowi, jak powinien poruszać się począwszy od katalogu
głównego poprzez wszystkie poziomy katalogów aż do miejsca, gdzie ma być wykonane
polecenie. Taka ścieżka dostępu jest najczęściej używanym argumentem polecenia.
Pliki o znaczeniu specjalnym (ukryte) w Linuxie są poprzedzane kropką (są to tzw. pliki
z kropką).
Ćwiczenie:
Proszę wykonać polecenie
$ ls
Obejrzeć pomoc do polecenia ls (poleceniem man ls)
Używając odpowiednich opcji proszę wyświetlić w swoim katalogu domowym wszystkie
pliki, łącznie z plikami z kropką. proszę sprawdzić, czy wśród nich znajduje się plik będący
wcześniej omawianym skryptem startowym .bashrc. Wyświetlić wszystkie pliki oprócz
plików ukrytych. Wypisać tylko nazwy katalogów, bez wyświetlania ich zawartości.
Wyświetlić pliki podając ich rozmiar na dysku.
Przekierowania
Przykład przekierowania wejścia:
$ cat < pogoda
Przykład przekierowania wyjścia:
$ ls > dom
Przykład jednoczesnego przekierowania wejścia i wyjścia:
$ cat < pogoda > nowapogoda
Przekierowanie do pliku powoduje, jeżeli ten plik istnieje i jest niepusty, skasowanie
zawartości pliku i zapisanie w nim nowej zawartości. Podwójne przekierowanie (realizowane
operatorem ‘>>’) spowoduje dopisanie tekstu na końcu pliku. Przykład realizacji dopisywania
na końcu pliku:
$ cat < pogoda >> nowapogoda
Przykład zastosowania argumentu w poleceniu:
$ ls -a /usr
Ćwiczenia:
1. Utworzyć plik mojapogoda, wpisać do niego zawartość pliku pogoda, dopisać na końcu
pliku swój własny komentarz do pliku.
2. Utworzyć plik dwarazypogoda, umieścić w nim dwukrotnie zawartość pliku mojapogoda.
3. Wyjście standardowego polecenia ls wykonanego na katalogu domowym skierować do
pliku npogoda.
4. Kierując wynik polecenia na ekran wykonaj polecenie ls na katalogu /usr wyświetlając
wszystkie pliki bez i z zawartością katalogów. Porównaj wyniki działania polecenia.
5 Wykonaj te same polecenia, ale na katalogu /etc, wyniki przekieruj do plików odpowiednio
pliketcw i pliketcwr. Obejrzyj zawartość obu plików.
6. Utworzyć plik petc, zapisać w nim zawartości obu plików pliketcw i pliketcwr. Na wejście
polecenia cat skierować plik petc, na wyjście też petc. Jaki i dlaczego jest wynik tego
polecenia?
Potoki poleceń
Potok jest połączeniem dwóch lub więcej poleceń. Umieszczenie między dwoma poleceniami
operatora potoku powoduje przekazanie sterowania z wyjścia jednego polecenia na wejście
drugiego polecenia. Innymi słowy standardowe wyjście jednego polecenia staje się wejściem
drugiego polecenia umieszczonego za operatorem potoku. Przekierowanie umieszcza wynik w
pliku, a potok wysyła wynik do wejścia innego polecenia. Celem operacji przekierowania
mogą być wyłącznie pliki, operacji potoku inne polecenia. Przykładem polecenia
wykorzystującego potok jest:
$ ls -a /etc | more
Wyjście polecenia ls jest kierowane na wejście polecenia more, a następnie na ekran.
Polecenie more dzieli na ekrany wynik polecenia ls.
Ćwiczenie:
1. Wszystkie pliki z katalogu /etc posortuj w odwrotnej kolejności i wyświetl je na ekranie.
Użyj polecenia sort.
2. Wszystkie pliki z katalogu /etc posortuj w kolejności „książki telefonicznej” i zapisz w
pliku pliketcsortr1. Użyj polecenia sort.
3. Wszystkie pliki z katalogu /etc posortuj w kolejności „książki telefonicznej” i zapisz w
pliku pliketcsortr2. Użyj polecenia less.
4. Wszystkie pliki z katalogu /etc posortuj w kolejności „książki telefonicznej” i zapisz w
pliku pliketcsortr3. Użyj polecenia less. Wydrukuj numery linii ekranowych.
5. Wszystkie pliki z katalogu /etc posortuj w kolejności alfabetycznej i zapisz w pliku
pliketcsortr4. Użyj polecenia sort. Wydrukuj numery linii ekranowych. Pomiń pierwsze i
drugie pola. Użyj pojedynczego klucza od początku trzeciego pola do końca każdej linii.
6. Wszystkie pliki z katalogu /etc posortuj w kolejności odwrotnej. Użyj polecenia sort.
Wydrukuj numery linii ekranowych. Wyświetl je ekranami. (użyj filtru more).
7. . Wszystkie pliki z katalogu /etc posortuj w kolejności odwrotnej. Użyj polecenia sort.
Wydrukuj numery linii ekranowych. Jednocześnie wyświetl je i zapisz w pliku pliketcsort5.
Użyj polecenia tee.
8. Zapisz w pliku pliksbin zawartość katalogu /sbin
9. Posortuj w odwrotnej kolejności zawartość pliku pliksbin, dodaj do niego numery wierszy
(opcją polecenia cat), wyświetl na ekranie i zapisz w pliku npliksbin.
Znaki specjalne i argumenty nazw plików
Najczęstszymi argumentami poleceń są nazwy plików. Polecenia są często wykonywane na
liście plików. Dopasowywanie i generowanie listy plików wykonuje się za pomocą zestawu
znaków specjalnych oferowanych przez powłokę. Znakami tymi są:
‘?’ - zastępuje w nazwie pliku pojedynczy znak
‘*’ - zastępuje w nazwie pliku ciąg znaków
‘[]’ - określają zestaw dopuszczalnych poszukiwanych znaków
‘\’ - maskuje znaki specjalne
Lista nazw plików może być argumentem dla poleceń które mogą działać na wielu plikach
(takim poleceniem jest ls). Przykładowo, znalezienie poleceniem ls plików zaczynających się
na literę a w katalogu /sbin może być zrealizowane następująco:
$ ls a* /sbin
W nawiasach kwadratowych znaki umieszczamy obok siebie, np. [cd], lub dajemy zakres
znaków, np. [A-E] , [3-7].
Ćwiczenie:
1. Proszę znaleźć w katalogu /sbin wszystkie pliki zaczynające się od mkfs, posortować je
alfabetycznie i wyświetlić je i zapisać w pliku pliksbin.mkfs.
2. Znaleźć w katalogu /sbin wszystkie pliki mające gdziekolwiek w nazwie ciąg znaków dos.
3. Znaleźć w katalogu /sbin wszystkie pliki mające gdziekolwiek w nazwie ciąg znaków
dump i sortując je w odwrotnej kolejności, dodając numery linii wyświetlić i zapisać w pliku
pliksbin.dump.
4. Znaleźć wszystkie pliki w katalogu /sbin których częścią rozszerzenia jest ciąg znaków ext,
zapisać je w pliku pliksbin.ext.
5. Znaleźć w katalogu /etc i wyświetlić posortowaną listę plików, których rozszerzenia
zaczynają się od litery d.
6. Znaleźć w katalogu /etc i wyświetlić posortowaną listę plików, których rozszerzenia
składają się z litery d.
7. Znaleźć w katalogu /etc i wyświetlić posortowaną listę plików, których rozszerzenia
zawierają literę d.
8. Znaleźć w katalogu /etc i wyświetlić posortowaną listę plików, których rozszerzenia
składają się z litery d, a w nazwie mają człon rc.
9. Znaleźć w katalogu /etc i wyświetlić posortowaną listę plików, których rozszerzenia to
wyrażenie conf.
10. Znaleźć w katalogu /etc i jego podkatalogach i wyświetlić posortowaną listę plików,
których rozszerzenia to wyrażenie conf.
11. Znaleźć w katalogu /etc i wyświetlić posortowaną listę plików, których rozszerzenia
zawierają znak c.
12. Znaleźć w katalogu /etc i wyświetlić posortowaną listę plików, których rozszerzenia są
jednoznakowe.
13. Znaleźć w katalogu /etc i wyświetlić posortowaną listę plików, które mają rozszerzenia.
14. Znaleźć w katalogu /lib takie pliki, których rozszerzenia zaczynają się od so.2.
15. Znaleźć w katalogu /lib takie pliki, które są bibliotekami związanymi z serwerem NIS.
16. Znaleźć w katalogu /lib takie pliki, które dotyczą usługi katalogowej LDAP.
17. Znaleźć w katalogu /lib i jego podkatalogach takie pliki, których nazwy zaczynają się od
snd.
18. Znaleźć w katalogu /lib i jego podkatalogach takie pliki, których nazwy zawierają cyfry,
posortować je, dodać numery wierszy i zapisać w pliku pliklib.cyfra.
Polecenie ps
Ćwiczenie:
Proszę wykonać w wersji standardowej polecenie ps i zinterpretować jego wynik.
Proszę zapoznać się ze stroną man polecenia ps i wykonaj to polecenie w długim formacie,
pokaż procesy innych użytkowników bez kontrolującego terminala.
Po wykonaniu tych zadań należy się z terminala wylogować poleceniem:
$ logout
Dziękuję za uczestnictwo w zajęciach.
Formą sprawdzenia obecności i aktywności na zajęciach będzie ślad
pozostawiony przez Państwa w moim komputerze.
Grzegorz Kluka