background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  1 

 

Linux

Podstawy używania systemu

Spis  Treści

           Strona       

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  2 

                     
                    Rozdział   1  : Wprowadzenie      
                    Rozdział   2  :   Sesja
                                           2.1 Zalogowanie
                                           2.2 Pierwsze polecenia
                                           2.3 Użycie klawiatury
                                           2.4  Ćwiczenia

Rozdział   3  :   Pliki  i Katalogi

     3.1    Polecenia zarządzania plikami
     3.2    Polecenia zarządzające katalogami
     3.3    Ćwiczenia

           

Rozdział   4  :   Bash 

                                          4.1  Znaki uogólniające
                                          4.2 Protekcja znaków uogólniających

 4.3 Zgrupowanie poleceń

                                          4.4 Przkierowania   

 4.5 Potoki                                       

                                          4.6  Ćwiczenia

Rozdział   5  :   Prawa

     5.1    Zarządzanie prawami
     5.2    Prawa pliku
     5.3    Modyfikacja praw pliku (1)
     5.4    Modyfikacja praw pliku (2)
     5.5    Prawa katalogów
     5.6    Zarządzanie grupami
     5.7    Ćwiczenia

                          

Rozdział   6 :   Filtry – do czego służą ?

      
      6.1   Ćwiczenia

    

Rozdział   7  :   Zarządzanie procesami

                                      7.1   Skrypty – pierwsze kroki w programowaniu
                                          7.1.1 Przekazywanie parametrów do skryptu
                                          7.1.2 Struktury kontrolne powłoki Bash
                                      7.2  „background”/ „foreground”

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  3 

                                             (operacja w tle/operacja pierwszoplanowa)
                                          7.3   Polecenia   
                                          7.3.1 polecenie  -  ps
                                          7.3.2 polecenie  -  kill
                                          7.3.3 polecenie  -  jobs
                                          
                                      7.4   Zarządzanie „pracami’’
                                      7.5   Ćwiczenia 
 

Rozdział   8  :   Wyrażenia regularne
                  8.1   Polecenie  find

                                      8.2   Polecenie grep z wyrażeniami regularnymi 
                                      8.3    edytor sed
                                      

 

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  4 

Rozdział  1    :     Wprowadzenie

We Francji, Meksyku, Anglii, Peru nauczyciele, uczniowie i ich rodzice, wspólnie zastanawiają się i
próbują   rozwiązać   jeden   z   podstawowych   dylematów   społeczeństwa   informacyjnego:   jak   uczyć
informatyki   wiedząc,   że   narzędzia   informatyczne   aktualnie   używane     mogą   –   biorąc   pod   uwagę
błyskawiczne   tempo   zmian   technologicznych   –   być   bezużyteczne   po   skończeniu   szkoły   przez
dzisiejszych licealistów? Czy w takim razie uczyć raczej obsługiwania oprogramowań, czy zrozumienia
jak one działają? Czy w procesie nauczania korzystać z narzędzi informatycznych firmy Microsoft które
dostarczane są użytkownikowi w formie uniemożliwiającej ich przeczytanie i zrozumienie? Pytań jest
wiele i  – co warto podkreślić- niektóre państwa udzieliły na nie już  odpowiedzi.  W   1997 r. rząd
meksykański wprowadza radykalną reformę systemu nauczania informatyki instalując w 140 000 szkół
system operacyjny Linux, który – w przeciwieństwie do narzędzi firmy Microsoft – umożliwia czytanie
i   zrozumienie   oprogramowań   z   których   jest   zbudowany
.   Finlandia,   której   radykalna   reforma
ekonomiczna sprzed kilku lat, polegała głownie na całkowitym zreorganizowaniu  systemu edukacji w
szczególności systemu nauczania informatyki. Efekty są znane. Boom gospodarczy. Francja w której
liczne   asocjacje   skupiające   rodziców   licealistów   i   wybitnych   informatyków   wymusiły   na
wszechpotężnym Ministerstwie Edukacji Narodowej  wprowadzenie do szkół nauki Linuxa. A Polska?

Dwa kroki do tyłu
W   2002   PWN   wydał     podręcznik   do   przedmiotu   –   technologia   informacyjna   –   przeznaczony   dla
uczniów liceów ogólnokształcących. Podręcznik ‘’Technologia Informacyjna’’ jest znakomity, obiema
rękoma podpisuje się pod stwierdzeniami reklamującymi książkę: ‘’prosty, przystępny język, itd ’’ tylko
jego tytuł powinien brzmieć ‘’Technologia Informacyjna Windowsa’’. Przyznają to zresztą sami autorzy
pisząc   na   str   11   ‘’W   podręczniku,   omawiając   konkretne   bloki   tematyczne,   wykorzystano   głównie
platformę systemową Windows’’. Znajduje się w nim także krótki 10-stronicowy rozdział poświęcony
Linuxowi, na którego poznanie autorzy proponują poświęcić 3 godziny dodając:’’…poznanie systemu
Linux     jest   bez   wątpienia   pożyteczne,   jednak   nie   ma   kluczowego   znaczenia   dla   osiągnięcia   celów
zawartych w podstawie programowej przedmiotu technologia informacyjna’’. Dlaczego?   Dlatego, że
system Linux  umożliwia zrozumienie działania narzędzi informatycznych, natomiast celem przedmiotu
technologia   informacyjna   jest  nauka   ich   obsługiwania.  Czy   jest   jednak   możliwe   w   informatyce
automatyczne oddzielenie wiedzy od umiejętności ?
Podam dwie definicje Internetu: pierwsza jest umieszczona w podręczniku na str 79 : cytuje  ‘’…Ważne,
żebyś rozumiał, że istotą Internetu stanowi infrastruktura sieciowa, /../ oraz zbiór zasad normujących
jego   działanie’’   i   porównajmy  ją   z   określeniem   Internetu   jakie   znajdujemy  w   książce   S.Lema     pt.
‘’Tajemnica chińskiego pokoju’’ : ‘’Dopiero niedawno dowiedziałem się, że zaczątek  Internetu jako
sieci   komputerowej   bez   ośrodkowej,   czyli   takim   sposobem   rozgałęzionej,   że   nie   posiada   ona
żadnego centrum
  wymyślili fachowcy Pentagonu..’’. Wybitny pisarz w krótkim zdaniu, przedstawił
podstawową   zasadę   funkcjonowania   cyberprzestrzeni.   Natomiast   z   definicji   umieszczonej   w
podręczniku informatyki nie dowiadujemy się w nic, bo cóż to znaczy, że ‘’istotą Internetu stanowi
infrastruktura   sieciowa’’,   określenie   to,   przypomina     sławne   marksistowskie   ‘’istota   człowieka   to
całokształt stosunków społecznych’’ i dziwić się należy, że autorzy  konstruują definicje używając pojęć

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  5 

i metod z epoki zdawałoby się dawno minionej i zapomnianej. Przytoczone przykłady – a tak naprawdę
cała   metodologia,   na   której   oparty  jest   podręcznik   -   stawiają   na   ostrzu   noża   podstawowy  problem
związany   z   nauczaniem   informatyki   :   czy   możliwe   jest   skuteczne   obsługiwanie   narzędzi
informatycznych   bez   jednoczesnego   zrozumienia   mechanizmów   ich     działania?   Czy  w   XXI  wieku
dychotomiczne rozdzielenie  wiedzy i umiejętności nie jest sprzeczne z zasadami regulującymi dużą
część rynku pracy? Na czym rzeczywiście polega praca w społeczeństwie informacyjnym?

Podstawowe prawa elektronicznej ekonomi 
Przeżywamy   prawdziwą   eksplozje   informacji.   Według   ankiety   przeprowadzonej   przez   uniwersytet
Berkley   w   2001   roku,   poprzez   Internet   możemy   dotrzeć   do   550   miliardów   dokumentów.   Stronic
internetowych  przybywa  codziennie   7.3   mln.   Produkcja   dobowa   e-mail     jest   500   razy  większa   od
produkcji stronic. Przedsiębiorstwa mają dostęp do różnych – praktycznie – niepoliczalnych danych do
których   szybki   dostęp   jest   warunkiem   niezbędnym   ich   funkcjonowania   i   przetrwania   w   stale
zmieniającym   się   otoczeniu   ekonomicznym.   Elektroniczna   ekonomia   polega   na   umiejętnym
wyszukiwaniu   danych   potrzebnych   przedsiębiorstwu   i   na   ich   jak   najszybszym  przetworzeniu,
organizowaniu i uporządkowaniu. 
Jaki typ pracownika jest do tego typu zajęć potrzebny? Przede wszystkim musi on być wykształcony i –
co istotniejsze – musi być zdolny do podejmowania samodzielnych inicjatyw i decyzji. Istnienie małych i
dużych przedsiębiorstw zależy – o wiele bardziej niż w przeszłości – od stopnia autonomii ich personelu.
Znikają   hierarchiczne   struktury,   upowszechnia   się   coraz   bardziej   horyzontalny   typ   relacji
organizacyjnych,  w   których   zakres   odpowiedzialności   każdego   pracownika   wzrasta   niepomiernie   w
porównaniu   z   zasadami   pracy  obowiązującymi   w   przedsiębiorstwie   XX   wieku.   W   tych  warunkach
wartość pracownika nie jest wyznaczona tylko przez studia wyższe, lecz także przez typ otrzymanej w
szkole   edukacji
.   W   elektronicznej   ekonomi   pracownik   musi   umieć   przystosować   się   do   ciągle
zmieniającego   się   kontekstu   ekonomicznego   i   technologicznego,   co   wymaga   stałego   podnoszenia
kwalifikacji.   Warunkiem   skutecznej   pracy   jest   szybkość   z   jaką   analizuje   się   i   absorbuje   zmianę,
ponieważ zmiana jest cechą charakterystyczną naszej cywilizacji. Paradoksalnie, doskonała znajomość i
ciągłe używanie tylko jednego systemu operacyjnego utrudnia – a czasami wręcz uniemożliwia – naukę
innych opartych na odmiennych zasadach oprogramowań. Ekonomiści nazywają to zjawisko  blokadą
innowacyjną.  
Dlatego  pluralizm metodologiczny  w nauczaniu informatyki jest konieczny właśnie z
punktu widzenia praw rządzących ekonomią elektroniczną. Szkoła powinna uczyć uczenia się.  Ciągła
nauka
 – to jest aksjomat XXI wieku - stała się częścią naszego życia  zawodowego i codziennego. W
opinii   ekonomistów,   to   system   edukacyjny   decyduje   o   miejscu   zapóźnionych   cywilizacyjnie
społeczeństw – takich jak Polska – w światowym podziale pracy. Czy jest jednak możliwe – biorąc pod
uwagę ilość godzin przeznaczoną na naukę informatyki w szkole – zaznajomienie uczniów z dwoma
systemami   operacyjnymi,   co   oprócz   ewidentnie   korzystnej   dla   pedagogiki   wykładu   różnorodności
metodologicznej, umożliwiłoby również praktyczne zrozumienie przez młodzież zasady konkurencji na
której oparta jest współczesna ekonomia? Byłby to niewątpliwie eksperyment, ale nauczanie informatyki
jest ciągłym eksperymentem. Konkurencja informatyczna – gdyż używając różnych systemów uczniowie
porównują je i oceniają – w szkole jest ważna także z innego powodu: gwarantowałaby niezależność
programów szkolnych od strategi marketingowej przedsiębiorstw produkujących oprogramowania oparte
na prawie własności. Powszechnie wiadomo, że przedsiębiorstwa te traktują systemy edukacyjne jako
doskonałe narzędzia do zaznajamiania i – co gorsza – do przyzwyczajania uczniów do używania w
przyszłości   swoich   produktów.   Jeżeli   uważamy,   że   celem   nauki   informatyki   w   szkole   nie   jest
wychowywanie   konsumentów   używających  automatycznie   –   czyli   bezmyślnie  –   oprogramowań
potężnych   firm   takich   jak   Microsoft,   lecz   kształcenie   podstaw   metodologicznych   informatyki   i
nabywania umiejętności obsługiwania narzędzi informatycznych zbudowanych według różnorodnych
zasad, 
to wniosek wydaje się być oczywisty.

Opodatkowanie przyszłości

 Dlaczego w takim razie autorzy podręcznika ‘’Technologia Informacyjna’’ prezentują tylko narzędzia
informatyczne firmy Microsoft ? Odpowiedź – jaką można zrekonstruować na podstawie lektury książki

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  6 

jest następująca : system Windows jest powszechnie używany , łatwy do nauczenia i jego znajomość jest
podstawowym   warunkiem   znalezienia   pracy.   Argumentacja   ta   oparta   jest   jednak   na   fałszywych
przesłankach. Przeanalizujmy je po kolei:
1.Autorzy podręcznika podkreślają, że system Windows jest powszechnie używany, ponieważ według
zgodnej opinii jego użytkowników jest on łatwy do nauczenia. Otóż w rozumowaniu tym przesłanka z
konkluzją powinny zamienić się miejscami
  (jest on uważany za łatwy ponieważ jest powszechnie
używany). Aby stwierdzić, że coś jest łatwiejsze czy trudniejsze musimy dysponować jakąkolwiek skalą
porównawczą. W wypadku systemów operacyjnych skala taka  – z przyczyn historycznych -  nie istnieje.
2. Autorzy   są zwolennikami stanowiska, które można przedstawić w sposób następujący: co istnieje
teraz, będzie także trwało w przyszłości. Otóż jest to założenie – jeżeli weźmie się pod uwagę historie
rozwoju technologi informatycznych - fałszywe. W latach 70-80 supremacja IBM, była przygniatająca,
jednak kierownictwo firmy zlekceważyło pojawienie się na rynku komputera domowego i przegrało
konkurencje z Microsoft. Dzisiaj role się odwróciły. IBM wykorzystuje system Linux do budowania
nowych narzędzi informatycznych mogących zagrozić monopolowi Microsoft.. 
3.   Podręcznik   ‘’Technologia   Informacyjna’’   prezentuje   wyłącznie   narzędzia   informatyczne   firmy
Microsoft, ponieważ dobra – wg jego autorów - ich znajomość ułatwi absolwentom szkół znalezienie
pracy. Błąd, za który zapłaci całe polskie społeczeństwo. Za kilka lat, albo pracodawca będzie zmuszony
wydać pieniądze na przekwalifikowanie pracowników, albo pracobiorca będzie sam musiał nauczyć się
innych   wymaganych   na   rynku   pracy  narzędzi   informatycznych.  Jednokierunkowość   w   nauczaniu
informatyki jest formą dodatkowego opodatkowania społeczeństwa przez państwo.

*

Czy   jest   jakiekolwiek   wyjście   z   sytuacji   –   biorąc   pod   uwagę   -   że   tylko   kilka   procent   nauczycieli
informatyki ukończyła wyższe studia informatyczne, reszta natomiast uczęszczała na różnego rodzaju
studia   podyplomowe?   Myślę,   że   sposobem   na   poprawę   nauczania   informatyki   jest  stworzenie
oprogramowania   edukacyjnego   w   Internecie   umożliwiającego   naukę   Linuxa.   Internetowe
Studium Wolnego Oprogramowania (ISWO) jest właśnie takim narzędziem stworzonym przez
informatyków związanych z ruchem „wolnego oprogramowania” oraz partią polityczną Prawo i
Sprawiedliwość.

     

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  7 

     
       

Rozdział   2   :    Sesja

2.1 Zalogowanie

Linux – jest systemem wielozadaniowym i wielodostępnym. Wynika z tego, że może z niego korzystać
jednocześnie wielu użytkowników i każdy z nich może uruchomić wiele programów. Aby rozpocząć
prace, użytkownik musi się zalogować do systemu podając swoją nazwę (w tym celu trzeba stworzyć
konto użytkownika) oraz przypisane mu hasło, umożliwiające zalogowanie się do systemu. Dodajmy, że
system identyfikuje  każdego użytkownika na  podstawie  niepowtarzalnego numeru UID. Mechanizm
logowania możemy przedstawić w następujący sposób.
   

Login :                           $  who                                                 Login :

                                            

              $  date                     $ exit       

           Password :                      $  cal                                                   Password

   

3.2 Pierwsze polecenia

date           

    wyświetla na ekranie datę i aktualną godzinę   

who           

    wyświetla liste zalogowanych użytkowników

