Programowanie w Shellu (index)
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)
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)
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)
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)
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.
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
Aby zwiększyć produkcyjność, należy używać shella w każdym przypadku, w którym trzeba:
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.
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ć.