bash powloki 8.doc

(166 KB) Pobierz
Wprowadzenie

Wprowadzenie

Definicja pojęcia powłoki

Powłoka (shell - interpreter poleceń) jest programem, który odczytuje, interpretuje i przetwarza polecenia. Zaraz po zarejestrowaniu się użytkownika system przygotowuje powłokę, która czeka na wydanie polecenia. Powłoka zapewnia łączność pomiędzy systemem (jądrem systemu), a użytkownikiem.

HISTORIA POWSTANIA

GNU, Bourne - Again SHell - tak brzmi pełna nazwa powłoki, której twórcą jest Brian Fox, a którą obecnie rozwija Chet Ramey - jest zgodna z powłoką Sh, a niektóre cechy przejęła z powłok Korn i C. Bash, w porównaniu z poprzednikami, charakteryzuje wiele innowacji przydatnych zarówno zwykłym użytkownikom jaki i programistom. W porównaniu z konkurencyjnymi rozwiązaniami jest bardzo duża i wolna w działaniu. Bash obsługuje standardowe konstrukcje sh, takie jak for, while, case, czy if.. Umożliwia wykonywanie skryptów w taki sam sposób jak zwykłych poleceń. Dostępne są wcześniej wpisane polecenia (tzw. Historia) i rozbudowane funkcje edycji linii poleceń. Zawiera też liczne wbudowane polecenia (ang. Builtins), pozwalające m.in. na kontrole procesów, obliczanie wartości wyrażeń arytmetycznych, definiowanie aliasów itd. Program ten jest automatycznie uruchamiany po zalogowaniu i następnie umożliwia wprowadzanie i wykonywanie poleceń Linuksa - stąd termin interpretator poleceń. Jednocześnie bash dostarcza własnego języka programowania, który może być wykorzystywany do pisania programów powłoki (skryptów powłoki). Na ten temat składają się min.: wprowadzenie do używania bash, przekierunkowanie wejścia i wyjścia, komunikacja pomiędzy procesami (potoki, substytuty poleceń) i zarządzanie zmiennymi powłoki. Jeśli ktoś miał do czynienia z plikami wsadowymi (Batch File) w DOS'ie to może myśleć o skryptach jako o takich plikach. Skrypty są interpretowane przez powłokę. Interpretowanie polega na tym, że w przeciwieństwie do programów zapisanych w postaci binarnej, skrypty są zwykłymi plikami tekstowymi, w których są zapisane polecenia zrozumiałe dla powłoki. Zadaniem powłoki jest przetłumaczenie ich na polecenia systemu.

Interpreter poleceń powłoki BASH(Bourne Again Shell)

Interpreter poleceń powłoki jest to interfejs pomiędzy użytkownikiem, a jądrem systemu. Dzięki niemu, jeśli wydajemy za pomocą klawiatury polecenie powłoka zamienia dane na język zrozumiały przez jądro systemu, który wie, że ma np. uruchomić bądź zatrzymać program. Jedną z takich powłok jest BASH stworzony przez Briana Foxa i Cheta Rameya i udostępniony na zasadach licencji GNU. Jest on jedną z lepszych powłok i w wielu systemach linuxowych wykorzystywany jako domyślna. Zawiera 48 wbudowanych poleceń (biult-in) oraz 12 funkcji wywołania. Jest w pełni kompatybilny z powłoką sh oraz zawiera wiele ciekawych rozwiązań przejętych od powłok Korn i C (ksh i csh). Przede wszystkim powłoka jest wykorzystywana do wywoływania poleceń Linuksa i programów, dlatego reprezentuje rodzaj interpretatora (porównywalnego np. z COMMAND.COM w środowisku MS-DOS). Jednocześnie powłoka dostarcza potężnego języka programowania, który może zostać użyty do automatyzacji powtarzających się zadań. Niektóre specjalne polecenia powłoki umożliwiają użycie zmiennych wewnątrz tych programów konstruowanie rozgałęzionych wyrażeń, pętli itd. W zależności od indywidualnych upodobań ich autorów, wynikowe programy są nazywane plikami wsadowymi, skryptami powłoki lub procedurami powłoki. Jednak w każdym przypadku są to proste pliki tekstowe, które są wykonywane (interpretowane) przez powłokę. Jeżeli chodzi o interpretacje poleceń przez powłokę to wyróżniamy polecenia powłoki takie jak cd, pwd, kill, exit itp oraz polecenia zewnętrzne w programach użytkowych takie jak ls,rm, cp,adduser,itp., oraz inne aplikacje emacs, kermit itp. Bash może być wykorzystywany także do pisania programów powłoki (skryptów powłoki). Skrypt powłoki jest to plik tekstowy, zawierający zestaw poleceń. Po uruchomieniu takiego skryptu zostaną wykonane kolejno polecenia w nim zapisane. Takie skrypty są zwykłymi plikami tekstowymi, często bez rozszerzenia którym nadaliśmy prawo wykonywania. Dzięki niemu możemy zautomatyzować często wykonywane czynności albo zpersonalizować np. konfigurację powłoki poprzez dopisanie odpowiedniego kodu do skryptów uruchamianych przez login shell(.bash_profile .bash_login .profile )albo non-login shell (.bashrc) . Powinniśmy rozpocząć je od sekwencji #!/bin/bash która informuje, że skrypt ten powinien być interpretowany przez powłokę bash(sam znak # oznacza komentarz ignorowany przez interpreter #! stanowi wyjątek) . Koniec polecenia stanowi średnik , domyślnie zaś znak następnego wiersza. Więc jeżeli chcemy użyć więcej niż jednego polecenia w wierszu używamy średnika by je oddzielić.