who am i   

     kim jestem ?

cal             

    wyświetla kalendarz

uname       

    wyświetla nazwę i atrybuty systemu operacyjnego

passwd      

    zmiana hasła

echo          

    wyświetla na ekranie argument polecenia

Wiersz   poleceń     -   czyli   to   co   znajduje   się   za   znakiem   zachęty     „#”     lub     „$”   służy   do
wprowadzania poleceń. Co rozumiemy pod wyrażeniem „wprowadzanie poleceń” ? Rozumiemy
przez to wystukanie   (wpisanie jego treści) polecenia i następnie naciśnięcia klawisza  [Enter].
Polecenie składa się z następujących elementów  :

nazwa polecenia       opcje        argumenty

Opcje – nielicznymi wyjątkami – poprzedzone są znakiem minusa  :  „-”. Trzeba uważać gdyż
pomiędzy literą opcji i  „-”  nie może być spacji. Argumentami są zazwyczaj nazwa lub nazwy
plików.

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  8 

Przykłady zastosowania  

uname 
Linux

uname –a

 Linux goubet 1.2.1 #3 Sun Mar. 19 12:19:15 CST 1995 I 486

who

root   tty2   May  15  15:41
piotr  tty1   May  15  15:14

who am i

piotr  tty1   May  15  15:14

date  

Fri May  9  15:36   GMT-0100  2001

$ cal  8    1953
    August  1953
S   M  Tu  W  TH  F  S 
                              1
2   3   4   5   6   7   8 
9  1 0  11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

$  passwd

Old  passwd :
New passwd :
Reenter password  :

Linux, w przeciwieństwie do DOS-a, rozróżnia małe i duże litery, dlatego też w wielu sytuacjach może
nie być obojętne, czy naciskając konkretny klawisz wprowadzamy kod małej, czy dużej litery. Np zapisy
„a” i  „A” oznaczają  fizyczne ten sam  klawisz  na klawiaturze  (chociaż  by uzyskać na  ekranie „A”
musimy wystukać tą literę przyciskając jednocześnie klawisz z napisem „Shift”). Zapis „a” ma wartość
w kodzie ASCII = 97 natomiast zapis „A” ma w tym samym kodzie równowartość 65.

2.3 Użycie klawiatury

Użycie klawiatury komputera jest proste i (z nielicznymi wyjątkami) dość klasyczne  :

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  9 

Klawisz    [Enter]  zatwierdza wykonanie polecenia

Kombinacja – czyli jednoczesne nawiśnięcia klawisza  [Ctrl]    i    [c]   przerywa wykonanie 
Polecenia

Kombinacja   [Ctrl]  i  [d]  kończy wystukiwanie danych, kiedy używamy  takich poleceń jak 
write które zmuszają użytkownika do wystukiwania danych na ekranie.

Kombinacja  [Ctrl]   i   [s]   przerywa wyświetlanie listingu na ekranie

Kombinacja  [Ctrl]  i  [q]    umożliwia kontynuowanie wyświetlania listingu na ekranie

Kombinacja  [Ctrl]   i  [z]    przerywa egzekucje polecenia

Kombinacja  [Ctrl]  i  [u]    wymazuje linię poleceń, którą właśnie zapełniamy

2.5 Ćwiczenia

Ćwiczenie   1.

Wyświetl na ekranie kalendarz roku 1997.

Ćwiczenie   2.

Wyświetl kalendarz miesiąca września z roku 1752 i użyj polecenia „man” do objaśnienia informacji
otrzymanych na ekranie.

Ćwiczenie   3.

Wyświetl date w formie dd-mm-rr (przykład :  05-02-95)

Ćwiczenie   4.

Objaśnij funkcje polecenie „touch”.

Ćwiczenie   5.

Przed rozpoczęciem następnego rozdziału opuść system, a następnie zaloguj się powtórnie

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  10 

Rozdział   3   :    Pliki i katalogi

 

System plików Linuksa tworzy jedno spójne i nierozdzielne drzewo (dokładniej w kształcie

odwróconego drzewa). Struktura plików porządkuje sposób w jaki pliki przechowywane są w pamięci  
 masowej. Pliki uporządkowane są w katalogach. Każdy z nich może zawierać dowolna liczbę
podkatalogów, z których każdy może zawierać  pliki. Przedstawione poniżej katalogi znajdują się w
katalogu głównym „/”. Linux dzieli pliki na trzy kategorie  

1. katalogi, które zawierają pliki.

2. pliki specjalne które nie zawierają danych (np. plik urządzeń)

3. pliki regularne (normalne), które zawierają dane, tekst itd

                                         Skrócony schemat organizacji katalogów

                                                                       root
                                                                          /
                          -------------------------------------------------------------------------------
                          |                             |                          |                        |                       |     
                     home                       dev                      usr                     tmp                 etc
                         |                              |                          |                        |                       |    
               ---------------                                     ----------------                            -----------------
                |                 |                                      |                   |                             |                    |
          pierre          cathty                              bin                lib                     passwd         group
               |                                                        |                    |
           .profile                                                vi                 lp

  Przedstawimy teraz to co niektóre katalogi zawierają – stanie sie to bardziej zrozumiałe po opanowaniu
całości   materiału.

   /bin    

 katalog zawierający tzw pliki wykonywalne, które mogą być egzekwowane przez 

                  zwykłych użytkowników

  /tmp   

 katalog zawierający pliki tymczasowe

 /etc     

 katalog zawierający pliki dzięki którym możemy skonfigurować system Linux

  /usr    

 katalog zawierający wszystkie aplikacja użytkowe

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  11 

3.3 Atrybuty plików

             $ ls  -l   plika

-rwxr-x---    1    piotr    nauka    265    maj 17  14:45  plika 

            !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! nazwa pliku  (8)
            !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!data i godzina ostatniej modyfikacji pliku (7)

  

          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! objętość (6)

            !!!!!!!!!!!!!!!!!!!!!!!!!!! grupa (5)
            !!!!!!!!!!!!!!!!! właściciel    (4)
            !!!!!!!!!!!!!!!! liczba łączy  (3)
            !!!!!!!!!!!! prawa   (2)
            ! type pliku „-” kreska oznacza plik normalny „d” plik jest katalogiem.   (1)

Podstawowe atrybuty plików mogą być wyświetlone przy pomocy polecenia   „ls” z dodatkiem opcji
„-l”, która oznacza „długie” (long).

1. Pierwsza zona   licząca tylko jeden znak „ –„ wskazuje typ pliku. Symbole najczęściej

spotykane  są następujące :

1.

 

dla oznaczenia plików zwykłych

2.  dla oznaczenia katalogów
3.  dla oznaczenia plików specjalnych (urządzenia znakowe)
4. b  dla oznaczenia plików specjalnych przypisanych  (urządzenia blokowe)
5.  dla oznaczenia łączy symbolicznych

(2) Druga zona  („rwxrx---”) składająca się z 9 znaków, 

Przykłady :

-rwxr-xr-x      1     piotr   oracle       3432       Maj  14 2002   15:51    plikb

Plik regularny   plikb liczący 3432 octet, ostatnia jego zmiana miała miejsce 14 maja, właścicielem pliku
jest piotr, który należy do grupy oracle

drwxr-xr-x     2     piotr    windows      512   maj  4  2001  14:14  bin

Katalog  „bin’’ liczący 512 octet , ostatnia jego zmiana miała miejsce 4 maja 2001, właścicielem jego
jest piotr, który należy do grupy windows
     

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  12 

Wzór linii poleceń

  
Pierwsze słowo linii poleceń jest zawsze poleceniem.

Polecenia do zarządzania plikami

Polecenie   ls

Wzór ogólny                  -   

ls     opcja      nazwa pliku

                                            opcje podstawowe

                                           -l    

  wyświetla cechy pliku

                                           -a   

  wyświetla wszystkie pliki

                                           -b   

  wyświetla znaki, które nie mogą być wydrukowane

                                           -R   

  wyświetla zawartość drzewa katalogowego

                    -p    

  rozróżnia katalogi

                                           -s    

   wyświetla liczbę bloków

Polecenie   ls    wyświetla nazwy plików i zgodnie z zaznaczoną opcją, niektóre ich atrybuty. Polecenie
ls w formie najprostszej (to znaczy bez żadnej opcji ani nazwy pliku) 

Przykłady  :      (zakładamy, że znajdujemy się w katalogu domowym  /home/piotr
 - lista nazw plików, które znajdują się w katalog

 $ ls

 - najważniejsze cechy pliku mbox

 $ ls   -l   mbox

 - najważniejsze cechy plików znajdujących się w katalogu /home

 $ ls  -l  /home

- wyróżnic nazwy katalogów w wyświetlonych plikach

 $ ls  -p

- liczba bloków zajętych przez pliki

 $ ls –s

- wyświetlenie nazw wszystkich plików znajdujących się w katalogu

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  13 

 $ ls –a

- zobaczyć czy nazwa pliku nie zawiera tzw „znaku kontroli”

 $ cat plik

cat : cannot open plik

 $ ls -b  p*

p\030lik    f45      f451      f847

- wyświetlenie całości drzewa katalogowego

 $ ls  -R  systeme

- wyświetlenie cech katalogu   /home

 $ ls  -ld    /home

Kopia pliku – jego zniszczenie – zmiana nazwy pliku.

Polecenie  cp  stosuje się do skopiowania pliku do pliku o innej nazwie lub w inne miejsce, a także do
skopiowania wielu plików do katalogu.
 
Polecenie  rm  służy do usuwania plików i katalogów 

Polecenie   mv służy do zmiany nazwy lub przeniesienia pliku (plików)

Przykłady  : 

  $  ls   -l  f*

  -rw-r--r--   1     piotr      sers    52    Maj   12  2002 17:41    fin1

    (wyświetlenie plików, których nazwy zaczynają się od litery  „f”)

  $  cp  fin1   fin2              (utworzenie pliku  fin2 

 czyli skopiowanie pliku  fin1 do pliku  fin2)

  $  cp /etc/passwd   fin2   

  $  ls   -l   f*
  
   -rw-r--r--   1     piotr      users    52    Maj   12  2002 17:41    fin1
   -rw-r--r--   1     piotr      users    692    Maj   12  2002 17:58    fin2

  $  cp  -i  fin1  fin2

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  14 

   cp  :   overwrite  ‘f2’ ?y  

 ,,y’’ oznacz ,,tak’’  to znaczy, że zamieniliśmy zawartość pliku fin2, który

znowu jest identyczny z plikiem fin1

  $ chmod  a=r  fin2     

 polecenie chmod patrz Aneks lub rozdział 3

  $  ls  -l  f*
    
     -rw-r--r--   1     piotr      users    52    Maj   12  2002 17:41    fin1
     -r--r--r--   1     piotr      users    52    Maj   12  2002 17:41    fin2
    (czy widzisz zmianę w definicji plików  fin1  fin2 ? jeśli tak to jaki ?)

  $   cp  fin1   fin2
  cp : cannot cerat regular  file ,,fin2’’ : Permission denied
  (nie można zmienić pliku protegowanego)

  $  cp -f  fin1  fin2

Polecenie  cat

  
 Polecenie   cat  (catenate)  umożliwia wyświetlenie zawartości pliku na ekranie. Może być także użyte
do złączenia (konkatenacji) wielu plików.

Polecenie    file    
 
Polecenie file wyświetla typ zawartości pliku. 

Przykłady  :

file  /etc/passwd
/etc/passwd : ascii text 

$ file /usr/bin
/usr/bin: directory

$ file  /usr/bin/banner
/usr/bin/banner: i386 executable

3.1  Polecenia do zarządzania katalogami

    *  pwd          

               wyświetla katalog (bieżącego) w którym aktualnie pracujemy

    *  cd             

               służy do przemieszczania się w drzewie katalogów

    *  ls              

               wyświetla zawartość katalogu

    *  ls  -R        

               wyświetla pliki drzewa katalogowego

    *  mkdir      

               tworzy katalog

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  15 

    *  rmdir       

              usuwa katalog

    *  rm –r       

              usuwa drzewo katalogowe

    *  cp             

              kopiuje pliki do katalogu 

   
        cp –r        

              wykonuje kopie drzewa katalogowego

    *  du            

              wyświetla objętość katalogu bieżącego

    *  find         

               poszukuje plików w drzewie katalogowym

Polecenie  pwd  („print working directory”) wyświetla ścieżkę dostępu do katalogu bieżącego.

Polecenie   cd 

                                                                        /                                                          
                                 --------------------------------------------------------------      
                                 |                                                                                 |
                              usr                                                                          home
                                 |                                                                                 |
                --------------------------                                                                |                            
                |                                 |                                                           pierre    # znajdujesz się tutaj
             bin                             lib                                                              |
                                                                                                -----------------------------                 
                                                                                                |                                      |
                                                                                             bin                                   src

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  16 

Polecenie  cd  („Change Directory”) pozwala zmienić katalog. Można przejść do innego katalogu
używając adresu bezwzględnego np  cd  /home/piotr   lub stosując znaki skrótowe. Egzekucja polecenie
cd bez argumentu, powoduje powrót do twojego katalogu domowego.

Przykłady  :

$  pwd

/home/piotr

$  cd src

$  pwd   

/home/piotr/src

$  cd

$  pwd

/home/piotr

3.2   Ćwiczenia

Ćwiczenie 1.

W katalogu domowym utwórz katalog o nazwie – atelier -, a w nim utwórz dwa podkatalogi
o nazwach : seria_1 i seria_2

Ćwiczenie 2.

Wyświetl strukturę drzewa katalogowego co dopiero utworzonego używając dwóch różnych poleceń.

Ćwiczenie 3.

Wyświetl, w swoim katalogu domowym, listę plików, używając dwóch różnych poleceń, które
umożliwią rozpoznanie katalogów.

Ćwiczenie 4.

Wykonaj kopie pliku  /etc/passwd zmieniając jego nazwę na plik_pass.

Ćwiczenie 5.

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  17 

Zmień nazwę pliku plik_pass na password

Ćwiczenie 6.

Przenieś plik password do katalogu seria_1 (przypominam,  że jest on podkatalogiem katalogu atelier)

Ćwiczenie 7.

Wykonaj kopie plików /etc/passwd i /etc/group do katalogu seria_2 (przypominam, że jest on
podkatalogiem katalogu – atelier) znajdując się

a) w katalogu /etc.
b) w katalogu seria_2
c) w obojętnie jakim katalogu

Ćwiczenie 8.

Wyselekcjonuj podkatalog seria_1 jaka katalog pracy i wyświetl – znajdując się w nim – pliki znajdujące
się w podkatalogu seria_2

Ćwiczenie 9.

Aby utworzyć plik o nazwie „dokument” wykonaj następujące polecenie
$ touch dokument
Wyświetl jego atrybuty używając poleceń  :    ls    i     file

Ćwiczenie 10.

Znajdujesz się w katalogu domowym – wyświetl atrybuty, w tym także wielkość liczoną w blokach,
wszystkich plików, także tych, których nazwa zaczyna się od „.”

Ćwiczenie 11.

Wyświetl atrybuty twojego katalogu domowego.

Ćwiczenie12.

Jakie znasz polecenia które umożliwiają porównanie plików ? Użyj jednego z nich do porównania  pliku
zawierającego twój profil użytkownika z plikiem profilu innego użytkownika.

Ćwiczenie 13.

Utwórz w swoim katalogu domowym, katalog o nazwie „przykłady” i skopiuj do niego drzewo
katalogowe

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  18 

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  19 

Rozdział   4     :     Bash

Po zalogowaniu się każdy użytkownik współpracuje z systemem   operacyjnym przy pomocy poleceń,
które   zanim   zostaną   wyegzekwowane   są   interpretowane   przez   tzw   interpretator   poleceń,   który   w
wypadku Linuxa nazywa się bash. Interpreter poleceń jest pośrednikiem (nazwa informatyczna interfejs)
między użytkownikiem i systemem operacyjnym i jego rolą jest tłumaczenie poleceń wystukiwanych
przez użytkownika tak aby system operacyjny je zrozumiał. Bash posiada do swojej dyspozycji język
programowania,   którego   zasady   będziemy   stopniowo   poznawali   i   który   różni   się   zasadniczo   od
klasycznych języków informatycznych takich jak Pascal, Java czy C++. Na czym ta różnica polega  ?
Fazy   powstawania   program   informatycznego   pisanego     w   klasycznych   językach   programowania
(wymienionych powyżej) można przedstawić w następujący sposób :

