IP-MASQUERADE INDEX STRONA GŁÓWNA
SHELL

1)     Co to jest powłoka ?
2)     Zmienne
3)     Historia poleceń
4)     Aliasy
5)     Dowiązania stałe i symboliczne
6)     Przekierowania wejścia i wyjścia
7)     Łączenie poleceń za pomocą potoków
8)     Metaznaki
9)     Polecenie echo i znaki cytowania
10)   Zmiana powłoki logowania
11)   Zarządzanie zadaniami
12)   Pliki związane z powłoką
13)   Skrypty powłoki

 

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.
Każde polecenie wpisane z klawiatury zostaje zamienione przez powłokę na język zrozumiały dla jądra systemu, które może odpowiednio zareagować na to polecenie.

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.

 

2) Zmienne systemowe

Zmienne można podzielić na trzy grupy :

  • zmienne lokalne
  • zmienne globalne
  • zmienne specjalne
  • zmienne programowe

 

Zmienne lokalne określają konfigurację powłoki i są widoczne tylko dla shell'a dla którego zostały zdefiniowane.
Aby zobaczyć ustawienia zmiennych lokalnych możemy wydać polecenie :

set

Ważniejsze zmienne to :

BASH=/bin/bash - nazwa naszej powłoki
BASH_VERSION=1.14.7(1) - wersja naszej powłoki
COLUMNS=80 - liczba kolumn znaków na naszym ekranie
LINES=25 - liczba linii na ekranie
HOME=/home/student - nasz katalog domowy
LOGNAME=student - nasz login
OSTYPE=Linux - typ systemu
PATH=/usr/bin:/sbin:/bin:/usr/sbin - domyślna ścieżka dostępu
PS1=[\u@\h \W]\$ - ustawienie znaku zachęty
PWD=/home/student - nasz aktualny katalog roboczy
SHELL=/bin/bash - nazwa naszej powłoki
USERNAME=student - nazwa użytkownika, który jest aktualnie zalogowany w systemie
EDITOR=vim - nazwa domyślnego edytora tekstu
HISTFILE=/home/student/.bash_history - plik zawierający historię poleceń
MAIL=/var/spool/mail/$USER - określa plik, do którego dopisywane są listy przychodzące na nasze konto

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ść
np.:
export EDITOR=mcedit

 

Zmienne globalne są to zmienne widoczne w każdym podshellu.
Aby ustalić nową zmienną lub przypisać inną wartość starej należy użyć polecenia :

export EDITOR=mcedit

 

Zmienne specjalne są definiowane przez system i w przeciwieństwie do innych zmiennych nie można zmieniać ich wartości.
Najczęściej zmienne te wykorzystywane w skryptach do sterowania programem.

Przykładowe zmienne specjalne to :

$# - liczba parametrów przekazanych do programu
#? - kod zakończenia polecenia lub programu wywołanego z programu powłoki
$0 - pod zmienna tą kryje się nazwa uruchomionego programu
$1,$2 - kolejne parametry programu

 

Zmienne programowe to zmienne definiowane przez użytkownika w skryptach powłoki.
Definicja zmiennej programowej wygląda następująco :

nazwa_zmiennej=wartość
np.:
x=123
imie="Darek"

Pod zmienna programową można podstawić również wynik dowolnego polecenia , np.:
sciezka=`pwd`

Do zmiennej odwołujemy się poprzez podanie jej nazwy poprzedzonej znakiem $ , np.:
echo $imie

 

3) Historia poleceń

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
HISTSIZE - określa ile ostatnio wydanych poleceń ma być przechowywanych w pliku historii

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 :
!3
gdzie 3 jest trzecią komendą z listy wyświetlonej poleceniem history .

 

4) Aliasy

Bash daje nam ciekawy mechanizm aliasów umożliwiających zastępowanie złożonych poleceń krótszymi, łatwiejszymi do zapamiętania nazwami.
Aliasy tworzymy korzystając z polecenia alias , którego składnia jest następująca :

alias 'nasza_definicja'='polecenie'
np.:
alias 'p'='ps -aux'