Konfiguracja powłoki

Edycja czy dodawanie nowych zmiennych środowiskowych za pomocą wiersza poleceń jest rozwiązaniem prawidłowym, ale wprowadzane zmiany nie mają charakteru stałego tzn. nie będą aktywne po następnym zalogowaniu się. Można jednak ustawić je w plikach konfiguracyjnych tak by były odczytywane podczas każdego uruchamiania powłoki (logowania). W przypadku powłoki bash zmienne można umieścić w plikach /etc/profile, gdy jesteśmy administratorem lub w katalogu użytkownika w pliku o nazwie .profile lub .bash_profile. Właśnie w nich dodajemy aliasy, zmienne, ścieżki itp.

Obsługa powłoki BASH

Wprowadzenie poleceń

Pierwszy kontakt z bash następuje podczas normalnego wprowadzania poleceń. Bash wspomaga nas dużą liczbą skrótów klawiaturowych i klawiszy specjalnych. W szczególności można używać klawiszy kursora [w górę] i [w dół] do powtórnego wykonywania najczęściej wprowadzanych poleceń, co oszczędza wiele mozolnego wpisywania. Po wylogowaniu się z powłoki, ostatnio używane polecenia zostaną zapisane w pliku i w ten sposób będą dostępne podczas następnej sesji (jeżeli pracujemy pod tą samą nazwą użytkownika na kilku terminalach, tylko polecenia jednego z tych terminali będą zachowane). Wiersze poleceń mogą być edytowane w ten sam sposób jak w edytorze tekstowym, można wstawiać i usuwać znaki w dowolnym miejscu. Mapowanie klawiatury w bash jest niemal całkowicie konfigurowalne. W szczególności można przypisywać swoje własne polecenia do klawiszy specjalnych (takich jak klawisze funkcyjne i klawisze kursora). Poza tym można przełączać się pomiędzy trybami emacs oraz vi. Dlatego dla wszystkich podstawowych poleceń edycji odnoszą się te same skróty klawiaturowe, co w wybranym edytorze. Zazwyczaj standardowym ustawieniem jest emacs.

Najważniejsze skróty klawiaturowe

Wpisując z klawiatury polecenia powłoki, korzysta się w istocie z prostego, liniowego miniedytora, nieco podobnego do edytora DOSKEYS pod MS-DOS. Niektóre sekwen­cje klawiszy interpretowane przez powłokę wymienione są w tabeli 2. Naciskając odpowiednie klawisze możemy na przykład poruszać się po liście ostatnio wykony­wanych poleceń, zwanej historią poleceń (history list). Aby powtórzyć polecenie, wy­starczy odpowiednią liczbę razy wcisnąć klawisz ze strzałką do góry, znajdując w ten sposób odpowiednie polecenie. Następnie wystarczy wcisnąć (Enter).

Sekwencja klawiszy        -        Działanie

Strzałka do góry        -       Cofnięcie o jedną pozycję na liście historii poleceń

Strzałka w dół        -       Przejście do następnej pozycji na liście historii poleceń

Strzałka w lewo        -       Przesunięcie kursora o jeden znak w lewo

Strzałka w prawo        -       Przesunięcie kursora o jeden znak w prawo

[Esc-F]       -       Do przodu o jedno słowo

[Esc-B]       -       Do tyłu o jedno słowo

[Ctr1+A]       -        Na początek linii

[Ctr1+E]        -       Na koniec linii

[Ctr1+D]        -       Kasowanie znaku pod kursorem

[Backspace]       -       Kasowanie poprzedzającego znaku

[Esc-D]        -       Kasowanie aktualnego słowa

[Ctr1+U]        -       Kasowanie od początku linii do pozycji kursora

[Esc-K]       -       Kasowanie od pozycji kursora do końca linii

[Ctr1+Y]        -       Przywrócenie ostatnio skasowanego elementu

[Esc-.]       -       Wpisanie ostatniego słowa poprzedniego polecenia

[Ctr1+L]  - Wyczyszczenie ekranu; kursor znajdzie się w najwyższej linii ekranu

[Tab]   -    Próba uzupełnienia aktualnego słowa. Słowem może być nazwa pliku, użytkownika,zmiennej, hosta lub po­lecenie  w zależności od kontekstu

[Esc-?]       -       Wypisuje listę możliwych uzupełnień