Algorytm                jest precyzyjnym opisem operacji, które tworzą program, pisany jest
                                w języku macierzystym twórcy programu np polskim, francuskim ,
                                algorytm można porównać do scenariusza lub treści książki               
Kod źródłowy        jest zapisem algorytmu w języku zrozumiałym przez komputer, kod
                                źródłowy jest formą w jakiej wyrażono algorytm          
kompilacja       jest automatycznym tłumaczeniem kodu źródłowego na język macierzysty
                                komputera który składa się tylko z dwóch znaków : 0 i 1, tylko program
                              skompilowany może być egzekwowany system operacyjny       
Dekompilacja         polega na odtworzeniu kodu źródłowego – lub algorytmu – na   
                                podstawie kodu bitowego        

 W bashu mamy do czynienia tylko z dwoma fazami :

1.   Pisanie algorytmu

(1) Pisanie kodu źródłowego

Czyli program pisany w bashu nie podlega fazie kompilacji i dlatego bash nazywamy interpretowalnym
językiem   programowania.  Programy   napisane   w   bashu   nazywamy  skryptami.  W   tym   momencie
naszego wykładu wprowadzimy – centralne do zrozumieniu funkcjonowania systemu Linux – pojęcie
procesu. Proces powstaje w momencie egzekucji programu (ale nie każdego o czym ponżej). Powstanie
procesu   odpowiada   egzekucji   pliku   umieszczonego   w   pamieci   centralnej.   Każdy   użytkownik   w
momencie logowania się do systemu prowokuje powstanie procesu. Ten proces, zdefiniowany w pliku /
etc/passwd, jest interpreterem poleceń basha.
Każdy proces ma przypisany numer, nazywany  PID (Process Identifier). Proces interpretera poleceń
będąc   wylansowany   w   momencie   zalogowania   się   użytkownika   umożliwia   wykonywanie   innych
poleceń. W tym wypadku, proces odpowiadający egzekucji polecenia X nazywamy  procesem syna,
natomiast proces interpretatora poleceń, procesem rodzicielskim. 

Polecenia w Linuksie dzielą sie na:

1.  polecenia wewnętrzne, które są częścia integralną basha:   egzekucja   polecenie wewnętrzne nie
prowokuje powstania procesu w pamięci komputera 

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  20 

2.  polecenia zewnętrzne ,  które są niezależne od basha i które znajdują sie w różnych katalogach
(/usr/sbin, /sbin,...), egzekucja każdego polecenia zewnętrznego prowokuje powstanie procesu w pamięci
komputera.

Bash   uzywa   tzw   znaków   specjalnych,   których   znaczenie     uzytkownik   systemu   operacyjnego   musi
rozumieć, a które służą do generowania nazw plików  (*,?, []) lub do modyfikacji postępowania danego
polecenia (<,>, |).
 
  W momencie logowania bash interpretuje pliki inicjalizujące sesje:  /etc/profile  i   .bash_profile, ten
ostatni   plik   każdy   użytkownik   –   pod   warunkiem,   że   opanował   wystarczająco   Linuksa   –   może
zmodyfikować, dorzućić do niego nowe funkcje itd.

4.1  Znaki uogólniające

   

Znaki   uogólniające   –   jeden   lub   wiele   znaków   używanych  do   tworzenia   nazw   plików   –   pozwalają
użytkownikowi wystukać w linii poleceń niekompletną nazwę pliku. Innymi słowy przy pomocy znaków
uogólniających tworzy się symboliczny wzorzec pasujący do większej liczby plików. Wyróżniamy trzy
rodzaje znaków uogólniających :

*   

 oznacza dowolnej – również zerowej – długości łańcuch znaków

?   

 dowolny pojedynczy znak

[..]   

 użycie nawiasów kwadratowych może przybrać wiele form

        [azs]  

 oznacza, literę „a” lub  literę „z”  lub literę „s” poszukiwany ciąg znaków musi zawierać

                       jedną z tych liter

       [0-9]   

  oznacza liczbę całkowitą ze zbioru od 0 do 9

       [!rty]   

 oznacza każdy znak oprócz litery r, t, y

       [!0-9]  

 oznacza każdy znak, który nie jest liczbą

   Przykłady   :    Przypuśćmy, że w nasz katalog domowy zawiera następujące pliki  :

   p1  p2  p3   p58  p45  pb   pz     a1kb2lc4k     art54lnm012   p+

$   ls    p[1-3]

     p1

p2        

p3     

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  21 

  ls   p[123]

    p1

p2        

p3     

         Jak widzimy ten sam rezultat możemy uzyskać stosując różne formy znaków
         uogólniających. 
         Czy rezultat widoczny powyżej można uzyskać w jeszcze inny sposób?

  ls  [!123bz]

     p+

$  ls   a*b*c*

                a1kb2lc4k

$   ls   p[0-9]*

        p1  p2  p3   p58  p45

$  echo  p*  

   p1  p2  p3   p58  p45  pb   pz    p+

 echo p?

      p1  p2  p3   pb   pz   p+

  4.2  Protekcja znaków uogólniających i specjalnych

  Znaki uogólniające są podgrupą znaków specjalnych, które dla powłoki shella mają inne znaczenie niż
znak literowy. Wyróżniamy następujące znaki specjalne  :
 

