Programowanie w Shellu (index)


Programowanie w Shellu (1) - wprowadzenie

ZADANIE 1.1

Zbadać system pomocy dla poleceń wbudowanych bash.


$ help                   (spis poleceń wbudowanych shella)
$ help cd                (pomoc dotycząca polecenia)
$ type cd                (pytanie o typ polecenia)
$ type cat               (pytanie o ścieżkę do pliku polecenia)

ZADANIE 1.2

Zbadać sposoby korzystania z opcji poleceń.


$ ls -l /home/adam
$ ls          -l          /home/adam  (białe znaki są ignorowane)
$ ls -l -a -h /home/adam
$ ls -lah /home/adam               (opcje można sklejać)
$ ls -i /home/adam                (pokaż numer inode)
$ ls --inode /home/adam          (istnieją długie zamienniki opcji)

ZADANIE 1.3

Zbadać sposoby korzystania ze znaków uogólniających dla nazw plików (* ? [] ~).


$ touch a1.txt a2.txt a3.txt a10.txt a11.txt a12.txt
                    (tworzymy puste pliki do ćwiczeń)
$ ls *.txt          (gwiazdka to cokolwiek, nawet nic)

$ ls */*.c          (pliki C we wszystkich podkatalogach)

$ ls a?.txt         (pytajnik to dokładnie jeden znak do dopasowania)
a1.txt a2.txt a3.txt

$ ls a[135].txt     (lista możliwosci, w sumie 6 znaków w nazwie pliku)
a1.txt a3.txt

$ ls a[!135]*       (zaprzeczenie: pliki bez 1, 3, 5 na drugim miejscu)
a2.txt

$ ls a[1-4].c       (zakres, będzie pasowało 1, 2, 3, 4 na drugim miejscu)

$ ls a[13-5].txt    (połączenie zakresu z listą możliwości)

$ ls ~/[a-z]*
         (pliki zaczynające się od małej litery w katalogu domowym)
$ echo ~/[a-z]*     (efekt jw bo pliki istnieją)

$ ls b*
ls: b*: Nie ma takiego pliku ani katalogu
                    (zwracany jest komunikat o błędzie)
$ echo b*
b*                  (zwracany jest podany wzorzec)

$ echo a*           (warto sprawdzić co pasuje do wzorca)
$ rm a*             (kasowanie plików po sprawdzeniu)

ZADANIE 1.4

Zbadać sposoby korzystania z mechanizmu rozwijania nawiasów w bash ({}).


$ echo napis{3,2,1}
napis3 napis2 napis1           (wynikiem są trzy napisy nieposortowane)

$ touch p?
    (tu będzie zmiana czasu powstania w dopasowanych plikach
    lub stworzenie dziwnego pliku "p?")

$ touch p{a,b,c,d}
    (wynikiem jest stworzenie czterech pustych plików pa, pb, pc, pd)

$ mkdir kat{1,2,3}
    (wynikiem jest stworzenie podkatalogów kat1, kat2, kat3)

$ echo kat[3-5]               (sprawdzenie dopasowania przed skasowaniem)
$ rmdir kat[3-5]

$ ls *{sz,cos}*               (pliki z "sz" lub "cos")
    (jest to połącznie rozwijania nawiasów i znaków uogólniających)

$ ls ~/*{.txt,.html}          (pliki TXT i HTML w katalogu domowym)

CHARAKTERYSTYKA SHELLA

Shell jest pełnym językiem programowania, który zawiera:

Shell systemu UNIX jest oryginalnym narzędziem szybkiego makietowania, uczącym tak fundamentalnych koncepcji jak modularność, wielokrotna używalność i rozwój przez kompozycję, zamiast kodowania.

Shell systemu UNIX jest jednym z oryginalnych języków czwartej generacji (4GL), który umożliwia szybkie i wydajne budowanie całych aplikacji. To co zajmuje jedną linię w programie shella, może zająć 10 lub więcej linii w C++ albo 100 linii w C.

Shell jest interpreterem, a nie kompilatorem, czyli znaczenie danego polecenia jest określane natychmiast w chwili wprowadzenia tego polecenia do systemu (pobierz - analizuj - wykonaj). Dzięki temu można siedzieć przed terminalem i pracowac interakcyjnie, otrzymując natychmiastową odpowiedź na każde polecenie.

Polecenia shella moga porozumiewać się ze sobą za pomocą prostego i spójnego sprzęgu (interfejsu), zwanego potokiem (pipe). Shell wykorzystuje organizowany przez UNIX system plików, który umożliwia grupowanie plików w rożnych katalogach różnego poziomu.

WYBRANE SHELLE SYSTEMU UNIX

SHELL (AUTOR)                                NAZWA PROGRAMU
Bourne Shell (S. R. Bourne)                           sh
Korn Shell (David Korn)                               ksh
C Shell (Bill Joy)                                    csh
Bash = Bourne Again Shell (Free Software Foundation)  bash

KIEDY UŻYWAĆ SHELLA

Aby zwiększyć produkcyjność, należy używać shella w każdym przypadku, w którym trzeba:

SKŁADNIA POLECENIA

Linia poleceń Shella pracującego w trybie interakcyjnym zwykle ma następujące składniki:

+-------+-----------+-------+----------+
| Monit | Polecenie | Opcja | Argument |
+-------+-----------+-------+----------+
  $       ls          -l      doc

Polecenie może być jednym z setek poleceń dostępnych dla shella lub własnym programem użytkownika napisanym w języku Shell. Opcje modyfikują działanie polecenia. Argumenty to obiekty, na które działa polecenie (zwykle są to pliki lub katalogi).

Białe znaki odstępu: spacja, tabulacja, znak nowego wiersza.

METAZNAKI

Shell zakłada, że w wierszu polecenia wszystko co nie jest poleceniem lub opcją, jest plikiem zwykłym, katalogiem lub plikiem specjalnym. Aby można było łatwiej posługiwać się nazwami plików i katalogów shell posiada metaznaki (* ? [] ~), które

Znając siłę metaznaków, należy ostrożnie z nich korzystać.


Programowanie w Shellu (index)