SHELL 1) Co to jest powłoka ?
Powłoka (shell) jest interpretatorem poleceń przeczytanych z klawiatury lub pliku -
jest czymś w rodzaju command.com w systemach windowsowych. Linuks posiada kilka powłok : bash, sh, csh, tcsh, ale domyślnym shell'em dla Mandrake jest bash, dlatego pozostałe opisy będą dotyczyć tej właśnie powłoki.
Zmienne można podzielić na trzy grupy :
Zmienne lokalne określają konfigurację
powłoki i są widoczne tylko dla shell'a dla którego zostały zdefiniowane. set Ważniejsze zmienne to : BASH=/bin/bash - nazwa naszej powłoki Jeśli chcemy zobaczyć ustawienie pojedynczej zmiennej wydajemy polecenie : echo $HOME Do zdefiniowania nowej zmiennej lokalnej służy polecenie export z parametrem -n powodującym usunięcie atrybutu eksportu dla danej zmiennej : export -n nazwa_zmiennej=nowa_wartość
Zmienne globalne są to zmienne widoczne
w każdym podshellu. export EDITOR=mcedit
Zmienne specjalne są definiowane przez
system i w przeciwieństwie do innych zmiennych nie można zmieniać ich wartości. Przykładowe zmienne specjalne to : $# - liczba parametrów przekazanych do programu
Zmienne programowe to zmienne definiowane
przez użytkownika w skryptach powłoki. nazwa_zmiennej=wartość Pod zmienna programową można podstawić również wynik dowolnego polecenia , np.: Do zmiennej odwołujemy się poprzez podanie jej nazwy poprzedzonej znakiem $ , np.:
Powłoka bash posiada zdolność przywoływania wcześniej wydawanych poleceń przez użycie klawiszy kursora. Bash rejestruje je w pliku .bash_history , który znajduje się w katalogu domowym użytkownika. Historię poleceń określają dwa parametry : HISTFILE - wskazuje na plik zawierający wywołane wcześniej
polecenia Aby obejrzeć listę ostatnio wydawanych poleceń bez otwierania powyższego pliku należy skorzystać z polecenia history z parametrem określającym liczbę wierszy, które mają być wyświetlone : history 10 pokaże 10 ostatnio użytych poleceń. Aby powtórzyć wcześniej wydane polecenie można użyć następującej komendy :
Bash daje nam ciekawy mechanizm aliasów umożliwiających zastępowanie złożonych
poleceń krótszymi, łatwiejszymi do zapamiętania nazwami. alias 'nasza_definicja'='polecenie' Teraz poprzez wydanie polecenia p
otrzymamy listę wszystkich procesów. unalias p
5) Dowiązania stałe i symboliczne Mechanizm dowiązań (linków) ułatwia dostęp do plików ukrytych głęboko w strukturze katalogów lub umożliwia zgromadzenie potrzebnych plików w jednym katalogu. Linki dzielimy na stałe i symboliczne. Dowiązania stałe charakteryzują się
tym, że posiadają ten sam i-węzeł co wskazywany plik. W praktyce oznacza to, że
dowiązanie takie zawiera pełną informację o pliku i w razie skasowania oryginalnego
pliku dowiązanie nadal będzie zawierać informacje o tym pliku (jego zawartość). ln plik_lub_katalog link Dowiązania symboliczne służą jedynie
do wskazywania na jakiś plik. Umożliwiają one prace na danym pliku poprzez jego
dowiązanie. W przypadku skasowania pliku, do którego prowadzi link symboliczny
niemożliwe staje się korzystanie z tego dowiązania (nie zawiera on wówczas żadnych
informacji). ln -s plik_lub_katalog link
6) Przekierowania wejścia i wyjścia Przekierowania zazwyczaj wykorzystywane są do odczytania danych z jakiegoś urządzenia lub pliku albo do wysłania danych na urządzenie lub plik. Do przekierowań danych służą specjalne znaki : Najprostszym przykładem przekierowania może być wyświetlenie zawartości jakiegoś pliku poleceniem : cat < plik.txt Aby utworzyć nowy plik i wpisać do niego dowolny tekst możemy użyć przekierowania danych z wyjścia : cat > plik.txt Polecenie to utworzy nam plik : plik.txt i umieści w nim tekst wpisany z klawiatury. Jeśli będziemy chcieli ponownie dodać jakiś tekst do tego pliku należy użyć polecenia : cat >> plik.txt Spowoduje to dodanie następnych wierszy z informacją do pliku. Innym przykładem przekierowań może być zapisanie do pliku zawartości jakiegoś katalogu : ls -al > plik.txt
7) Łączenie poleceń za pomocą potoków Połączenie poleceń za pomocą potoków oznacza wysłanie wyniku z jednego polecenia na wejście drugiego polecenia. Potoki są bardzo często wykorzystywane podczas pisania wszelakich skryptów. Polecenie : ls -al | less łączy ze sobą dwa polecenia : ls -al - listuje zawartość katalogu
Meta-znaki to pewien zbiór znaków pełniący specjalne funkcje w powłoce Linuksa. Znaczenia meta-znaków : * - oznacza dowolną sekwencję, dowolną ilość znaków ls * ls *.* ls [A-B]* ls ??1
9) Polecenie echo i znaki cytowania Do wyświetlenia tekstu lub wartości zmiennych na ekranie służy polecenie echo. Polecenie to może być stosowane z kilkoma opcjami : -n - nie wyświetlaj nic i przejdź do następnej linii Powłoka Bash odróżnia i inaczej interpretuje trzy rodzaje znaków cytowania :
10) Zmiana powłoki logowania chsh nowa_powłoka Należy jednak pamiętać, że powłoka, którą chcemy wybrać musi być wyszczególniona w pliku /etc/shells
Każdy program uruchomiony z konsoli może zostać przeniesiony w tło co oznacza że będzie on widoczny jedynie jako działający proces zwalniając wiersz poleceń i umożliwiając dalszą pracę na konsoli. Aby uruchomić jakiś program lub polecenie w tle należy skorzystać ze znaku & i umieścić go na końcu nazwy programy lub polecenia : ps -aux > procesy & Istnieje również możliwość przeniesienia w tło już uruchomionego zadania, poprzez zatrzymanie go : [Ctrl]+[z] i przeniesienie w tło poleceniem : bg numer_zadania gdzie Aby wyświetlić listę z uruchomionymi lub zatrzymanymi zadaniami należy użyć polecenia : jobs Każde zadanie przeniesione w tło możemy z powrotem umieścić na pierwszym planie używając polecenia : fg numer_zadania
Przed uruchomieniem powłoki system sprawdza pliki konfiguracyjne shell'a z katalogu /etc/ i z katalogu macierzystego użytkownika. Główne pliki konfiguracyjne z katalogu /etc/ : bashrc , profile - podstawowe ustawienia powłoki .bash_profile , .bashrc - wykonywane podczas uruchamiania
powłoki
Skrypty powłoki są programami składającymi się z poleceń powłoki i poleceń
sterujących programem, takich jak : IF, FOR, REPEAT, WHILE itp. Aby nasz skrypt mógł zostać uruchomiony należy nadać mu prawo do uruchamiania poleceniem : chmod +x nazwa_skryptu Każdy skrypt powinien rozpoczynać się linijką :
Przykładowy skrypt może wyglądać następująco : #!/bin/bash
#!/bin/bash GRUPA MEDIA INFORMACYJNE & ADAM NAWARA |