*   ?     [ ]    < >    &     |      /     |     ‘      `      ”      $      !     %        (     )       {   }      @
\

    
Manipulowanie   znakami   specjalnymi,   których   znaczenie   będziemy   stopniowo   poznawać,   jest
umiejętnością   trudną   i   wymagającą  dużo   ćwiczeń   i   praktyki,   dlatego   też   poświecimy  im   –   jak   już
wspomniałem   we  wstępie   -  dużo   miejsca   i   czasu,   bowiem   ich   dobra  znajomość   jest   niezbędna  do
sprawnego posługiwania się systemem Unix, Linux, a także językami używanymi do programowania w
Internecie     (HTLM,   Perl,   PHP   itd).   Znaki   specjalne   mogą   wyrażać   swoje   znaczenie   lateralne   pod
warunkiem, że są neutralizowane. Wyróżniamy następujące znaki neutralizujące, 

\  

   znak ten neutralizuje każdy znak znajdujący się natychmiast po nim  np  \* czyli wyszukuje

nie obojętnie jaki ciąg znaków, lecz szuka „*” 

”……..

”  

 neutralizuje wszystkie znaki specjalne oprócz  :   $      \             

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  22 

‘……..‘  

  neutralizuje wszystkie znaki specjalne oprócz niego samego

Przykłady   :

      $ echo \*\*\* dzien dobry \*\*\*

        ***  dzien dobry ***  

 rezultat polecenia – czy możesz odpowiedzieć dlaczego ?

       $ echo \\
         \                                  

 rezultat polecenia

       $ echo ’<<< dzien dobry>>>’

          <<<dzien dobry>>>

       $ echo  ’ podwoje ‘’   ’

          podwoje ‘’

        $    echo ‘’***ekran jest typu $TERM’’

   

  

4.3

  Przekierowania

 

   Jak   już   pisaliśmy  na  początku   tego   rozdziału   proces   powstaje   w   momencie   egzekucji   programu.
Powstanie   procesu   odpowiada   egzekucji   pliku   umieszczonego   w   pamięci   centralnej.   W   momencie
powstania procesu interpretator poleceń tworzy automatycznie mechanizm umożliwiający wprowadzanie
danych z  klawiatury (wejście standardowe) oraz  mechanizm  pojawiania się tych danych na ekranie
(wyjście   standardowe).   Interpreter   tworzy   także   wyjście   standardowe   dla   błędów.   Wyjściem
standardowym błędów jest również ekran.

Standardowe wejścia-wyjścia mogą być skierowane do pliku, potoku (mechanizm potoku poznamy w
następnym podrozdziale). Skierowanie standardowego wyjścia polega na wysłaniu tekstu wyświetlanego
na ekranie do pliku. Wszystkie standardowe wejścia-wyjścia każdego procesu można także skierować do
odpowiednich plików i proces zamiast szukać informacji w sygnałach wysyłanych z klawiatury, będzie
ich poszukiwał w odpowiednich plikach. Mechanizm ten przedstawiamy na rysunku. 
Wejściu standardowemu przypisany jest przez system   numer   0. Wyjściu standardowemu przypisany
jest numer  1. Wyjściu błędów przypisany jest numer  2.

Zdefiniujmy teraz podstawowe operatory kierujące (przełączające) standardowe wejścia-wyjścia  :

 > plik_k   

 wyjście standardowe jest skierowane do pliku  plik_k. Jeśli plik_k wcześniej nie istniał, to

zostanie to zostanie utworzony. Jeśli już istniał to jego zawartość zostanie wymazana (ziszczona).

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  23 

>> plik_k  

 w tym wypadku wyjście standardowe zostanie dołączone do plik_k jeśli on już istniał.

<  plik_k  

 wejściem standardowym nie będzie klawiatura, tylko plik_k

2> plik_k 

 wyjście standardowe błędów będzie skierowane do pliku_k. Jeśli plik wcześniej nie istniał

to zostanie utworzony. Jeśli istniał jego zawartość zostanie wymazana .

2>> plik_k 

 jeśli plik_k istniał to jego zawartość nie będzie wymazana

2>&1 skierowuje wyjście standardowe błędów do tego samego pliku co wyjście standardowe

Przykłady  :   

$   ls  >  tymczasowy  #zapisanie listy plików katalogu bieżącego do pliku „tymczasowy”

$   ls  >> plikb           # dopisanie do pliku  plikb listy plików z katalogu bieżącego

$   echo    ===================  > rezultat

$   date  >> rezultat    

$   echo    ===================  > rezultat

           #plik „rezultat’’ będzie zawierał następujące informacje

$   cat  rezultat

     ===================  

                 Sun May  15  22:41:48  GMT-0200 2001
                 ===================   

4.4

   Potoki

       Potok jest ciągiem poleceń prostych lub złożonych, które są odseparowane od siebie przez znak |.
Rezultat każdego polecenia – z wyjątkiem ostatniego – jest traktowane przez polecenie następne, jako
jego   standardowe   wejście.  Innymi   słowy   -   potok   –   jest   mechanizmem   komunikacji   pomiędzy
różnymi poleceniami, który im pozwala wymieniać między sobą dane.
 Prześledźmy funkcjonowanie
mechanizmu potoków na konkretnych przykładach.  

Wykonajmy następujące polecenie  :

$   ls  -l    /home

drwxr-xr-x     2      piotr        oracle         1024         May   15    2003     test              
drwxr-xr-x     2      ola           oracle           512         May   25    2003     katalog5
drwxr-xr-x     5      piotr        oracle         1024         May   17    2003     test1
-rwxr-xr-x     1      piotr         oracle         1536         May   18    2003    plikb
-drwxr-xr-x   2      piotr         oracle         1325         May   15    2003    plikc 

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  24 

  Rezultatem egzekucji polecenia  -  ls  -l  - jest lista zarówno plików jak  katalogów, otóż chcielibyśmy
wiedzieć ile ich jest ? Zastosowanie mechanizmu potoków umożliwi nam ich policzenie. Wiemy, że
powyższa lista jest wejściem standardowym następnego polecenia, które wykona stosowne obliczenie.
Tym poleceniem – jak by może pamiętacie – jest     :       wc   -l .   Tak więc by policzyć pliki katalogu
domowego musimy wykonać następujące polecenie „potok”  :

$   ls  - l   |    wc  -l

5

Wyobraźmy sobie teraz, że chcemy wyświetlić na ekranie wszystkie pliki zawarte w katalogu   /usr,
podejrzewamy (dlaczego ?), że może być ich dużo. Co zrobić by ich lista nie „przedefilowała”, bez
zatrzymania na ekranie co uniemożliwiłoby nam spokojne jej odczytanie. Otóż w tym wypadku też
możemy zastosować mechanizm potoku :

$   ls –l  /usr  |   more  #jak inaczej możemy obejrzeć w/w listę stronicę po stronicy ?

Jak zapewne zauważyliście na ekranie wyświetlany jest tylko rezultat końcowy „potoku”, dane pośrednie
np rezultat polecenia :  ls –l   z  „potoku”   :   ls  -l    |    wc  -l   , giną. Czy nie ma żadnego sposobu ich
zapisania   np   w   jakimś   oddzielnym   pliku   ?   Mechanizm   zapisywania   w   plikach   rezultatów
poszczególnych poleceń wchodzących w skład   „potoku” uzyskujemy przy pomocy polecenia   :   tee
nazwa_pliku
 . 
Jeśli chcemy zapisać rezultat polecenia   :   ls  -l  to nasz potok przybierze formę następującą  :

$    ls  -l   |   tee  plikb   |   wc  -l     
 
Mechanizm zapisywania w plikach rezultatów poszczególnych poleceń wchodzących w skład
„potoku” nazywamy rozgałęzieniem „potoku”. 

Rezultat „potoku” może być uzyskany także przy pomocy odpowiednich skierowań :

Skierowanie  do pliku                                                          Użycie  „potoku”     

$  polecenie1  >  plik1  
                                                                                              polecenie1    |    polecenie2  
$  polecenie2  <  plik1

$  rm  plik1 

polecenie1  >   plik_a

polecenie2 <    plik_a  >  plik_b                     polecenie1  |   polecenie2   |   polecenie3

polecenie3  <   plik_b  

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  25 

Mechanizm   funkcjonowania   potoków   wymaga   od   użytkownika   zapamiętania   nie   tylko   znaczeń
poszczególnych poleceń, ale także pamiętania ich rezultatów. Podamy teraz kilka „potoków’’, których
interpretacje rezultatów pozostawiamy czytelnikowi.

$   who  |     wc  -l

$  cat  /etc/passwd  |    wc  -l

$  cat  /etc/group    |    wc  -l 

$  cat  /etc/passwd  |  grep /bin/bash  |   wc  -l

$   ls  -l   |   grep  ‘’rwxr-xr-x’’   |    more

    

  Zgrupowania poleceń

Linux umożliwia nam wystukanie wielu poleceń jednocześnie, pod warunkiem, że polecenia te

będą   oddzielone   między   sobą      

„ ; ”

.   Polecenia   są   wykonywane   w   takim   przypadku   po   kolei,

niezależnie od siebie.

Przykład  :

$   ls;   pwd;  date              #polecenia są wykonywane po kolei od lewej do prawej strony

drwxr-xr-x     2      piotr        oracle         1024         May   15    2003     test              
drwxr-xr-x     2      ola           oracle           512         May   25    2003     katalog5
drwxr-xr-x     5      piotr        oracle         1024         May   17    2003     test1
-rwxr-xr-x     1      piotr         oracle         1536         May   18    2003    plikb
-drwxr-xr-x   2      piotr         oracle         1325         May   15    2003    plikc 

 /home/piotr

Fri May    15  15:14:38 GMT-0100  2003

Polecenie te mogą być zgrupowane przy pomocy nawiasów i skierowane do pliku lub użyte w
mechanizmie „potoku”

$   ( ls ;  pwd ;  date ) >  plik_wyjscie

 Istnieją także w Linuksie operatory, które warunkują wykonanie danego polecenia w zależności od tego
jaki rezultat przyniesie wykonanie polecenia je poprzedzającego.

Operator    &&    pozwala   wykonać   polecenie   tylko   w   tym   wypadku   jeżeli   egzekucja   polecenia   je
poprzedzającego została wykonana bez błędu.

Przykład  :

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  26 

$  cd  projekt   &&    ls   *

Operator  || umożliwia wykonanie danego polecenia tylko w tym wypadku jeżeli egzekucja polecenia je
poprzedzającego została wykonana z błędem

Przykład  : 

$  cd  projekt    ||    mkdir   projekt  

Wyjaśnienie :  chcemy  przejść do katalogu  „projekt” , lecz jeżeli on nie istniej to go tworzymy

4.5

    Ćwiczenia

Ćwiczenie  1.

Przemieszcz się ze swego katalogu bieżącego do katalogu /usr/bin i wyświetl listę plików których nazwa
składa się dokładnie z 4 znaków.

Ćwiczenie  2.

Wyświetl listę plików, których nazwy zaznają się tylko na litery od a do e.

Ćwiczenie  3.

Wyświetl listę plików, których nazwy posiadają literę  „t” na drugiej pozycji.

Ćwiczenie  4.

Użyj polecenia „echo” do wyświetlenia następującej informacji na ekranie twojego komputera :

Ćwiczenie  5.

Wyświetl na ekranie zdanie „dzień dobry pani” wprowadzając trzy polecenia na trzech liniach

Ćwiczenie  6.

Wróć do swego katalogu domowego i utwórz plik o nazwie info.txt zawierający datę i godzinę. Wykonaj
polecenie „cat  info.txt” aby wyświetlić na ekranie zawartość pliku info.txt.

Ćwiczenie  7.

Używając tego samego mechanizmu, umieść rezultat polecenia „ls” w pliku info.txt.
Wyświetl plik. Co zobaczysz ?

Ćwiczenie  8

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  27 

Wykonaj powtórnie ćwiczenie 6 i dorzuć do zawartości pliku info.txt, rezultat polecenia „ls”, wyświetl
plik powtórnie.
.
Ćwiczenie  9.

Użyj polecenia „mail”

Ćwiczenie  10.

Wyświetl na ekranie, strona po stronie listę plików z katalogu /etc.

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  28 

Rozdział  5   :   Prawa

Po przestudiowaniu tego rozdziału, czytelnik powinien umieć rozpoznawać i modyfikować uprawnienia
wszystkich   rodzajów   plików   oraz   definiować   prawa   automatycznie.   Szczególną   uwagę   poświęcimy
prawom katalogów. W rozdziale tłumaczymy także zarządzanie grupami użytkowników.

   5

.1  Zarządzanie prawami

   
  
System Linux jest systemem wielodostępnym w którym dostęp do plików jest regulowany przez  
  prawa 

   Polecenia umożliwiające zarządzaniem uprawnieniami plików, katalogów, użytkowników  :

  

 ls  -l

:   wyświetla praw plików     

 

chmod

:   umożliwia zmienienie praw przydzielonych plikowi

 

umask

:   automatyczne przydzielanie uprawnień

 

chgrp

:   

id

:   wyświetla identyfikacje użytkownika

su

:   umożliwia zmianę identyfikacji użytkownika

newgrp 

:   umożliwia zmienienie grupy użytkownikowi

   

5.2 Poznanie atrybutów pliku (ls –l)

             $ ls  -l   plika

                  (1)

-rwx|r-x|---    1    piotr    nauka    265    maj 17  14:45  plika 

            !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! nazwa pliku  (8)
            !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!data i godzina ostatniej modyfikacji pliku (7)

  

          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! objętość (6)

            !!!!!!!!!!!!!!!!!!!!!!!!!!! grupa (5)
            !!!!!!!!!!!!!!!!! właściciel    (8)
            !!!!!!!!!!!!!!!! liczba łączy  (3)
            !!!!!!!!!!!! prawa   (2)
            ! typ pliku „-” kreska oznacza plik normalny „d” plik jest katalogiem.   (1)

                              a    b    c 
                    (1
)  -|rwx|r-x|---    

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  29 

a     

 prawa właściciela pliku

                        b    

 prawa grupy do której należy właściciel

                        c    

 prawa reszty użytkowników systemu

Jak widzimy aby kontrolować dostęp do plików,  Linux dzieli użytkowników systemu na trzy kategorie :

6. właścicieli plików
7. członków grupy do której należy właściciel grupy
8. innych użytkowników systemu

  Każda kategoria użytkowników dysponuje trzema prawami :
 

9. prawem lektury („read”), które umożliwia czytanie pliku, prawo te umożliwia np. wykonanie

kopi pliku

10. prawem pisania („write”), które umożliwia modyfikacje pliku
11. prawem egzekucji pliku („execute”)które umożliwia traktowanie pliku jako polecenia (lub jego

zbioru). Prawo to ma sens tylko dla skryptów i programów.

 

 5. 3  Modyfikacja praw pliku (1)

  Polecenie  chmod umożliwia właścicielowi pliku lub administratorowi systemu zmienić uprawnienia
pliku. Jego forma  jest następująca

$   chmod    u-w     plik1

  Ciąg znaków u-w symbolizuje zmianę praw pliku , na pierwszym miejscu  (w naszym przykładzie „u”)
określa się kto ma prawo korzystać z pliku, dysponujemy następującymi symbolami

u    

   symbolizuje właściciela pliku

g    

  symbolizuje grupę do której plik jest przypisany

o    

  reszta użytkowników systemu

a    

 symbol ten oznacz : wszystkich  u+g+o

  Na drugim miejscu umieszcza się symbole zmiany praw :

 +   

 dorzucamy prawo

 -   

  likwidujemy prawo

 =   

 przypisujemy prawo

 Na trzecim miejscu umieszczamy symbole, czego dotyczy prawo  : 

 r   

  prawo czytania pliku

 
w   

  prawo modyfikacji pliku

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  30 

 x   

  prawo jego egzekucji

    Przykłady  :

 

Likwidujemy prawo modyfikacji pliku dla jego właściciela  :

$    chmod    u-w    plik1

 

Dorzucamy prawo modyfikacji dla grupy do której jest przypisany plik  :

$    chmod  g+w  plik1

    

       5.4  Modyfikacja praw pliku (2)

         $    chmod      740      plikb
 
          400  

   prawo czytania dla właściciela pliku

          200  

   prawo pisania dla właściciela pliku

          100  

  prawo egzekwowania pliku przypisane jego właścicielowi

          040  

  prawo czytania dla grupy użytkowników

          020  

  prawo pisania dla grupy użytkowników 

          010  

  prawo egzekwowania pliku przypisane grupie użytkowników

          004  

  prawo czytania przypisane innym użytkownikom

          002  

  prawo pisania przypisane innym użytkownikom

          001  

 prawo egzekwowania przypisane innym użytkownikom

 Polecenie chmod pozwala zmienić prawa przy pomocy wartości wyrażonych w kodzie binarnym
 np  jak nadać wszystkie prawa właścicielowi pliku plikb, prawa do czytania i egzekwowania tego pliku
 grupie do której należy jego właściciel i prawo do czytania pliku innym użytkownikom systemu ?
  

$    chmod    754     plikb     

 System dziesiętny rózni się zasadniczo od swoich poprzedników (np zapisu rzymskiego, systemu
Azteków opartego na 5 itd) . Za Charlesem Petzold można go scharakteryzować w następujący sposób :

1. dziesiętny system liczbowy jest systemem pozycyjnym co oznacza, że określona cyfra

reprezentuje różną wartość zależnie od swego miejsca w liczbie. Miejsce cyfry jest więc równie,
jak jej rzeczywista wartość.. Zarówno liczba 200 jak i 20000 mają na początku tylko jedną
dwójkę, jednak wiemy, że dwadzieścia tysięcy jest większe od  dwustu

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  31 

2. praktycznie wszystkie systemy powstałe przed systemem dziesiętnym (lub indoarabskim), mają

coś czego on nie ma, a mianowicie specjalny symbol oznaczający liczbę 10 (np X w rzymskim).
W systemie dziesiętnym nie ma specjalnego symbolu 10.

3. Wszystkim systemom liczbowym brakuje symbolu 0. System dziesiętny natomiast posługuje się

– jako jedyny – symbolem zera. Zero – choć może nam to się wydawać dziwne – jest bez
wątpienia jednym z najważniejszych wynalazków w historii liczb i matematyki. Dzięki niemu
możemy rozróżniać liczby biorąc pod uwagę ich zapis pozycyjny, 45  od   405  czy od  450. Zero
ułatwia także wiele operacji matematycznych, które są niewygodne w innych systemach : np
mnożenie czy dzielenie. 

Rozłóżmy na czynniki pierwsze liczbę   5854 którą wymawia się jako „pięć tysięcy osiemset
pięćdziesiąt cztery” co można zapisać w następujący sposób :

pięć tysięcy   

osiemset

                      Przedstawienie I

pięćdziesiąt

cztery

W postaci liczbowej możemy naszą liczbę przedstawić w następujący sposób  :

Przedstawienie II                 5854  =   5000  +  800  +  50    +   4

Zapis ten może być jeszcze bardziej szczegółowy  :

5854  =    5×1000 +

Przedstawienie III                

     8×100 +  
     5×10  +
     4×1

Można ten zapis przedstawić używając potęg

5854 =  5×10³   +

Przedstawienie IV

   8×10²   +
   5×10¹   +
   4×10º

Pamiętaj, że dowolna liczba do potęgi  0  równa się  1

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  32 

Każda pozycja w wielocyfrowej liczbie ma szczególne znaczenie, przypatrz się uważnie poniższemu
rysunkowi
                     Potęga    6   5   4  3   2  1   0            

                                    5 | 8 | 5 | 4 | 8 | 9 | 3
                                     !!!!!!!!!!!!!!!!!!!!  

 liczba jedności

                                     !!!!!!!!!!!!!!!! 

   liczba dziesiątek

                                     !!!!!!!!!!!!! 

  liczba setek                                    Przedstawienie V

 !!!!!!!!!  

  liczba tysięcy

 !!!!!!  

 liczba dziesiątek tysięcy

                                    !!!  

 liczba setek tysięcy

                                    ! 

 liczba milionów 

Każda pozycja  - i jest to zasada najważniejsza - odpowiada określonej potędze dziesięciu. Jednak
wniosek jest następujący : notacja pozycyjna, którą powyżej przedstawiliśmy działa także w innych
nie dziesiętnych systemach. System dziesiętny posługuje się dziesięcioma symbolami :

2. 1  2  3  4  5  6  7  8  9 (podstawa systemu   =  10)

System binarny tylko dwoma

0

1  (podstawa systemu    =  2)

Spróbujmy zastosować zasady notacji pozycyjnej do jakiejkolwiek liczby wyrażonej kodem binarnym.
Podstawą systemu dziesiętnego jest liczba dziesięć (10 cyfr). Podstawą systemu binarnego jest liczba
dwa (dwie cyfry) 

Stąd wniosek, że wartość

      Potęga       3   2   1     0    
     

                   1  0   1    0    

5854 =  5×10³  + 8×10²  +   5×10¹   +  4×10º

          1×2³  +  2²  + 2¹  +  2º  =  10

Powróćmy teraz do nadawania praw przy pomocy  wartości wyrażonych przez kod binarny
Prawa dla użytkownika, prawa dla grupy, prawa dla innych użytkowników systemu wyrażane
są w formie trzech liter np. nadanie wszystkich możliwych praw właścicielowi pliku zapisujemy

rwx  

 które w formie binarnej będzie miało wartość  111   =  

rw-   

 w formie binarnej będzie miało wartość           110 

r--    

                                                                            100

---     

                                                                            000 

                                       

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  33 

Podsumujmy :

Potęga                         2   1  0

     2   1   0   2   1  0

                1 1 0 | 1 1 1| 0 0 1        =    671

1  1 0  

     1                                         4  + 2 + 0 = 6
                                                             

  1 1 1

                                                  4 +2+ 1 = 7

                                                                              

0 0 1

                                                                              0 + 0+1 = 1

System dziesiętny

system binarny

system octal 

system hexa

0

0

         0                                 0

1

            1

         1                                 1

2

          10

         2                                 2

3

          11

         3                                 3

4

        100

         4                                 4

5

        101

                                 5                                 5 

6

        110                                          6                                 6

7

        111

         7                                 7

8

                              1000

       10                                 8

9

      1001

       11                                 9

          10

                  1010

       12                                 A

 

          11

      1011

       13                                 B

          12

      1100

       14                                 C

          13

      1101

       15                                 D

          14

      1110

       16                                 E

          15

      1111

       17                                 F

          16

    10000 

       20                                 10

       5.5   Prawa katalogów

       

$ ls –ld katalog

 

drwxr-x---  1     piotr     grupa    265   czerwiec 20  14:00    katalog

                 

                                                 r

    prawo lektury plików zawartych w  katalogu

         

w  

  prawo tworzenia i usuwania plików w katalogu

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  34 

                     

x   

 prawo dostępu do plików w katalogu 

Mechanizm lektury i nadawania praw katalogowi jest analogiczny do tego, który używamy w   

           stosunku do plików. Jednak prawa katalogów interpretujemy inaczej i zrozumienie tego jest 
           konieczne do odczytywania, usuwania i tworzenia plików, które katalog zawiera.

4 Prawo lektury katalogu pozwala poznać listę plików, które katalog  zawiera, przy pomocy

polecenia   ls możemy (posiadając to prawo) wyświetlić pliki na ekranie.

5 Prawo egzekucji pozwala na uzyskanie dostępu do plików zawartych w katalogu

6 Prawo tworzenia plików – ma sens tylko wtedy gdy posiadamy jednocześnie prawo dostępu do

plików  (czy możesz wytłumaczyć dlaczego ?) . Prawo to umożliwia usuwanie starych  i tworzenie
nowych plików

Możemy wyróżnić następujące kombinacje praw które może posiadać użytkownik

*   

rwx 

  

 użytkownik posiada wszystkie prawa

*   

r-x

     

 użytkownik ma prawo dostępu do plików katalogu

*   

---  

   

  użytkownik nie ma żadnych praw 

*   --x     

  użytkownik posiada prawo dostępu do plików, których nazwy zna

Przypomnijmy teraz podstawowe polecenia używane do zarządzania katalogami  :

mkdir   (make direktory ) – przy pomocy tego polecenia tworzymy katalogi.

Załóżmy, ze znajdujemy się w katalogu domowym  /home/piotr  

$   mkdir   katalog1    katalog2          (utworzyliśmy katalogi, które znajdują się w katalogu
                                                             Domowym)

Chcemy teraz utworzyć w katalogu  - katalog1   - podkatalog o nazwie  cwiczenia, ale nadal
Będąc w katalogu domowym 

$  mkdir   katalog1/cwiczenia

Czy wiesz jak można to zrobić inaczej  ?

rmdir   (remove direktory)   - przy pomocy tego polecenia usuwamy katalogi 

Załóżmy, że chcemy usunąć katalog o nazwie katalog2 , który przed chwilą utworzyliśmy

$  rmdir  katalog1  katalog2   

 po egzekucji tego polecenia otrzymamy na ekranie następujący

                                                    napis

$  rmdir:  katalog1: Directory not empty   

 czyli polecenie rmdir usunęło tylko katalog2

                                                                        Pusty

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  35 

Jeżeli wykonamy polecenie ls

$   ls

katalog1 

W jaki sposób go usunąć? Otóż do usuwania katalogów z zawartością służy polecenie

      
 rm  -r     nazwa katalogu   

 jest to polecenie bardzo niebezpieczne w wypadku jeżeli po opcji

                                                 -r zapomnisz wpisać nazwę katalogu, który chcesz usunąć
                                                 Czy wiesz co się może wtedy stać ?
  

     5.7  Zarządzanie grupami

              Polecenia  :
    

ls –l           

   polecenie to wskazuje grupę do której przynależy plik

chgrp       

    polecenie to zmienia przynależność pliku z np grupy a d o grupy b

newgrp    

   polecenie to umożliwia, podczas sesji, zmienić przynależność pliku 

                                    z grupy zdefiniowanej w pliku /etc/passwd, na początku sesji 

id              

   pozwala poznać aktualną grupę

           Użytkownicy przynależą do jednej lub wielu grup i prawa dostępu do plików, których nie są 
           właścicielami, zależą od tej przynależności. Pliki utworzone przez użytkownika należą do jego 
           aktualnej grupy. Grupa ta jest inicjalizowana w momencie otwarcia sesji, dzięki plikowi 
           etc/passwd 
            
           Plik użytkowników  /etc/passwd

Lista użytkowników systemu znajduje  się w pliku /etc/passwd , który jest dostępny dla wszystkich
użytkowników (to znaczy może być wyświetlony na ekranie przez  wszystkich) i który składa się z
następujących kolumn :

1. nazwa użytkownika

2. znak  x

3. numer użytkownika

4. numer grupy

5. komentarz

6. katalog domowy

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  36 

7.   interpreter poleceń (shell)

  Kolumny rozdziela znak dwukropka    

:

            1  2 3 4  5      6        7 

 

  

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin
shutdown:x:6:0:shutdown:/sbin:/sbin:/shutdown
halt:x:7:0:halt:/sbin:/sbin:/halt
ftp:x:14:50:FTP User:/home/ftp:
nobody:x:99:99:Nobody:/:
ola:x:519:504:Ola Pawlak:/home/ola:/bin/bash

Gdy   przy   pomocy   polecenia     useradd   administrator   definiuje   nowego   użytkownika   i   jego   konto,
tworzony  jest automatycznie jego katalog domowy, o nazwie takiej samej jak nazwa użytkownika oraz
definiowane są jednocześnie inne parametry, m.in. określona jest powłoka z jaką użytkownik będzie
pracował   po   zalogowaniu   się.   Gdy   jesteśmy   zalogowani   jako   administrator,   możemy   wykonać
następujące polecenie

#  useradd piotr

Wtedy do pliku   /etc/passwd zostanie dorzucone konto o nazwie  piotr  którego katalogiem domowym
będzie   /home/piotr

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin
shutdown:x:6:0:shutdown:/sbin:/sbin:/shutdown
halt:x:7:0:halt:/sbin:/sbin:/halt
ftp:x:14:50:FTP User:/home/ftp:
nobody:x:99:99:Nobody:/:
piotr:x:518:504:Piotr Pietak:/home/piotr:bin/bash
ola:x:519:504:Ola Pawlak:/home/ola:/bin/bash

   Plik grupy użytkowników /etc/group

Grupa użytkowników zawiera pewną liczbę użytkowników którzy mają dostęp do tych samych plików.
Grupa ta definiowana jest w pliku  /etc/group i składa się z następujących kolumn :

nazwa grupy.

kolumna pusta lub zawierająca znak  x  albo  *

numer  grupy 

lista użytkowników, członków grupy

      Przykład 

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  37 

      $  cat  /etc/group

 

root:x:0:root
bin:x:1:root,bin,demon
demon:x:2:root,bin,demon
sys:x:3:root,bin,adm

     Modyfikacji tego pliku może dokonywać tylko administrator systemu

     Przykłady    
     
     $   id  
     
      uid=101(piotr)    gid=1(inni)     

 czy wiesz do jakiej grupy należy  - piotr  ?  

     Jak zmieniamy przynależność pliku do grupy  ?

     $  ls  -l   plika
      
      -rw-r- - r--   1   piotr  inni   99  lipiec   18  14:00 plika

    $   chgrp   studia   plika

       -rw-r—r--    1  piotr  studia   99 lipiec 18  14:00 plika  

  

Ćwiczenia   4.1

Ćwiczenie 1.

Przy pomocy polecenia  touch utwórz plik o nazwie  :   obraz.txt
$ touch  obraz.txt
Nie poznając uprawnień pliku, nadajcie wszystkim użytkownikom prawa do czytania tego pliku na dwa
sposoby (symboliczny i numeryczny), następnie wyświetl te prawa.

Ćwiczenie 2. 

Jakie będą konsekwencje następującego polecenia :
$ rm obraz.txt

Ćwiczenie 3.

Jakie będą uprawnienia pliku obraz.txt, po wykonaniu następującego polecenia :
$ chmod  u+wx,g+w,o-r  obraz.txt

Ćwiczenie 4.

Przypuśćmy, że polecenie  ls -l  /home/ola/prog.sh wyświetla na ekranie następującą linie

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  38 

-r-xr-x—x   2  ola  personel 452460    maj  25  2002 /home/ola/prog.sh
Kto może wyegzekwować ten program ?  

Ćwiczenie 5.

Polecenie ls -ld  /home/piotr wyświetla na ekranie :
drwxrwxr-x   2   piotr   konto     512  maj 15   2002  /home/piotr
Jacy użytkownicy mają uprawnienia do tworzenia lub wymazywania plików w tym katalogu ?  

Ćwiczenie 6.

Czy Piotr ma prawo wymazać ze swego katalogu domowego plik, który posiada następujące atrybuty :
-r---------  2     ola   konto      2416   Maj  2   2002    plik.txt

Ćwiczenie 7.

Utwórz katalog o nazwie „prywatne” w ten sposób by inni użytkownicy, należący do tej samej grupy, nie
mieli do niego dostępu

Ćwiczenie 8.

Wykonaj polecenie, które umożliwi użytkownikom z twojej grupy „czytanie” katalogu „prywatne”.

Ćwiczenie 9.

Czy możesz zmienić nazwę swego katalogu domowego ? dlaczego ?

Ćwiczenie 10.

Jaką wartość oktalną użyć by w momencie nadawania praw otrzymać :
drwxr-x---    dla katalogu
-rw-r-----      dla pliku

Ćwiczenie 11.

Podłącz się do grupy  „bin”. Wytłumacz rezultat polecenia.

Ćwiczenie 12.

Katalog „prywatne” posiada następujące atrybuty  :
$ ls -ld  prywatne
drwxr-x---  2  piotr  konta   1024    czerwiec  20   10:35   prywatne
Wykonaj polecenie, które dołącza grupę  „zaliczka” (której jesteś członkiem) do katalogu „prywatne”

Ćwiczenie 13.

Czy Piotr może zmienić grupę pliku plik.txt, który się znajduje w jego katalogu domowym ?
$ ls -l   plik.txt
-r--------  2  ola  konto   2416 Maj  10  2002  plik.txt

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  39 

Ćwiczenie 14.

Jakich informacji dostarczają następujące polecenia  :
$ who am i
$ id

Ćwiczenie 15.

Sprawdź czy  w twoim systemie możesz pisać na ekranie operatora  „/dev/console”

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  40 

Rozdział    6   :        Filtry do czego służą ?

g

rep

  poszukiwanie ciągu znaków w pliku

cut  

  selekcjonuje (znajduje) pojedyńcze znaki lub zony

sort    

uporządkowanie, fuzja plików

more

  wyświetlanie pliku strona po stronie

wc      

  liczy linie, słowa, i znaki

tail     

  wyświetla koniec pliku

head  

  wyświetla koniec pliku

nl

 numeruje linie pliku

tr

 prosta modyfikacja pliku

Czym jest filtr ? Jest on poleceniem, które wykonuje pewno działanie na plikach zawierających tekst.
Rezultat   tego   działania,   który  jest   także   tekstem,   wyświetlany  jest   na   ekranie   (chociaż   nie   tylko).
Powiązanie między sobą wielu filtrów (czyli jednoczesna egzekucja kilku poleceń) jest możliwa dzięki
użyciu metody zwanej przekierowaniem lub innej metody nazywanej „potokiem”. Zapoznamy się teraz z
podstawowymi filtrami używanymi w systemie Linux.

Przykłady
:
cat   poemat      
 Opadają kwasem wina
 Liście dębu i czereśni
 I zza wody psi przyleśni
 Szczekają jak mandolina
 
Bałałajkę psiej tęsknoty
Uwiązali na łańcuchu
 Za to ździerze-mgle na uchu
 Dynda miesiąc – kolczyk złoty
                 

 $ wc   -l  poemat     # polecenie to liczy liczbę lin w wierszu „poemat”

8 poemat   

$  ls   |    wc  -l       #liczy liczbę plików znajdujących się w katalogu – dlaczego ? – spróbuj

         znaleźć polecenie, które wyświetliłoby liczbę znaków w katalogu

5    

nl poemat           #numeruje linie poematu

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  41 

 1  Opadają kwasem wina
 2  Liście dębu i czereśni
 3  I zza wody psi przyleśni
 4  Szczekają jak mandolina
 
 5   Bałałajkę psiej tęsknoty
 6  Uwiązali na łańcuchu
 7  Za to ździerze-mgle na uchu
 8  Dynda miesiąc – kolczyk złoty

tail -3  poemat       #wyświetla 3 ostatnie linie wiersza „poemat”

Uwiązali na łańcuchu
 Za to ździerze-mgle na uchu
 Dynda miesiąc – kolczyk złoty

 $ tail  +2  poemat    #wyświetla od 2 lini do końca

Za to ździerze-mgle na uchu
 Dynda miesiąc – kolczyk złoty

                 

head -3 poemat   #wyświetla 3 pierwsze linie

Opadają kwasem wina
 Liście dębu i czereśni
 I zza wody psi przyleśni

Uwagi :

1.  Liczba linii branych pod uwagę przez polecenie  tail   i   head   wynosi 10

2. Polecenie wc   (bez opcji) wyświetla liczbę linii, liczbę słów i liczbę znaków zawartych w

pliku

3. Co się dzieje gdy wystukamy (polecenie będące filtrem) bez żadnego argumentu, czyli bez

nazwy pliku np 

$   wc   +  [Enter] * polecenia zwane filtrami oczekują, że wprowadzimy jakieś dane
                                 możemy to zrobić i aby powrócić do linii poleceń i przerwać   
                                 zapełnianie ekranu musimy wystukać jednocześnie  [Ctrl]+d  

   
 

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  42 

6.2

Polecenie  grep

                                 
                                       $  grep  ‘’psi’’  poemat

 Opadają kwasem wina                                                                                                                      
 Liście dębu i czereśni                                                                                                                             
 I zza wody psi przyleśni                                                                                                                            
 Szczekają jak mandolina                                                               I zza wody psi przyleśni
                                                   

                   grep                   Bałałajkę psiej tęsknoty

Bałałajkę psiej tęsknoty
Uwiązali na łańcuchu                                                                                                                                    
 Za to ździerze-mgle na uchu                                                                                                                        
 Dynda miesiąc – kolczyk złoty                                                                                                                    

    Polecenie  grep selekcjonuje z pliku linie zawierające poszukiwany ciąg znaków – w naszym
przykładzie „psi”  - i wyświetla wskazane linie na ekranie. Opcja  -i  znosi różnice między małymi  i
dużymi literami. Jeżeli wystukamy  :

$  grep  -i   ‘’za’’  poemat     

 to otrzymamy

        I zza wody psi przyleśni
        Za to ździerze-mgle na uchu

 Opcja   -c  użyta z poleceniem grep umożliwia policzenie liczby lin zawartych w pliku (jakie inne
polecenie wykonuje to samo ? ). 

$   grep  -c  poemat

 8

  Opcja  -n  numeruje linie w pliku (jakie inne polecenie wykonuje to samo ? ).

$  grep  -n   poemat

1  Opadają kwasem wina

 

2  Liście dębu i czereśni
 3  I zza wody psi przyleśni

 

4  Szczekają jak mandolina

 
 

5   Bałałajkę psiej tęsknoty

 

6  Uwiązali na łańcuchu

 

7  Za to ździerze-mgle na uchu

 

8  Dynda miesiąc – kolczyk złoty

   Opcja    -v   wyświetla linie, które nie zawierają poszukiwanego ciągu znaków, w naszym pierwszym
przykładzie, jeśli przed  „psi” dodamy  -v to otrzymamy :
  
 

$   grep  -v   ‘’psi’’  poemat

  Opadają kwasem wina

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  43 

  

 Liście dębu i czereśni

  

 Szczekają jak mandolina

   

Uwiązali na łańcuchu

   

Za to ździerze-mgle na uchu

   

Dynda miesiąc – kolczyk złoty

 Opcja   -l  jest użyteczna kiedy poszukujemy ciągu znaków w wielu plikach.

      6.3   Polecenie   cut

$  cut –f1,3  -d’,’

1,un,one,ein

 

1,one

2,deux,two,zwei

2,two

3,trois,three,drei

3,three

4,quatre,four,vier

4,four

5,cinq,five,funf                           

         cut                 

5,five

6,six,six,sechs

6,six

7,sept,seven,sieben

7,seven

8,huit,eight,acht

8,eight

9,neuf,nine,neun

9,nine

10,dix,ten,zen

10,ten

Polecenie  cut    

      6.4   Polecenie    sort

 

   $

sort  +3 –t’,’   liczba

1,un,one,ein

 

8

, huit,eight,acht

2,deux,two,zwei

3,trois,three,drei

3,trois,three,drei

1,un,one,ein

4,quatre,four,vier

5,cinq,five,funf

5,cinq,five,funf                           

         sort                 

9,neuf,nine,neun

6,six,six,sechs

6,six,six,sechs

7,sept,seven,sieben

7,sept,seven,sieben

8,huit,eight,acht

4,quatre,four,vier

9,neuf,nine,neun

10,dix,ten,zen

10,dix,ten,zen

2,deux,two,zwei

Przykłady   :

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  44 

$  cat liczba  

    

2,deux,two,zwei
8,huit,eight,acht
3,trois,three,drei
4,quatre,four,vier
1,un,one,ein
5,cinq,five,funf
10,dix,ten,zen                                   
6,six,six,sechs
7,sept,seven,sieben
8,huit,eight,acht
9,neuf,nine,neun

$  sort  liczba

1,un,one,ein

 

10,dix,ten,zen
2,deux,two,zwei
3,trois,three,drei
4,quatre,four,vier
5,cinq,five,funf                           
6,six,six,sechs
7,sept,seven,sieben
8,huit,eight,acht
9,neuf,nine,neun

$  sort –n  liczba

1,un,one,ein

 

2,deux,two,zwei
3,trois,three,drei
4,quatre,four,vier
5,cinq,five,funf                           
6,six,six,sechs
7,sept,seven,sieben
8,huit,eight,acht
9,neuf,nine,neun
10,dix,ten,zen

$  sort  -t’,’ +3   liczba

8

,

8,huit,eight,acht
3,trois,three,drei

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  45 

1,un,one,ein
5,cinq,five,funf
9,neuf,nine,neun
6,six,six,sechs
7,sept,seven,sieben
4,quatre,four,vier
10,dix,ten,zen
2,deux,two,zwei

$  sort -t’,’ +1 -2
5,cinq,five,funf                           
2,deux,two,zwei
10,dix,ten,zen
8,huit,eight,acht
9,neuf,nine,neun
4,quatre,four,vier
7,sept,seven,sieben
6,six,six,sechs
3,trois,three,drei
1,un,one,ein

 

Polecenie   sort

    

Polecenie   more

Ćwiczenia  5.1

Ćwiczenie 1.

Wyświetl listę użytkowników uporządkowaną według ich nazwisk

Ćwiczenie 2.
 
Wyświetl atrybuty, największego pliku, z twojego katalogu

Ćwiczenie 3.

Wyświetl zawartość pliku  „.profile.” 

Ćwiczenie 4.

Wyszukaj w twoim katalogu wszystkie pliki modyfikowane w ciągu jednego dnia

Ćwiczenie 5.

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  46 

Wyświetl wszystkie linie pliku „.profile”, które zawierają znak  #

Ćwiczenie 6.

Wyświetl nazwę wszystkich plików tekstowych z twojego katalogu domowego

Ćwiczenie 7.

Wyświetl nazwiska użytkowników podłączonych do twojego systemu (wyłącznie nazwiska)

Ćwiczenie 8.

Polecenie    ls  -l    wyświetla znak „-” na pierwszej pozycji linii kiedy mamy do czynienia z plikiem
regularnym, zastąp znak „-”  przez literę „f’’

6.1 Ćwiczenia

Ćwiczenie 1.

Wykonaj polecenia :
$ cp /etc/passwd  passwd2
$ ln passwd  passwd2 
Jeżeli zmienimy plik passwd2, co się wydarzy ?

Ćwiczenie 2

Jaki rezultat otrzymasz po wykonaniu następującego polecenia :
$ ln passwd  passwd3
.
Ćwiczenie 3.

Odnajdź wszystkie łącza pliku   :  passwd

Ćwiczenie 4.

Wykonaj polecenie „rm passwd”, które znosi wiązanie passwd. Czy plik wskazywany przez wiązanie
jest jeszcze dostępny , jeśli tak to w jaki sposób ?Czy można odtworzyć łącze passwd, jeśli tak to w jaki
sposób ?

Ćwiczenie 5.

Wykonaj kopie pliku /etc/group do twojego katalogu domowego, i następnie wykonaj polecenie :
$ ln  -s group  group.lien

Wyświetl atrybuty pliku group.lien, czy jego uprawnienia pozwalają na dostęp do pliku group ?

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  47 

Rozdział   7   :    Zarządzanie procesami

7.1   Skrypty  - pierwsze  kroki w programowaniu

Skrypt   jest   plikiem   tekstowym   zawierającym   polecenia.   Skrypt   możemy   utworzyć   przy   pomocy
każdego   edytora   dostępnego   w   systemie   Linux   (emacs,vi,vim).   Ponieważ,   w   naszym   przypadku,
poznaliśmy tylko vi, więc użyjemy tego właśnie edytora do utworzenia kilku skryptów by zilustrować
najprostsze   zasady  programowania   w   bashu.   Zalogujmy  się   jako   administrator   systemu   (root)   i   po
ukazaniu   się   na   ekranie   znaku   zachęty   (przypominam,   że   w   przypadku   administratora   jest   to    #)
stworzymy plik o nazwie skrypt1

#  vi  skrypt1

#!/bin/bash_
    cal
    who
    date
~                                                                                   
~                                                                                    
~                                                                                    
~                                                                                    
~                                                                                    

Wyjaśnienie :
1. każdy skrypt musi zaczynać się od wypełnienia pierwszej lini przez  #!/bin/bash, która definiuje
ścieżkę dostępu do interpretatora, który wykona a raczej zinterpretuje polecenia zawarte w skrypcie.
W naszym przypadku jest nim  /bin/bash

 2. utworzony pliku o nazwie skrypt1 jest plikiem zwykłym, który  nie może być egzekwowany.
Wykonajmy polecenie

 

#  ls  -l   skrypt1
-rw-r--r--   1   piotr   ola     15 marca 2004  skrypt1

 Jak widzimy prawa użytkownika do pliku są ograniczone do jego czytania i modyfikowania, członkowie
grupy ola i i pozostali użytkownicy systemu mogą go tylko czytać (czy wiesz dlaczego – jeśli nie –
powtórz rozdział …). Utworzony plik  skrypt1 musimy uczynić wykonalnym, innymi słowy chcemy mu
nadać prawo wykonywania, ale prawo to przypiszemy tylko jego właścicielowi. W tym celu musisz
wykonać następujące polecenie :

#  chmod  u+x  skrypt1

  
 Po wykonaniu tego  polecenia powtórzmy raz jeszcze polecenie  ls -l     

ls  -l   skrypt1
-rwxr--r--   1   piotr   ola     15 marca 2004  skrypt1

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  48 

 Czy widzisz różnice ? 1, 2, 3 znak wyświetlonej informacji pozostają bez zmiany, natomiast czwarty
zmienia się z  „-”   na  „x”. Oznacza to, że skrypt1 jest plikiem wykonywalnym przez jego właściciela.
Reszta wyświetlonej informacji pozostaje bez bez zmian co oznacz, że członkowie grupy oraz inni
użytkownicy nie mają prawa wykonywać tego skryptu. Pytanie : w jaki inny sposób możesz przypisać 
prawa wykonywania pliku  tylko przez jego właściciela ?

7 Po wykonaniu polecenia z punktu 2, nasz skrypt może być wyegzekwowany jako polecenie skrypt1.
 

#    skrypt1

     7.1.1  Przekazywanie parametrów do skryptu

      Utwórzmy plik o nazwie katalog1, który będzie zawierał tylko jedno polecenie :

#  vi   katalog1

#!/bin/bash_
                                                                                     
                       ls  -aCF
~                                                                                   
~                                                                                    
~                                                                                    
~                                                                                    
~                                                                                    

 Następnie nadajmy wszystkim użytkownikom prawo do jego  wykonywania   :

#   chmod   a+x  katalog1

W   tym   momencie   skrypt   katalog1   możemy   wyegzekwować,   wiemy   jednak,   że   lista   plików   i
podkatalogów wyświetlona na ekranie dotyczyłaby tylko katalogu bieżącego. Co możemy zrobić by
otrzymać listę plików  z innych katalogów bez  każdorazowego poprawiania skryptu katalog1 ?  Aby
zautomatyzować   (przynajmniej   częściowo)   wyświetlanie   plików   w   różnych  katalogach,   zastosujemy
mechanizm przekazywania parametrów do skryptu. Jak pamiętamy polecenie w linuksie składa się z
samego polecenia np.   ls     , opcji   np.   –l       i argumentów   n.p   /usr. Zarówno opcje jak argumenty
możemy   nazwać  parametrami.   Nazwa   skryptu   jest   też   poleceniem,   któremu   możemy   przekazać
parametry, z tym że parametry przekazywane do skryptu przypisywane są zmiennym, które oznaczamy
jako     $1, S2……S9. $1 odpowiada pierwszemu argumentowi polecenia,   $2 drugiemu itd. Co to w
praktyce oznacza  ?   Przypuśćmy, że chcemy wyświetlić  na ekranie –  egzekwując  skrypt katalog1 –
zawartość katalogu  /tmp, w tym celu wykonamy następujące polecenie :

                                  #     katalog1  /tmp

                                                       Jest to wartość, którą przyjmuje zmienna  $1 (pierwszy argument       

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  49 

                                                       polecenia  katalog1), z czego wynika, że nasz skrypt musimy zmienić

       w następujący sposób :

 #!/bin/bash_
                                                                                     
                       ls  -aCF  $1
~                                                                                   
~                                                                                    
~                                                                                    
~                                                                                    
~                                                                                    

                                                   $1 przybiera zawsze wartość pierwszego argumentu polecenia w tym  
                                                   wypadku  /tmp, jeżeli chcielibyśmy obejrzeć zawartość katalogu /usr

    to musimy wykonać polecenie

#  katalog1 /usr

                                                $1 przybierze w tym wypadku wartość  /usr

  Dodajmy, że istnieje także zmienna  $0 zawiera nazwę skryptu (polecenia). Wiemy, że możemy
skryptowi przekazać 9 parametrów od $1 do $9, Linux dostarcza nam także inne zmienne zdefiniowane
w systemie, które ułatwiają programowanie w bashu :

  #

  zmienna ta zawiera liczbę parametrów przekazanych do skryptu

  *

  zmienna ta zawiera listę parametrów przekazanych do skryptu

  
  ?

  zmienna ta zawiera kod zwrotu ostatniego polecenia wykonanego przez skrypt

  $

  zmienna ta zawiera numer procesu – PID

  

 

  

7.3 Klasyfikacja procesów

Linux jest systemem wielozadaniowym, który umożliwia wykonywanie wielu poleceń jednocześnie.
Egzekucja polecenia jest identyfikowana przez system przy pomocy numeru identyfikacyjnego PID
przypisanego każdemu procesowi, który jest egzekwowany (egzekucja polecenia uruchamia 
proces). System otrzymując od użytkownika polecenie,uruchamia, czekając na jego zakończenie. O
takim poleceniu mówimy, że jest pierwszoplanowe (foreground). Terminal jest zablokowany do
momentu zakończenia zadania. Wyobraźmy sobie (a nie jest to bynajmniej rzadkie), że wykonanie
naszego polecenia (np polecenia find) może trwać wiele minut. Rzecz jasna możemy zalogować się na

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  50 

innej konsoli wirtualnej i tam możemy uruchamiać kolejne zadania. Innym sposobem postępowania z
„długotrwałymi” zadaniami jest uruchamianie ich w tle. Zadanie uruchamiamy jako drugoplanowe
wpisując na końcu linii poleceń znak 

ampresand   & .

Różnice między zadaniem pierwszoplanowym i drugoplanowym można zilustrować w następujący 
Sposób

       who   ----------

   who  ------------ date    (najpierw następuje egzekucja i wyświetlenie

       date                                                                  rezultatu polecenia „who”, a następnie „date”

       who& ------ ----------------------                        (jednoczesna egzekucja who i date)

           date&         |

         |

                                |

7.4 Polecenia 

                      

               

  9.4.1 Polecenie  -  ps

Polecenie   -  ps     opcje  -   pozwala   otrzymać   informacje   o   odbywających   się   aktualnie   w   pamięci
komputera, procesach. Jeżeli wykonujemy samo polecenie  ps  bez opcji to wtedy na ekranie ukazują się
procesy   użytkownika,   który   wykonał   polecenie     ps.   Opcja    -u     nazwa   użytkownika    pozwala
wyselekcjonować procesy tego użytkownika dla wszystkich jego logowań. Inne opcje to

-e   

  wyświetla informacje o wszystkich aktualnie odbywających się procesach

-f   

 wyświetla, dla każdego procesu następujące informacje  :

                      - nazwę użytkownika  (UID)
                      - numer procesu  (PID)
                      - numer ojca procesu (PPID)
                      - godzinę egzekucji procesu (STIME)
                      - imie komputera  (TTY)

          - czas egzekucji procesu  (TIME)

   Przykłady  :

  $  ps

     PID

TTY TIME

CMD

     3408

pts/1 0:00

ps

     10804

pts/1 0:20

-ksh

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  51 

  $  ps  -ef

     UID

PID

PPID

C   STIME    TTY

TIME     CMD

     root

    1

      0

0    May18      ?

       00:00:03     init

     root

 300         1

0    May18      ?

       00:00:08     syslogd   -m  0

     daemon

 327         1

0    May18      ?

       00:00:00     /usr/sbin/atd

     root

 343         1

0    May18      ?

       00:00:00     crond

     root

 359         1

0    May18      ?

       00:00:03     inted

     root

 411         1

0    May18      ?

       00:00:00     sendmail

     root

 444         1

0    May18      ?

       00:00:00     httpd

     piotr         11736  11731

0    13:45        pts/0

       00:00:00    /bin/bash

     piotr         11737  11732

0    13:45        pts/1

       00:00:00     /bin/bash  

     piotr         11738  11733

0    13:45        pts/0

       00:00:00     /bin/bash

  $  ps  -e

     PID

TTY

TIME COMD

 

 

 7.4.2 Polecenie   -  kill

Z uruchomionymi procesami możemy komunikować sie przy pomocy sygnałów, to właśnie

           polecenie  kill umożliwia wysyłanie różnych sygnałów do procesów zarówno pierwszo jak i
           drugoplanowych. Rodzaj sygnału jest określony przez jego numer lub nazwę.

$  kill  -9    

 zlikwidowanie procesu

$  kill 19   

   zatrzymanie wykonywania procesu z możliwością późniejszego jego

                                                Wznowienia

$  kill  2   

    przerwanie wykonania procesu z klawiatury   (Carl +c)

Można zlikwidować konkretny proces tylko trzeba  znać jego numer PID

$  ps  -u    piotr    

  wyświetla procesy użytkownika   piotr

PID

TTY TIME COMD

250

pts/1 0:02

bash

259

  ?

0:15

plika

$  kill  259

  

$  ps  -u    piotr    

  

PID

TTY TIME COMD

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  52 

250

pts/1 0:02

bash

  

7.5   Zarządzanie „pracami”

              
             

Zapewne zwróciłeś już uwagę, ze w tym rozdziale wprowadziliśmy nowe pojęcia „zadania”.

               Czym jest „zadanie” i czym ono się różni od np polecenia procesu. Otóż termin ten 
               Rozpatrujemy nie w kontekście systemu, lecz w kontekście pracy konkretnego użytkownika
               np  uruchomiony edytor tekstowy będzie konkretnym procesem w systemie, ale też 
              jednocześnie zadaniem użytkownika, który realizuje swój cel – napisanie tekstu.. Czyli 
              możemy określić zadanie jako zlecenie systemowi przez użytkownika określonego działania.
              Zilustrujmy pojęcie zadania na konkretnym przykładzie. Wykonamy następujące polecenie

                          $    ls –R  /     

  Jak pamiętasz polecenie  ls wyświetla pliki w katalogu (w tym przypadku wyświetli co ?)

              Zatrzymajmy egzekucję tego polecenia przy pomocy kombinacji klawiszy   [Ctrl]  +  z

 Na ekranie  otrzymamy następującą informacje :

  

[1]+ Stoppel                                   ls   -R/

Wykonajmy raz jeszcze :

$    ls –R  /     

I raz jeszcze zatrzymajmy egzekucje polecenia. Otrzymamy następujące informacje na ekranie

[2]+ Stoppel                                   ls   -R/

W tym momencie wykonamy polecenie jobs , które wyświetla listę zadań na ekranie

$ jobs

[1]+ Stopped                                   ls   -R/
[2]+ Stopped                                   ls   -R/

Jeżeli zastosujemy w poleceniu jobs opcje  -l otrzymamy na ekranie cenne informacje

$ jobs  -l

[1]+ Stopped        122                     ls   -R/
[2]+ Stopped        123                     ls   -R/

Liczba   122   I   123 to numery bezwzględnych identyfikatorów procesów PID.

Do ponownego uruchomienia zatrzymanego zadania na pierwszym planie używamy polecenia 
fg. Do ponownego uruchomienia zatrzymanego zadania na drugim planie używamy polecenia
bg. 

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  53 

            

Jeżeli chcemy uruchomić , których z zatrzymanych procesów   ls –R /  to należy wykonać

$ fg    %1 

Lub 

$ fg    %2 

     

      7. 6  Ćwiczenia

Ćwiczenie 1                                                                                                                                           

Wykonaj polecenie „ps” i wyjaśnij znaczenie każdej wyświetlonej kolumny

Ćwiczenie  2                                                                                                                                                

Utwórz skrypt, który wyświetla co 30 sekund  „dzien dobry’’. Możesz tego dokonać używając polecenia
: cat

$ cat > dzien dobry
#!/bin/bash
While true
  
do 
           Banner dzien dobry
done

Ctrl-D

$

Wyegzekwuj ten skrypt poza planem i wyświetl jego PID, a następnie numer wykonywanego zadania

Ćwiczenie  3

 Zlikwiduj egzekucje tego skryptu używając jego nr. PID albo nr. zadania

Ćwiczenie  4
                 Wykonaj polecenie     :

$  ps aux

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  54 

            Co otrzymasz na ekranie ?

  Ćwiczenie  5

              

 [123]+  Stopped         522                     
 [122]+   Stopped        523                     

Dzięki jakiemu poleceniu otrzymamy powyższe informacje ?

Rozdział   9    :    Wyrażenia Regularne

Do tego celu wyrażenia regularne – będące podstawą konstrukcji systemu Unix i Linux są idealnym
narzędziem. Warto się z nimi zaznajomić gdyż wbrew pozorom ich opanowanie nie jest zbyt trudne.
Przedstawię  tzw  podstawowe  symbole  wyrażenia  regularne   (BRE  ,  Basic  Regular  Expression)   oraz
rozszerzone wyrażenia regularne (ERE, extender Regular Expressions).
Odkrycie   wyrażeń   regularnych   związane   jest   z   pierwszymi   teoretycznymi   pracami   nad   opisowymi
językami symbolicznymi prowadzonymi przez matematyka Stephen Kleene (1909-1994). Sformułował
on   pierwszy   założenia   umożliwiające   zdefiniowanie   tzw   zbiorów   regularnych,   wykorzystanych
początkowo do przekazywania w sieciach neuronów informacji, a następnie zastosowanych do budowy
kompilatorów.   Trzeba   jednak   podkreślić,   że   wyrażania   regularne   mają   zastosowanie   także   poza
informatyką;   stosuje   się   je   w   lingwistyce   do   tzw   analizy   tekstowej   oraz   do   definiowania   praw   w
gramatyce  teoretycznej;   w  biologi   do  odszyfrowania   sekwencji  ludzkiego  genomu,  w   neurologii;  w
elektronice do modelowania obwodów elektrycznych itd. Interdyscyplinarny aspekt wyrażeń regularnych
jest szczególnie ważny w procesie nauczania. 
Spróbujmy odpowiedzieć na pytanie : dlaczego praktyczne poznanie wyrażeń regularnych jest tak ważne
nie tylko dla informatyków, ale także np dla tych, którzy zajmują się przerabianiem, wyszukiwaniem  -
w Internecie - informacji? 
Aby przybliżyć czytelnikowi problem przedstawiony w tym rozdziale wyobraźmy sobie następującą
sytuacje : jakiś autor zredagował tekst, którego kolejne rozdziały ponumerował w następujący sposób:

1-1,    1-2,    1-3,

    itd 

i chce następnie zmienić formę ich numeracji na

 

§ 1.1,   § 1.2,    § 1.3.

  Wyszukanie i zmienienie nazw rozdziałów wymaga przejrzenia   całego tekstu co wiąże się z utratą
sporej ilości czasu i zmęczeniem, a więc możliwością popełnienia błędu. Wyrażenia regularne – czasami
nazywane   wyrażeniami   racjonalnymi   –   dostarczają   nam   reguł,   które   umożliwiają   zdefiniowanie
symboliczne tego czego szukamy, w tym wypadku liczby po której następuje myślnik po którym znów
następuje liczba. Wyrażenie typu
 

1-1,    1-2,    1-3,

   itd 

jest wyrażeniem znakowym (lub literalnym) . Natomiast wyrażenie typu \d-\d jest opisem abstrakcyjnym
w/w wyrażeń znakowych, \d jest konwencją używaną w wyrażeniach regularnych do oznaczenia zbioru

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  55 

liczb całkowitych 0-9. Jednak jeśli numer rozdziału będzie większy od 9  np 10-1 lub 1-10 to wyrażenie
regularne \d-\d go nie odnajdzie, dlatego też musimy je uogólnić na wszystkie liczby całkowite. W tym
celu po literze d dorzucamy znak +, który oznacza ‘’wyszukaj jedną lub wiele liczb zawartych w zbiorze
0-9’’, otrzymujemy zapis

 \d+-\d+ 

spełniający wymogi naszego uogólnienia. Tak więc w przeciwieństwie do ciągu literalnego typu 1-1,
100, abcd, FBR, wyrażenia regularne mogą w sposób abstrakcyjny przedstawić dowolny ciąg znaków..
Oto kilka typowych sytuacji w których symbole wyrażeń regularnych są często używane.
- wyszukanie określonego ciągu znaków – np w tekście dotyczącym chemii organicznej odnalezienie
wszystkich terminów zaczynających się przedrostkiem ortho lub w spisie plików znalezienie tych, które
kończą się na .doc
- zmiana tekstu w stronice Internetową
- zmiana w tekście formy pewnych słów np dużo-literowych na mało-literowe lub odwrotnie
- analiza prawomocności wartości przekazanej : np oczekujemy, że użytkownik wystuka na klawiaturze
adres elektroniczny lub liczbę o szczególnej formie : wyrażenie regularne umożliwi wykrycie błędu
- przeformatowanie ustrukturalizowanego tekstu : np bibliograficzna baza danych przedstawiona jest w
formie, którą chcemy zmienić umiejscawiając datę publikacji po nazwisku autora a nie po tytule jak było
dotychczas.
Przedstawię teraz tzw podstawowe symbole wyrażenia regularne (BRE , Basic Regular Expression)

    kropka : odpowiada dowolnemu pojedynczemu znakowi z wyjątkiem znaku przedstawiającego

koniec linii – np wyrażenie regularne  

b.l

  przedstawia zarówno słowo  

bal

  jak  

bol  

jak i każdą inną

kombinacje typu  

bel,   bil,   bpl

, etc

[ ]

     

  pozwala dopasować dowolny znak ze zbioru zawartego między nawiasami, wszystkie znaki

występujące   między  nawiasami   mają   zwykłe   znaczenie   oprócz   myślnika   -  ,   który  jest   używany  do
tworzenia zakresu znaków np [a-z] oznacza każdą małą literę alfabetu. Znak  ^, który umiejscowiony na
początku  nawiasów  [^    ]  wyznacza  negacje  zbioru  zdefiniowanego  między  nawiasami  np     [^0-9]
oznacza wszystkie znaki oprócz 0,1,2,3,4,5,6,7,8,9 etc

*    

 gwiazdka dopasowuje zero lub więcej wystąpień znaków poprzedzających *. Zwracamy uwagę,

że   gwiazdka   w   wyrażeniach   regularnych  ma   inne   znaczenie   niż   gwiazdka   w     generowaniu   nazwy
plików,   w   tym   przypadku   *   oznacza   dowolnie   długi   –   także   pusty   –   ciąg   różnych   znaków.   W
wyrażeniach regularnych dowolny ciąg dowolnych znaków zapisujemy jako 

.*

^    

 akcent w formie daszka wskazuje,że ciąg znaków występujący po nim znajduje się na początku

linii.

$     

 

dolar jest przeciwieństwem ^ i wskazuje, że ciąg znaków , który go bezpośrednio poprzedza

znajduje się na końcu wiersza 

\           

 

neutralizuje znaczenie znaku specjalnego np \$ będzie oznaczał znak dolara $ a nie znak

wyrażenia regularnego wskazującego, że ciąg znaków go poprzedzający znajduje się na końcu wiersza

Interpretacja  „wyrażenia regularnego’’

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  56 

Przeanalizujmy kilka wyrażeń regularnych aby lepiej zrozumieć ich działanie. Wyrażenie, które pozwala
w tekście wyszukać linie białe (niezapisane) ,ma postać następującą :

                                                                 ^$

używamy   w   nim   tylko   znaku   ^   i   $,   które   oznaczają   początek   i   koniec   linii   (wiersza).Wyrażenie
wskazuje,   że   pomiędzy   początkiem   i   końcem   linii   nie   ma   nic,   co   odpowiada   linii   całkowicie
niezapisanej.   Porównajmy   teraz   dwa   wyrażenia   regularne   i   spróbujmy   dokładnie   określić   różnice
zachodzące pomiędzy nimi.

                           

WR1 

  

      ^.*$       :    WR2     ^.+$

W wyrażeniu WR1 na 3 pozycji znajduje  się  gwiazdka  natomiast  w wyrażaniu WR2 na tej samej
pozycji znajduje się znak  plus,   co zmienia radykalnie zakres działania obu wyrażeń : WR1 wyszuka
zarówno linie zapisane jak i niezapisane natomiast WR2 selekcjonuje tylko linie zapisane. Dlaczego?
(spróbuj odpowiedzieć na to sam)

Spróbujmy znaleźć znaczenie następującego wyrażenia regularnego :

^\* [0-9]*\. [0-9][0-9]\$.*$

Jak widzimy powyższe „wyrażenie regularne”, biorąc pod uwagę, że jest ono skomponowane z samych
wieloznacznych symboli, może stać się całkowicie niezrozumiałe : jedyna metoda by  odszyfrować (jak
w  podanym  przykładzie)  jego  znaczenie  polega na  dekompozycji  wyrażenia  na mniejsze  fragmenty
poczynając od strony lewej i posuwając się w prawo. Postępując w ten sposób nasz przykład możemy
przedstawić w następującej formie :
                              1    2    3       4       5          6           7     8   9    
                              ^   \*         [0-9]*   \.   [0-9][0-9]   \$   .*   $

  1.         Na  pierwszym  miejscu  ^,  który  oznacza,  że  poszukiwany  ciąg  znaków   znajduje   się  na
początku wiersza (linii)

 2.      Na drugim miejscu znajdujemy wyrażenie \*, które znaczy, że pierwszy znak z tego ciągu
jest  „* ” (czy wiesz dlaczego ?)

 3.       Na trzecim miejscu  w szukanym ciągu znaków znajduje się spacja

 4.       Na czwartym miejscu wyrażenie [0-9]* oznacza obojętnie jaką liczbę lub jej brak

 5.      Na piątym miejscu znajdujemy wyrażenie  \., które oznacza że piątym znakiem ciągu jest  „.”

6.       Na szóstym miejscu powinniśmy znaleźć liczbę dwucyfrową

 7.      Na siódmym miejscu wyrażenie \$ oznacz, że w tym miejscu musi koniecznie znajdować się
znak monetarny dolara :  „$”

 8.       Na ósmym miejscu znajdujemy wyrażenie, które oznacza jakakolwiek liczba znaków (może
być zero)
 
  9.             Na dziewiątym miejscu znajdujemy $, który oznacza koniec linii znak ten powinniśmy
rozpatrywać   wspólnie   z   poprzedzającym   go   wyrażeniem     .*,   które   jak   pamiętamy   oznacza   :

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  57 

jakąkolwiek liczbę znaków z tego wynika, że wyrażenie  .*$ oznacza jakąkolwiek liczbę znaków do
końca wiersza

 Z powyższej analizy wynika jeden bardzo ważny wniosek : wyrażenie  .* można używać jako wyrażenie
regularne, lecz trzeba mieć świadomość, że używane w formie wyizolowanej, jego użyteczność nie ma
większego znaczenia, ponieważ odpowiada ono poszukiwaniu pustego ciągu znaków. Inaczej mówiąc
poszukiwania   ciągu   znaków   korespondującego   wyrażeniu     .*   zanim   się   rozpoczną   już   się   kończą
znajdując pusty ciąg znaków

 Rozszerzone wyrażenia regularne

+    

 znak plus służy do wyszukania co najmniej jednego go poprzedzającego, tak więc a+ oznacza

jedna lub wiele liter a, natomiast a* wyszykuje 0 lub więcej znaków a

( )   

 nawiasy służą do grupowania wyrażeń regularnych n.p (bla)* pozwala znaleźć w tekście bla i

blabla blablabla etc.

?     

   pozwala wyszukać 0 lub jedną obecność zdefiniowanego ciągu znaków. Tak więc wyrażenie

(\.com)? pozwala wyszukać nazwy plików kończące się na .com, przy czym nieobecność pliku o takim
zakończeniu jest dopuszczalna (0 lub…)

 |  

    pozwala wyszukiwać ciągi znaków alternatywne

Przykłady : 
$  cat    plik

123 plik służy 
45 do przedstawienia
678 podstawowych założeń
wyrażeń regularnych

$ grep ‘sluzy$’   plik                       #szukamy „sluzy” na końcu linii

 123 plik sluzy

$ grep ‘i.*i’   plik     #szukamy linii, która zawiera co najmniej dwie litery „i”

45 do przedstawienia

$ grep  `^[a-zA-Z]* plik       #wyszykujemy linie zawierające tylko litry alfabetu