Szczególną uwagę zwróćmy na funkcję wywoływaną przez wciśnięcie tabula­tora. Tabulator może być również używany przy wpisywaniu poleceń. Jeżeli wpi­szemy pierwszą część nazwy pliku i wciśniemy [Tab], to powłoka poszuka plików o na­zwie odpowiadającej wpisanemu początkowemu ciągowi znaków. Jeżeli istnieje tyl­ko jeden taki plik, to powłoka uzupełni wpisany ciąg znaków. Wystarczy wtedy wci­snąć [Enter], by polecenie zostało wykonane. Można też kontynuować wprowadzanie znaków z klawiatury - na przykład opcji czy argumentów. Ta funkcja zwana dopełnianiem nazw plików lub nazw poleceń bardzo ułatwia korzystanie z powłoki. Oprócz sekwencji klawiszy pozwalających edytować linię polecenia, powłoka inter­pretuje też kilka innych sekwencji, które sterują wykonaniem aktualnie aktywnego programu. Tego typu sekwencje zebrane zostały w tabeli 3. Na przykład wciśnię­cie [Ctr1+C] najczęściej przerywa aktualnie wykonywany program.

 

Sekwencja klawiszy        -        Działanie

[Ctr1+C]       -        Wysyła sygnał przerwania do aktualnie wykonywanego polecenia, co z reguły powoduje, że odpowiedni proces zostaje zakończony

[Ctr1+D]       -       Wysyła znak końca pliku do aktualnie wykonywanego polecenia użyj tej sekwencji do zakończenia wprowadzania danych  z klawiatury

[Ctr1+Z]       -        Wstrzymuje (czasowo) wykonywanie aktualnie aktywnego programu

Dokańczanie poleceń

Dokańczanie poleceń jest bardzo wygodną i przyspieszającą pracę opcji powłoki Bash. Dzięki niej nie musimy już wpisywać pełnej nazwy programu (ścieżki do katalogu, pliku itp.) lub znać jego dokładnej nazwy. Wystarczy, że wpiszemy jego pierwszą literkę i wciśniemy klawisz TAB. Wtedy Linux spróbuje wyszukać wszystkie dostępne programy, katalogi, pliki, których pierwsza litera nazwy odpowiada wpisanej przez nas. Jeśli więcej programów zaczyna się na tę sam znak powłoka wylistuje nam ich nazwy i poinformuje nas za pomocą brzęczyka, że należy podać dodatkowe informacje. Dzieje się to zazwyczaj, gdy podamy tylko jedną, bądź dwie pierwsze litery, ale już np. wpisanie mut i wciśnięcie TAB, najprawdopodobniej spowoduje poprawne dokończenie nazwy programu na mutt! Jeśli wpiszemy nazwę z błędem np. mot, które nie ma odniesienia w rzeczywistości i naciśniemy TAB interpreter poinformuje nas o błędzie wydając z brzęczyka systemowego charakterystyczny dźwięk. Jest to dla nas sygnał, że coś jest nie w porządku i należy poprawić.

Historia poleceń

Bash zapamiętuje wydane przez użytkownika polecenia. Dzięki temu za pomocą klawiszy kursora (góra - dół), możemy szybko przywołać polecenie, które już wcześniej wydaliśmy. Jest to szczególnie przydatne gdy w bardzo skomplikowanym poleceniu zmieniamy np. tylko nazwę pliku, na którym ma zostać wykonane, a cała składnia polecenia nie ulega modyfikacjom. Lista wydanych przez nas poleceń jest ładowana z pliku historii, który domyślnie nosi nazwę .bash_history. Parametry nazwy pliku historii oraz ilości przechowywanych w nim ostatnio wydanych poleceń ustalają zmienne HISTFILE oraz HISTSIZE. W tym miejscu warto zaznaczyć, że w wielu dystrybucjach Linuksa zmienna HISTSIZE ma wartość 1000 co powoduje, że w pliku .bash_history zapisywanych jest 1000 wydanych ostatnio poleceń. Aby obejrzeć na ekranie dostępne z historii polecenia wystarczy użyć polecenia:

Tak więc, jeśli chcemy obejrzeć 10 ostatnio wydanych poleceń wpiszmy history 10.

Aliasy

Aliasy są to skróty, które przyspieszają naszą pracę z powłoką. Jeśli np. codziennie uaktualniamy naszą stronę główną, której plik startowy to /home/slawek/linux/index.html to zamiast ciągle wpisywać mcedit /home/slawek/linux/index.html możemy utworzyć do niego alias po wywołaniu którego otworzony zostanie do edycji ten właśnie plik. Nasz alias będzie nosił nazwę linux i właśnie to słowo będziemy musieli wpisać, aby wywołać do edycji plik index.html.

alias linux='mcedit /home/slawek/linux/index.html'

Warto pamiętać, że utworzone z linii poleceń aliasy stają się nieaktualne po wylogowaniu się z powłoki. Aby były dostępne po każdym zalogowaniu się, należy je dopisać do jednego z plików konfiguracyjnych. Jeśli dany alias nie jest nam już potrzebny możemy usunąć go kor...

Zgłoś jeśli naruszono regulamin