Teraz poprzez wydanie polecenia p otrzymamy listę wszystkich procesów.
Zdefiniowane aliasy możemy zlikwidować poleceniem unalias :

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ść).
Dowiązanie stałe tworzymy poleceniem :

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).
Dowiązania symboliczne tworzymy poleceniem :

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 :
< dane na wejście
> dane z wyjścia

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
less - umożliwia przeglądanie dużych plików za pomocą klawiszy kursora.
Wynikiem tego połączenia jest możliwość obejrzenia zawartości dużego katalogu za pomocą klawiszy kursora.

 

8) Metaznaki

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
? - oznacza dowolny pojedynczy znak
[qwA1] - oznacza dowolny pojedynczy znak, wymieniony w nawiasach
[a-z] - oznacza dowolną małą literę
[A-G] - oznacza dowolną dużą literę od A do G
[a-zA-Z0-9] - oznacza dowolną małą lub dużą literę i dowolną cyfrę

Meta-znaki najczęściej wykorzystywane są do listowania zawartości katalogów :

ls *
wyświetla wszystkie pliki w katalogu z wyjątkiem zaczynających się od '.' kropki (są to pliki ukryte)

ls *.*
wyświetla wszystkie pliki zawierające w nazwie '.'

ls [A-B]*
wyświetla wszystkie pliki zaczynające się od A lub B

ls ??1
wyświetla pliki, których nazwa składa się z dwóch dowolnych liter i jedynki na końcu.

 

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
-e - włącz interpretację następujących komend występujących po \ :
   \a - dzwonek
   \b - kasuj ostatni znak
   \c - przechodź do następnej linii
   \n - nowa linia
   \t - tabulator
   \\ - znak \

Powłoka Bash odróżnia i inaczej interpretuje trzy rodzaje znaków cytowania :

  • cudzysłów " " - umożliwia wyświetlenie tekstu, zmiennej ($), zacytowanie polecenia (``) lub użycie znaków specjalnych występujących po \
  • apostrof ' ' - wszystko to co zawarte jest między apostrofami interpretowane jest jako zwykły tekst
  • odwrotny apostrof ` ` - przydaje się w sytuacji gdy chcemy podstawić lub zacytować jakieś polecenie

 

10) Zmiana powłoki logowania

Powłokę, którą system przydziela nam po zalogowaniu ustawia administrator podczas procesu tworzenia nowego użytkownika.
Jako zwykły użytkownik mamy jednak możliwość zmiany przydzielonej nam powłoki dzięki poleceniu:

chsh nowa_powłoka

Należy jednak pamiętać, że powłoka, którą chcemy wybrać musi być wyszczególniona w pliku  /etc/shells

 

11) Zarządzanie zadaniami

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
numer_zadania to liczba pojawiająca się w nawiasie kwadratowym przy nazwie zatrzymanego programu.

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

 

12) Pliki związane z powłoką

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
inputrc - konfiguracja edytora poleceń basha

Pliki konfiguracyjne z katalogu użytkownika :

.bash_profile , .bashrc - wykonywane podczas uruchamiania powłoki
.bash_logout - wykonywane podczas zamykania powłoki

 

13) Skrypty 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.
Skrypty umożliwiają pobranie danych od użytkownika lub z pliku, przetworzenie ich i wyświetlenie wyniku na ekranie monitora lub zapisanie go na dowolnym urządzeniu.

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ą :


#!/bin/bash
Zapis ten oznacza to, że do przetworzenie skryptu zostanie użyta powłoka bash.

Przykładowy skrypt może wyglądać następująco :

#!/bin/bash
# to jest tylko komentarz
echo 'skrypt wyswietla aktualny katalog roboczy'
echo -e "biezacy katalog :\n\a`pwd`"

 

#!/bin/bash
echo "informacje o uruchomionym skrypcie"
echo "nazwa skryptu : $0"
echo "ilosc parametrow : $#"
echo "pierwszy parametr to : $1"
echo "drugi parametr to : $2"
echo -e "zestawienie wszytkich parametrow :\n$*"

GRUPA MEDIA INFORMACYJNE & ADAM NAWARA