wyrażeń regularnych

$ sed `s/^[0-9]*//`   plik          #znosimy numerowanie linii

 plik służy 

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  58 

 do przedstawienia
 podstawowych założeń

wyrażeń regularnych

$ ls -l  |  grep ‘^d’     #wyszykujemy katalogi

drwxrwxr-x    2    piotr     1024………………….

$ ls  -p |  grep ‘/$’        #wyszukujemy katalogi

$  ls –a  | grep ‘^\.’      #wyświetlamy tylko pliki zaczynające się od  „.”
.
..
.profile

9.1 Polecenie find

Polecenie find służy do wyszukiwania, według ściśle  określonych kryteriów, pliku (lub plików)   w
drzewie   katalogowym.   Jeżeli     kryteria   są   pozytywnie   zweryfikowane   (to   znaczy   plik   lub   pliki   są
znalezione)   to   wtedy   możemy   wykonać   na   nich   określone   działania.   Ogólny   wzór   polecenia   find
wygląda następująco :

find   katalog  [kryteria wyszukiwania] [kryteria egzekucji]

Wyliczmy najpierw kryteria wyszukiwania

-name   plik             szukany plik musi nazywać się plik.txt

-type     plik            plik może przyjmować następujące wartości 
                                f    -  plik regularny
                               d    -  katalog
                               c,b -  pliki specjalne

-size                        plik musi mieć odpowiednia objętość

-user     piotr           plik ma właściciela który nazywa się piotr

-group  ada             plik przynależy do grupy ada

Wyliczmy teraz kryteria egzekucji

-print                #wyświetla ścieżkę dostępu do znalezionego pliku

-exec cmd  {} \; wykonuje polecenie cmde z argumentem pliku

 

Operacje logiczne            wyrażenie w poleceniu find

ET          

-a

OU

-b

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  59 

NON

!   

Posłużmy się kilkoma prostymi przykładami :

$  find    /home   -name   ‘*.c’  -print   #objaśnienie  :  szukamy w katalogu /home czyli szukamy pliku
                                                                znajdujących się u wszystkich użytkowników   - kryterium 
                                                                wyszukiwania dotyczy nazwy plików (wskazuje na to –name)

     nazwy te wyznaczone są przez  ‘*.c’ – (czy mógłbyś sam

                                                                objaśnić to wyrażenie ? ), następnie jeżeli kryteria     
                                                                wyszukiwania są pozytywnie zweryfikowane, wyświetlamy je
                                                                (-print –kryterium egzekucji) na ekranie

$  find  .  –type  d  -print                      #wyświetla tylko nazwy katalogów
    
               
$  find   /home  -name  ‘*c’  -print     # wyświetla z katalogu domowego tylko te pliki których sufiks  
                                                                  Równa się c 

$  find /home/piotr  ! –group users –prinr    # poszukiwanie plików które nie należą do grupy

       users

 

9.2  Polecenie grep z wyrażeniami regularnymi

Do nauki polecenia grep, które używane jest z wyrażeniami regularnymi musimy utworzyć plik

pozwalający zaprezentować wszystkie możliwości zarówno polecenia grep jak i wyrażeń regularnych.
Dane   zawarte   w   tym   pliku   mogą   wydawać   się   sztuczne   lecz   umożliwią   nam   one   z   względnie
wystarczającym zapoznaniem się z omawianym tematem. Przy pomocy edytora vi (patrz rozdział IX)
utwórzmy plik  o nazwie dataplik :

  $  vi  dataplik

 i wprowadźmy następujące dane  :
                        

                              
                                                     Znaczenie danych zawartych w kolumnach

Nazwa                   symbol              Imie i nazwisko        Liczba          wykonanie    liczba        liczba
regionu                  regionu             dyrektora   per.      Pododdziałów     planu w %   towarów   personelu

Kregkato

KA

Jan Kowalski             23

    .98.             \3\

       88

Kregkato

KA

Piotr Pawlak       

23

    .98.             \3\            88

Pregpod

PO

Krzysztof Wrak

25

    .45.             \2\

       77

Cregcent

CE

Jola Kruk

19

    .74             \1\

       65

Mregmazu

MA

Urszula Kropiuk

14

    .54.             \5\               85

Pregpod

PO

Zygmunt Malina

25

    .45.             \2\

       54

Wregwielko

WK

Marian Kluska

35

    .98.             \4\

       91

Greggda

GD

Katarzyna  Polak

58

    .69.             \9\

       87

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  60 

Cregcent

CE

Mariusz Pol      

19

    .54.              \1\

       25

przypominam, że po wpisaniu danych naciskamy przycisk [Esc] następnie wystukujemy :, który ukazuje
się w dolnym lewym rogu i wprowadzamy polecenie   :wq. Plik  dataplik jest utworzony i możemy go
zacząć testować przy pomocy polecenia grep zawierającego lub nie zawierającego wyrażenia regularne.

Przykłady :

 $ grep  WK  dataplik 

 regwielko

WK

Marian Kluska

35

    .98.             \4\

       91

Wyjaśnienie :

Na ekranie wyświetlają się linie zawierające wyrażenie regularne  WK znajdujące się w pliku dataplik

 $ grep   ‘^C’  dataplik

Cregcent

CE

Jola Kruk

19

    .74             \1\

       65

Cregcent

CE

Mariusz Pol      

19

    .54.              \1\        25

Wyjaśnienie :

Na ekranie wyświetlają się wszystkie linie zaczynające się od  „C”

 $ grep  ‘4$’   dataplik

Pregpod

PO

Zygmunt Malina

25

    .45.

            \2\

       54

Wyjaśnienie :

Na ekranie wyświetlają się linie kończące się cyfrą „4”

 $  grep  ‘4\. ’  dataplik

Cregcent

CE

Jola Kruk

19

    .74.

            \1\

       65

Mregmazu

MA

Urszula Kropiuk

14

    .54.

            \5\            85

Cregcent

CE

Mariusz Pol      

19

    .54.              \1\        25

Wyjaśnienie :

Na ekranie wyświetlają się linie zawierające cyfrę „4” po której następuje  kropka „.” i następnie spacja „

 $  grep  ‘\\3\\’  dataplik

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  61 

Kregkato

KA

Jan Kowalski

            23

    .98.

            \3\

88
Kregkato

KA

Piotr Pawlak       

23

    .98.

            \3\            88

 Wyjaśnienie :

Na ekranie wyświetlają się linie zawierające cyfrę „3” obramowaną przez \3\

$  grep  ‘^[KW]’  dataplik

Kregkato

KA

Jan Kowalski

            23

    .98.

            \3\

88
Kregkato

KA

Piotr Pawlak       

23

    .98.

            \3\            88

Wregwielko

WK

Marian Kluska

35

    .98.

            \4\

       91

Wyjaśnienie : 

Na ekranie wyświetlają się wszystkie linie zaczynające się o litery „K”  albo „W”.

 $  grep ‘[A-Z][A-]  [A-Z][A-Z]

Kregkato

KA

AB Kowalski             23

    .98.             \3\

       88

Greggda

GD

DA  Polak

            58

    .69.             \9\

       87

Wyjaśnienie :

Na  ekranie   wyświetlają  się   linie  zawierające  dwie  duże   litery następujące  natychmiast  po  sobie   po
których występuje spacja i znów dwie duże litery następujące natychmiast po sobie.

 $  grep ‘ll* ‘  dataplik

Cregcent

CE

Jola Krul

19

    .74             \1\

       65

Cregcent

CE

Mariusz Poll      

19

    .54.              \1\

       25

 Wyjaśnienie :

Na ekranie wyświetlają się linie zawierające małą literę „l” po której występuje zero lub więcej razy
także mała litera „l” po której następuje spacja

 

9.3  Edytor sed

 Edytor  sed czyli edytor strumienia linii jest narzędziem informatycznym używanym do wyszukiwania  -
wg wzorca opartego zazwyczaj na regułach zdefiniowanych w wyrażeniach regularnych – linii w pliku,
do ich zmieniania   wyświetlania na ekranie czy też skierowywania rezultatów manipulacji do nowego
pliku . Ogólny wzorzec polecenia sed wygląda następująco :

sed  opcja  ‘wyszukiwany wzorzec’  nazwa_pliku  

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  62 

sed posiada następujące funkcje, których zastosowanie przetestujemy w ćwiczeniach :

Opcje

-e                   wielokrotne wyświetlanie linii

-n                   nie wyświetla na ekranie linii, które nie były zmodyfikowane

-f  ,plika>      plik   plika zawiera program z wyrażeniami sed

Znaki specjalne używane przez edytor sed

 

^     

wyszukuje linie zaczynające się od wyrazu poprzedzonego tym znakiem

                n.p ^love   wyświetla wszystkie linie w pliku, które na początku maja love

$    

wyszukuje linie kończące sie  wyrazem zakończonym tym znakiem

                np love$   wyświetla wszystkie linie w pliku, które na końcu mają  love

.    

wyszukuje linie z jednym znakiem np /l..e/ wyszukuje linie zawierające l po

              Nim dwa obojętnie jakie znaki zakończone znakiem e

*   

wyszukuje zero lub więcej linii poszukiwanego ciągu znaków   /  *love/ wyszukuje linie z 

              Zerem lub więcej spacji po której następuje słowo love

[]    

wyszukuje jeden znak w danym zbiorze  n.p  /[Ll]ove/  wyszukuje linie, które zawierają

               Słowo love  lub Love

[^ ] 

wyszukuje jeden znak nie zawarty w zbiorze  n.p   /[^A-KM-Z]ove/ wyszukuje linie nie 

                Zawierające zbioru od A do Z lub od M do i zakończone ove

Funkcje

s        zmiana jednego ciągu znaków na inny n.p 

$  sed ‘s/root/adm/g’    /etc/passwd

             zmiana w pliku /etc/passwd  słowa “root” na „adm”

d    usuwanie linii

c    zmiana tekstu w danej linii na nowy tekst

a    dorzucenie nowych linii

p   wyświetlenie wszystkich linii zawartych w pliku

g   dotyczy całości pliku

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  63 

 

Przetestujemy teraz funkcjonowanie sed używając do tego celu tego samego pliku dataplik którego
zawartość drukujemy poniżej.
                               
Nazwa            symbol         Imie i nazwisko         Liczba                      Plan       liczba        liczba
regionu           regionu        dyrektora   per.         Pododdziałów            w %     towarów   personelu

Kregkato

KA

AB Kowalski             23

    .98.             \3\

       88

Kregkato

KA

Piotr Pawlak       

23

    .98.             \3\            88

Pregpod

PO

Krzysztof Wrak

25

    .45.             \2\

       77

Cregcent

CE

Jola Krul

19

    .74             \1\

       65

Mregmazu

MA

Urszula Kropiuk

14

    .54.             \5\              85

Pregpod

PO

Zygmunt Malina

25

    .45.             \2\

       54

Wregwielko

WK

Marian Kluska

35

    .98.             \4\

       91

Greggda

GD

DA  Polak

            58

    .69.             \9\

       87

Cregcent

CE

Mariusz Poll      

19

    .54.              \1\

       25

 $  sed  ‘4q’  dataplik

Kregkato

KA

AB Kowalski             23

    .98.             \3\

       88

Kregkato

KA

Piotr Pawlak       

23

    .98.             \3\            88

Pregpod

PO

Krzysztof Wrak

25

    .45.             \2\

       77

Cregcent

CE

Jola Krul

19

    .74             \1\

       65

Wyjaśnienie  : wyświetlamy tylko 4 pierwsze linie

$  sed  ‘/KA/p’  dataplik

Kregkato

KA

AB Kowalski             23

    .98.

            \3\

       88

Kregkato

KA

Piotr Pawlak       

23

    .98.

            \3\            88

Pregpod

PO

Krzysztof Wrak

25

    .45.

            \2\

       77

Cregcent

CE

Jola Krul

19

    .74             \1\

       65

Mregmazu

MA

Urszula Kropiuk

14

    .54.

            \5\            85

Pregpod

PO

Zygmunt Malina

25

    .45.

            \2\

       54

Wregwielko

WK

Marian Kluska

35

    .98.

            \4\

       91

Greggda

GD

DA  Polak

            58

    .69.

            \9\

       87

Cregcent

CE

Mariusz Poll      

19

    .54.              \1\        25

Wyjaśnienie  : wyświetlamy z opcja p całość pliku mimo istnienia /KA/

 

 $  sed   -n   ‘/KA/p’  dataplik

Kregkato

KA

AB Kowalski             23

    .98.

            \3\

       88

Kregkato

KA

Piotr Pawlak       

23

    .98.

            \3\            88

Wyjaśnienie : to opcja –n umożliwia nam wyświetlenie linii zawierających poszukiwany ciąg znaków
 W tym wypadku /KA/

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  64 

  $  sed  ‘2d’  dataplik

Nazwa                   symbol              Imie i nazwisko        Liczba          wykonanie    liczba        liczba
regionu                  regionu             dyrektora   per.      Pododdziałów     planu w %   towarów   personelu

Kregkato

KA

AB Kowalski             23

    .98.

            \3\

       88

Pregpod

PO

Krzysztof Wrak

25

    .45.

            \2\

       77

Cregcent

CE

Jola Krul

19

    .74             \1\

       65

Mregmazu

MA

Urszula Kropiuk

14

    .54.

            \5\            85

Pregpod

PO

Zygmunt Malina

25

    .45.

            \2\

       54

Wregwielko

WK

Marian Kluska

35

    .98.

            \4\

       91

Greggda

GD

DA  Polak

            58

    .69.

            \9\

       87

Cregcent

CE

Mariusz Poll      

19

    .54.             \1\

       25

 Wyjaśnienie :   usunięcie drugiej linii z pliku

$  sed   ‘5,$d’  dataplik

Pregpod

PO

Zygmunt Malina

25

    .45.             \2\

       54

Wregwielko

WK

Marian Kluska

35

    .98.             \4\

       91

Greggda

GD

DA  Polak

            58

    .69.             \9\

       87

Cregcent

CE

Mariusz Poll      

19

    .54.              \1\

       25

                                                                                                                                 
Wyjaśnienie  : usunięcie wszystkich linii do piątej linii od końca

  $  sed  ‘$d’   dataplik

Kregkato

KA

AB Kowalski             23

    .98.             \3\

       88

Kregkato

KA

Piotr Pawlak       

23

    .98.             \3\            88

Pregpod

PO

Krzysztof Wrak

25

    .45.             \2\

       77

Cregcent

CE

Jola Krul

19

    .74             \1\

       65

Mregmazu

MA

Urszula Kropiuk

14

    .54.             \5\               85

Pregpod

PO

Zygmunt Malina

25

    .45.             \2\

       54

Wregwielko

WK

Marian Kluska

35

    .98.             \4\

       91

Greggda

GD

DA  Polak

            58

    .69.             \9\

       87

Wyjaśnienie  :  usunięcie ostatniej linii

  $ sed  ‘/KA/d’  dataplik

Pregpod

PO

Krzysztof Wrak

25

    .45.             \2\

       77

Cregcent

CE

Jola Krul

19

    .74             \1\

       65

Mregmazu

MA

Urszula Kropiuk

14

    .54.             \5\               85

Pregpod

PO

Zygmunt Malina

25

    .45.             \2\

       54

Wregwielko

WK

Marian Kluska

35

    .98.             \4\

       91

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  65 

Greggda

GD

DA  Polak

            58

    .69.             \9\

       87

Cregcent

CE

Mariusz Poll      

19

    .54.              

Wyjaśnienie  :  usunięcie linii zawierających ciąg znaków KA

 $  sed  ‘2,3d’  dataplik

Kregkato

KA

AB Kowalski             23

    .98.             \3\

       88

Cregcent

CE

Jola Krul

19

    .74             \1\

       65

Mregmazu

MA

Urszula Kropiuk

14

    .54.             \5\               85

Pregpod

PO

Zygmunt Malina

25

    .45.             \2\

       54

Wregwielko

WK

Marian Kluska

35

    .98.             \4\

       91

Greggda

GD

DA  Polak

            58

    .69.             \9\

       87

Cregcent

CE

Mariusz Poll      

19

    .54.              \1\

       25

                                                                                                                                 
Wyjaśnienie  :   usunięcie 2 i 3 linii

  $  sed  ‘s/KA/KT/’   dataplik 

Kregkato

KT

AB Kowalski             23

    .98.             \3\

       88

Kregkato

KA

Piotr Pawlak       

23

    .98.             \3\            88

Pregpod

PO

Krzysztof Wrak

25

    .45.             \2\

       77

Cregcent

CE

Jola Krul

19

    .74             \1\

       65

Mregmazu

MA

Urszula Kropiuk

14

    .54.             \5\               85

Pregpod

PO

Zygmunt Malina

25

    .45.             \2\

       54

Wregwielko

WK

Marian Kluska

35

    .98.             \4\

       91

Greggda

GD

DA  Polak

            58

    .69.             \9\

       87

Cregcent

CE

Mariusz Poll      

19

    .54.              \1\

       25

                                                                                                                                 
Wyjaśnienie  :  zmiana ciągu znaków KA  na KT ale tylko w pierwszej napotkanej sekwencji
                         Czy wiesz jaką opcje trzeba dorzucić by w linii drugiej też dokonać analogicznej
                          zmiany ?

  $  sed  ‘s/KA/KT/g’ dataplik

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  66 

Kregkato

KT

AB Kowalski             23

    .98.             \3\

       88

Kregkato

KT

Piotr Pawlak       

23

    .98.             \3\            88

Pregpod

PO

Krzysztof Wrak

25

    .45.             \2\

       77

Cregcent

CE

Jola Krul

19

    .74             \1\

       65

Mregmazu

MA

Urszula Kropiuk

14

    .54.             \5\               85

Pregpod

PO

Zygmunt Malina

25

    .45.             \2\

       54

Wregwielko

WK

Marian Kluska

35

    .98.             \4\

       91

Greggda

GD

DA  Polak

            58

    .69.             \9\

       87

Cregcent

CE

Mariusz Poll      

19

    .54.              \1\

       25

                                                                                                                                 
Wyjaśnienie  :  właśnie opcje „g”

  $   -n   ‘s/^Cre/Ine/p’   dataplik

Inegcent

CE

Jola Krul

19

    .74             \1\

       65

Inegcent

CE

Mariusz Poll      

19

    .54.              \1\

       25

 
Wyjaśnienie  :  jak pamiętamy opcja –n oznacza wyświetlenie tylko linii zmodyfikowanych, w
                         Tym wypadku tych w zamieniono ciąg znaków Cre na Ine

  $  sed   ‘/Kowalski/,/Kropiuk/d’   dataplik

 Pregpod

PO

Zygmunt Malina

25

    .45.             \2\

       54

Wregwielko

WK

Marian Kluska

35

    .98.             \4\

       91

Greggda

GD

DA  Polak

            58

    .69.             \9\

       87

Cregcent

CE

Mariusz Poll      

19

    .54.              \1\

       25

                                                                                                                                 
Wyjaśnienie  :   usunięcie linii od linii zawierającej ciąg znaków Kowalski do linii zawierającej
                           ciąg znaków  Kropiuk

 $  sed  -n  ‘/^Pre/p’  dataplik

Pregpod

PO

Krzysztof Wrak

25

    .45.             \2\

       77

Pregpod

PO

Zygmunt Malina

25

    .45.             \2\

       54

  Wyjaśnienie  :  wyświetlamy tylko linie zawierające na początku ciąg znaków  Pre 

  $  sed  -n  ‘s/Krul/Wrak/gp’   dataplik

Cregcent

CE

Jola Wrak

19

    .74             \1\

       65

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  67 

Wyjaśnienie  : wyświetlamy tylko linię gdzie dokonano zamiany ciągu znaków Krul  na   Wrak
   

 
  Reszta przykładów jest bardziej skomplikowana  musisz wiedzieć, że
   
 wyrażenie     \(…)\   numerowanie ciągu znaków, które chcesz zamienić. Spróbuj rozszyfrować
 
 poniższe przykłady
  

  $  sed  -n  ‘s/\Pa\)wlak/\liwoda/p’   datafile

  Kregkato

KA

Piotr Paliwoda      

23

    .98.             \3\            88 

  Wyjaśnienie  :

  $  sed   ‘/Kowalski/,/Kropiuk/d’   dataplik

 Pregpod

PO

Zygmunt Malina

25

    .45.             \2\

       54

Wregwielko

WK

Marian Kluska

35

    .98.             \4\

       91

Greggda

GD

DA  Polak

            58

    .69.             \9\

       87

Cregcent

CE

Mariusz Poll      

19

    .54.              \1\

       25

                                                                                                                                 
Wyjaśnienie  :   

  $  sed  ‘s/\\[0-9]\\/\*[0-9]\*/p’   dataplik

Kregkato

KA

AB Kowalski             23

    .98.             *3* 

       88

Kregkato

KA

Piotr Pawlak       

23

    .98.             *3*            88

Pregpod

PO

Krzysztof Wrak

25

    .45.             *2*

       77

Cregcent

CE

Jola Krul

19

    .74             *1*

       65

Mregmazu

MA

Urszula Kropiuk

14

    .54.             *5*             85

Pregpod

PO

Zygmunt Malina

25

    .45.             *2*

       54

Wregwielko

WK

Marian Kluska

35

    .98.             *4*

       91

Greggda

GD

DA  Polak

            58

    .69.             *9*

       87

Cregcent

CE

Mariusz Poll      

19

    .54.              *1*

       25

                                                                                                                                 
Wyjaśnienie  :
  
 $  sed  ‘/Kato/,/pod/s/$/@@/’   dataplik

Kregkato

KA

AB Kowalski             23

    .98.             \3\

       88@@

Kregkato

KA

Piotr Pawlak       

23

    .98.             \3\            88@@

Pregpod

PO

Krzysztof Wrak

25

    .45.             \2\

       77@@

                                                                                                                           
  Nazwa                   symbol              Imie i nazwisko        Liczba          wykonanie    liczba        liczba

background image

Autor :   Piotr Piętak                                  Linux

jjjj-07-tt

GR PiS ds. informatyzacji           Podstawy używania systemu                                       strona  68 

regionu                  regionu             dyrektora   per.      Pododdziałów     planu w %   towarów   personelu

Kregkato

KA

AB Kowalski             23

    .98.             \3\

       88

Kregkato

KA

Piotr Pawlak       

23

    .98.             \3\            88

Pregpod

PO

Krzysztof Wrak

25

    .45.             \2\

       77

Cregcent

CE

Jola Krul

19

    .74             \1\

       65

Mregmazu

MA

Urszula Kropiuk

14

    .54.             \5\               85

Pregpod

PO

Zygmunt Malina

25

    .45.             \2\

       54

Wregwielko

WK

Marian Kluska

35

    .98.             \4\

       91

Greggda

GD

DA  Polak

            58

    .69.             \9\

       87

Cregcent

CE

Mariusz Poll      

19

    .54.              \1\

       25

  

-rw-r—r--    1    piotr     Oracle      0       May   3     15:14   2003,  plik1
-rwxr—r--    1   root       sys           514   May   15   16:14   2003,  plik1
10  blocks