Linux Podstawy używania systemu

Transkrypt

Linux Podstawy używania systemu
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
strona 1
Linux
Podstawy używania systemu
Spis Treści
Strona
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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”
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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 :
8.1
8.2
8.3
Wyrażenia regularne
Polecenie find
Polecenie grep z wyrażeniami regularnymi
edytor sed
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Rozdział 1 :
Linux
Podstawy używania systemu
jjjj-07-tt
strona 4
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ęć
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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ść.
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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 :
Password :

$ who
$ date
$ cal
Login :

$ exit

Password
3.2 Pierwsze polecenia
•
•
•
•
•
•
•
date
who
who am i
cal
uname
passwd
echo







wyświetla na ekranie datę i aktualną godzinę
wyświetla liste zalogowanych użytkowników
kim jestem ?
wyświetla kalendarz
wyświetla nazwę i atrybuty systemu operacyjnego
zmiana hasła
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.
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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 :
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Klawisz
Linux
Podstawy używania systemu
jjjj-07-tt
strona 9
[Enter] zatwierdza wykonanie polecenia
Kombinacja – czyli jednoczesne nawiśnięcia klawisza [Ctrl]
Polecenia
i
[c] przerywa wykonanie
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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.
2.
3.
4.
5.
1. Pierwsza zona licząca tylko jeden znak „ –„ wskazuje typ pliku. Symbole najczęściej
spotykane są następujące :
- dla oznaczenia plików zwykłych
d dla oznaczenia katalogów
c dla oznaczenia plików specjalnych (urządzenia znakowe)
b dla oznaczenia plików specjalnych przypisanych (urządzenia blokowe)
l 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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
-rw-r--r-- 1
piotr
piotr
$ cp -i fin1 fin2
users
users
52 Maj 12 2002 17:41 fin1
692 Maj 12 2002 17:58 fin2
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
* rmdir

usuwa katalog
* rm –r

usuwa drzewo katalogowe
* cp

kopiuje pliki do katalogu

wykonuje kopie drzewa katalogowego
* du

wyświetla objętość katalogu bieżącego
* find

poszukuje plików w drzewie katalogowym
cp –r
jjjj-07-tt
strona 15
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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.
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
strona 18
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Rozdział 4
:
Linux
Podstawy używania systemu
jjjj-07-tt
strona 19
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
$ ls p[1-3]
p1
p2
p3
a1kb2lc4k
art54lnm012 p+
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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 : $
\
‘
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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).
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
$ echo
# dopisanie do pliku plikb listy plików z katalogu bieżącego
=================== > 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
drwxr-xr-x
drwxr-xr-x
-rwxr-xr-x
-drwxr-xr-x
2
2
5
1
2
piotr
ola
piotr
piotr
piotr
oracle
oracle
oracle
oracle
oracle
1024
512
1024
1536
1325
May
May
May
May
May
15
25
17
18
15
2003 test
2003 katalog5
2003 test1
2003 plikb
2003 plikc
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
$ polecenie3 < plik_b
polecenie1 | polecenie2 | polecenie3
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
-rwxr-xr-x
-drwxr-xr-x
2
2
5
1
2
piotr
ola
piotr
piotr
piotr
#polecenia są wykonywane po kolei od lewej do prawej strony
oracle
oracle
oracle
oracle
oracle
1024
512
1024
1536
1325
May
May
May
May
May
15
25
17
18
15
2003 test
2003 katalog5
2003 test1
2003 plikb
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 :
Autor : Piotr Piętak
GR PiS ds. informatyzacji
$ cd projekt &&
Linux
Podstawy używania systemu
jjjj-07-tt
strona 26
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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.
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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

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
: wyświetla praw plików
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|---
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
 symbolizuje właściciela pliku
u
g  symbolizuje grupę do której plik jest przypisany
 reszta użytkowników systemu
o
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
400
200
100
040
020
010
004
002
001
740
plikb
 prawo czytania dla właściciela pliku
 prawo pisania dla właściciela pliku
 prawo egzekwowania pliku przypisane jego właścicielowi
 prawo czytania dla grupy użytkowników
 prawo pisania dla grupy użytkowników
 prawo egzekwowania pliku przypisane grupie użytkowników
 prawo czytania przypisane innym użytkownikom
 prawo pisania przypisane innym użytkownikom
 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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
Zapis ten może być jeszcze bardziej szczegółowy :
Przedstawienie III
5854 = 5×1000 +
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
+ 4
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
!!!!!!!!!  liczba tysięcy
!!!!!!  liczba dziesiątek tysięcy
!!!  liczba setek tysięcy
!  liczba milionów
Przedstawienie V
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³ + 0×2² + 1×2¹ + 0×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
rwr----
 które w formie binarnej będzie miało wartość
 w formie binarnej będzie miało wartość


111 =
110
100
000
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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 10
1
4 +2+0=6
111
4 +2+ 1 = 7
001
0 + 0+1 = 1
System dziesiętny
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
system binarny
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
10000
system octal
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
20
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
system hexa
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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

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ę
polecenie to zmienia przynależność pliku z np grupy a d o grupy b
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
strona 36
7. interpreter poleceń (shell)
Kolumny rozdziela znak dwukropka :
1 234 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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
Ć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”
jjjj-07-tt
strona 39
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Rozdział 6 :
Linux
Podstawy używania systemu
jjjj-07-tt
strona 40
Filtry do czego służą ?
grep  poszukiwanie ciągu znaków w pliku
cut
sort
more
wc
tail
head
nl
tr
 selekcjonuje (znajduje) pojedyńcze znaki lub zony
 uporządkowanie, fuzja plików
 wyświetlanie pliku strona po stronie
 liczy linie, słowa, i znaki
 wyświetla koniec pliku
 wyświetla koniec pliku
 numeruje linie pliku
 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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
1
2
3
4
Opadają kwasem wina
Liście dębu i czereśni
I zza wody psi przyleśni
Szczekają jak mandolina
5
6
7
8
Bałałajkę psiej tęsknoty
Uwiązali na łańcuchu
Za to ździerze-mgle na uchu
Dynda miesiąc – kolczyk złoty
$ tail -3 poemat
jjjj-07-tt
strona 41
#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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
6.2
Linux
Podstawy używania systemu
jjjj-07-tt
strona 42
Polecenie grep
$ grep ‘’psi’’ 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

grep

I zza wody psi przyleśni
Bałałajkę psiej tęsknoty
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
I zza wody psi przyleśni
Za to ździerze-mgle na uchu
 to otrzymamy
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
6
7
8
Bałałajkę psiej tęsknoty
Uwiązali na łańcuchu
Za to ździerze-mgle na uchu
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
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

cut

1,one
2,two
3,three
4,four
5,five
6,six
7,seven
8,eight
9,nine
10,ten
Polecenie cut
6.4 Polecenie
sort
$
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
Przykłady :
sort +3 –t’,’ liczba
8, huit,eight,acht

sort

3,trois,three,drei
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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,huit,eight,acht
3,trois,three,drei
8,
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
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.
jjjj-07-tt
strona 45
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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 ?
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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& ------ ---------------------date&
|
|
(jednoczesna egzekucja who i 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
3408
10804
TTY
pts/1
pts/1
TIME
0:00
0:20
CMD
ps
-ksh
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
strona 51
$ ps -ef
UID
PID
PPID
C STIME TTY
root
1
0
root
300
1
daemon
327
1
root
343
1
root
359
1
root
411
1
root
444
1
piotr
11736 11731
piotr
11737 11732
piotr
11738 11733
0
0
0
0
0
0
0
0
0
0
May18
May18
May18
May18
May18
May18
May18
13:45
13:45
13:45
?
?
?
?
?
?
?
pts/0
pts/1
pts/0
TIME
00:00:03
00:00:08
00:00:00
00:00:00
00:00:03
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
CMD
init
syslogd -m 0
/usr/sbin/atd
crond
inted
sendmail
httpd
/bin/bash
/bin/bash
/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ę.
 zlikwidowanie procesu
$ kill -9
$ 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
PID
250
259
 wyświetla procesy użytkownika piotr
TTY TIME COMD
pts/1 0:02 bash
?
0:15 plika
$ kill 259
$ ps -u
piotr
PID

TTY TIME COMD
Autor : Piotr Piętak
GR PiS ds. informatyzacji
250
Linux
Podstawy używania systemu
pts/1 0:02
jjjj-07-tt
strona 52
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
[2]+ Stopped
ls -R/
ls -R/
Jeżeli zastosujemy w poleceniu jobs opcje -l otrzymamy na ekranie cenne informacje
$ jobs -l
[1]+ Stopped
[2]+ Stopped
122
123
ls -R/
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.
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
:
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
strona 54
Co otrzymasz na ekranie ?
Ćwiczenie 5
[123]+ Stopped
[122]+ Stopped
522
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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’’
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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 :
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
plik służy
#znosimy numerowanie linii
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
strona 58
do przedstawienia
podstawowych założeń
wyrażeń regularnych
$ ls -l | grep ‘^d’
drwxrwxr-x
2
#wyszykujemy katalogi
piotr
1024………………….
$ ls -p | grep ‘/$’
#wyszukujemy katalogi
$ ls –a | grep ‘^\.’
.
..
.profile
#wyświetlamy tylko pliki zaczynające się od „.”
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
-type
plik
-size
-user
szukany plik musi nazywać się plik.txt
plik może przyjmować następujące wartości
f - plik regularny
d - katalog
c,b - pliki specjalne
plik musi mieć odpowiednia objętość
piotr
-group ada
plik ma właściciela który nazywa się piotr
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
NON
jjjj-07-tt
strona 59
!
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
regionu
Kregkato
Kregkato
Pregpod
Cregcent
Mregmazu
Pregpod
Wregwielko
Greggda
symbol
regionu
KA
KA
PO
CE
MA
PO
WK
GD
Imie i nazwisko
dyrektora per.
Liczba
wykonanie liczba
liczba
Pododdziałów planu w % towarów personelu
Jan Kowalski
Piotr Pawlak
Krzysztof Wrak
Jola Kruk
Urszula Kropiuk
Zygmunt Malina
Marian Kluska
Katarzyna Polak
23
23
25
19
14
25
35
58
.98.
.98.
.45.
.74
.54.
.45.
.98.
.69.
\3\
\3\
\2\
\1\
\5\
\2\
\4\
\9\
88
88
77
65
85
54
91
87
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Cregcent
CE
Linux
Podstawy używania systemu
Mariusz Pol
19
jjjj-07-tt
strona 60
.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
Cregcent
CE
CE
Jola Kruk
Mariusz Pol
19
19
.74
.54.
\1\
\1\
65
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
19
14
19
.74.
.54.
.54.
\1\
\5\
65
85
Wyjaśnienie :
Na ekranie wyświetlają się linie kończące się cyfrą „4”
$ grep ‘4\. ’ dataplik
Cregcent
Mregmazu
Cregcent
CE
MA
CE
Jola Kruk
Urszula Kropiuk
Mariusz Pol
\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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Kregkato
88
Kregkato
Linux
Podstawy używania systemu
KA
Jan Kowalski
KA
Piotr Pawlak
jjjj-07-tt
strona 61
23
23
.98.
\3\
.98.
\3\
88
Wyjaśnienie :
Na ekranie wyświetlają się linie zawierające cyfrę „3” obramowaną przez \3\
$ grep ‘^[KW]’ dataplik
Kregkato
88
Kregkato
Wregwielko
KA
Jan Kowalski
KA
WK
Piotr Pawlak
Marian Kluska
23
23
35
.98.
\3\
.98.
.98.
\3\
\4\
88
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
Greggda
KA
GD
AB Kowalski
DA Polak
23
58
.98.
.69.
\3\
\9\
88
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
Cregcent
CE
CE
Jola Krul
Mariusz Poll
19
19
.74
.54.
\1\
\1\
65
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
strona 63
Przetestujemy teraz funkcjonowanie sed używając do tego celu tego samego pliku dataplik którego
zawartość drukujemy poniżej.
Nazwa
regionu
Kregkato
Kregkato
Pregpod
Cregcent
Mregmazu
Pregpod
Wregwielko
Greggda
Cregcent
symbol
regionu
Imie i nazwisko
dyrektora per.
KA
KA
PO
CE
MA
PO
WK
GD
CE
Liczba
Pododdziałów
Plan
w%
liczba
liczba
towarów personelu
AB Kowalski
Piotr Pawlak
Krzysztof Wrak
Jola Krul
Urszula Kropiuk
Zygmunt Malina
Marian Kluska
DA Polak
Mariusz Poll
23
23
25
19
14
25
35
58
19
.98.
.98.
.45.
.74
.54.
.45.
.98.
.69.
.54.
\3\
\3\
\2\
\1\
\5\
\2\
\4\
\9\
\1\
88
88
77
65
85
54
91
87
25
AB Kowalski
Piotr Pawlak
Krzysztof Wrak
Jola Krul
23
23
25
19
.98.
.98.
.45.
.74
\3\
\3\
\2\
\1\
88
88
77
65
23
23
25
19
14
25
35
58
19
.98.
.98.
.45.
.74
.54.
.45.
.98.
.69.
.54.
$ sed ‘4q’ dataplik
Kregkato
Kregkato
Pregpod
Cregcent
KA
KA
PO
CE
Wyjaśnienie : wyświetlamy tylko 4 pierwsze linie
$ sed ‘/KA/p’ dataplik
Kregkato
Kregkato
Pregpod
Cregcent
Mregmazu
Pregpod
Wregwielko
Greggda
Cregcent
KA
KA
PO
CE
MA
PO
WK
GD
CE
AB Kowalski
Piotr Pawlak
Krzysztof Wrak
Jola Krul
Urszula Kropiuk
Zygmunt Malina
Marian Kluska
DA Polak
Mariusz Poll
\3\
\3\
\2\
\1\
88
88
77
65
\5\
\2\
\4\
\9\
\1\
85
54
91
87
25
Wyjaśnienie : wyświetlamy z opcja p całość pliku mimo istnienia /KA/
$ sed -n ‘/KA/p’ dataplik
Kregkato
Kregkato
KA
KA
AB Kowalski
Piotr Pawlak
23
23
.98.
.98.
\3\
\3\
88
88
Wyjaśnienie : to opcja –n umożliwia nam wyświetlenie linii zawierających poszukiwany ciąg znaków
W tym wypadku /KA/
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
strona 64
$ sed ‘2d’ dataplik
Nazwa
regionu
Kregkato
Pregpod
Cregcent
Mregmazu
Pregpod
Wregwielko
Greggda
Cregcent
symbol
regionu
KA
PO
CE
MA
PO
WK
GD
CE
Imie i nazwisko
dyrektora per.
Liczba
wykonanie liczba
liczba
Pododdziałów planu w % towarów personelu
AB Kowalski
Krzysztof Wrak
Jola Krul
Urszula Kropiuk
Zygmunt Malina
Marian Kluska
DA Polak
Mariusz Poll
23
25
19
14
25
35
58
19
.98.
.45.
.74
.54.
.45.
.98.
.69.
.54.
\3\
\2\
25
35
58
19
.45.
.98.
.69.
.54.
\2\
\4\
\9\
\1\
54
91
87
25
23
23
25
19
14
25
35
58
.98.
.98.
.45.
.74
.54.
.45.
.98.
.69.
\3\
\3\
\2\
\1\
\5\
\2\
\4\
\9\
88
88
77
65
85
54
91
87
25
19
14
25
35
.45.
.74
.54.
.45.
.98.
\2\
\1\
\5\
\2\
\4\
77
65
85
54
91
\1\
88
77
65
\5\
\2\
\4\
\9\
\1\
85
54
91
87
25
Wyjaśnienie : usunięcie drugiej linii z pliku
$ sed ‘5,$d’ dataplik
Pregpod
Wregwielko
Greggda
Cregcent
PO
WK
GD
CE
Zygmunt Malina
Marian Kluska
DA Polak
Mariusz Poll
Wyjaśnienie : usunięcie wszystkich linii do piątej linii od końca
$ sed ‘$d’ dataplik
Kregkato
Kregkato
Pregpod
Cregcent
Mregmazu
Pregpod
Wregwielko
Greggda
KA
KA
PO
CE
MA
PO
WK
GD
AB Kowalski
Piotr Pawlak
Krzysztof Wrak
Jola Krul
Urszula Kropiuk
Zygmunt Malina
Marian Kluska
DA Polak
Wyjaśnienie : usunięcie ostatniej linii
$ sed ‘/KA/d’ dataplik
Pregpod
Cregcent
Mregmazu
Pregpod
Wregwielko
PO
CE
MA
PO
WK
Krzysztof Wrak
Jola Krul
Urszula Kropiuk
Zygmunt Malina
Marian Kluska
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Greggda
Cregcent
Linux
Podstawy używania systemu
GD
CE
DA Polak
Mariusz Poll
58
19
jjjj-07-tt
strona 65
.69.
.54.
\9\
87
Wyjaśnienie : usunięcie linii zawierających ciąg znaków KA
$ sed ‘2,3d’ dataplik
Kregkato
Cregcent
Mregmazu
Pregpod
Wregwielko
Greggda
Cregcent
KA
CE
MA
PO
WK
GD
CE
AB Kowalski
Jola Krul
Urszula Kropiuk
Zygmunt Malina
Marian Kluska
DA Polak
Mariusz Poll
23
19
14
25
35
58
19
.98.
.74
.54.
.45.
.98.
.69.
.54.
\3\
\1\
\5\
\2\
\4\
\9\
\1\
88
65
85
54
91
87
25
AB Kowalski
Piotr Pawlak
Krzysztof Wrak
Jola Krul
Urszula Kropiuk
Zygmunt Malina
Marian Kluska
DA Polak
Mariusz Poll
23
23
25
19
14
25
35
58
19
.98.
.98.
.45.
.74
.54.
.45.
.98.
.69.
.54.
\3\
\3\
\2\
\1\
\5\
\2\
\4\
\9\
\1\
88
88
77
65
85
54
91
87
25
Wyjaśnienie : usunięcie 2 i 3 linii
$ sed ‘s/KA/KT/’ dataplik
Kregkato
Kregkato
Pregpod
Cregcent
Mregmazu
Pregpod
Wregwielko
Greggda
Cregcent
KT
KA
PO
CE
MA
PO
WK
GD
CE
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Kregkato
Kregkato
Pregpod
Cregcent
Mregmazu
Pregpod
Wregwielko
Greggda
Cregcent
Linux
Podstawy używania systemu
KT
KT
PO
CE
MA
PO
WK
GD
CE
jjjj-07-tt
strona 66
AB Kowalski
Piotr Pawlak
Krzysztof Wrak
Jola Krul
Urszula Kropiuk
Zygmunt Malina
Marian Kluska
DA Polak
Mariusz Poll
23
23
25
19
14
25
35
58
19
.98.
.98.
.45.
.74
.54.
.45.
.98.
.69.
.54.
\3\
\3\
\2\
\1\
\5\
\2\
\4\
\9\
\1\
88
88
77
65
85
54
91
87
25
Jola Krul
Mariusz Poll
19
19
.74
.54.
\1\
\1\
65
25
Wyjaśnienie : właśnie opcje „g”
$ -n ‘s/^Cre/Ine/p’ dataplik
Inegcent
Inegcent
CE
CE
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
Wregwielko
Greggda
Cregcent
PO
WK
GD
CE
Zygmunt Malina
Marian Kluska
DA Polak
Mariusz Poll
25
35
58
19
.45.
.98.
.69.
.54.
\2\
\4\
\9\
\1\
54
91
87
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
Pregpod
PO
PO
Krzysztof Wrak
Zygmunt Malina
25
25
.45.
.45.
\2\
\2\
77
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
Autor : Piotr Piętak
GR PiS ds. informatyzacji
Linux
Podstawy używania systemu
jjjj-07-tt
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
25
35
58
19
.45.
.98.
.69.
.54.
\2\
\4\
\9\
\1\
54
91
87
25
23
23
25
19
14
25
35
58
19
.98.
.98.
.45.
.74
.54.
.45.
.98.
.69.
.54.
*3*
*3*
*2*
*1*
*5*
*2*
*4*
*9*
*1*
88
88
77
65
85
54
91
87
25
23
23
25
.98.
.98.
.45.
\3\
\3\
\2\
88@@
88@@
77@@
Wyjaśnienie :
$ sed ‘/Kowalski/,/Kropiuk/d’ dataplik
Pregpod
Wregwielko
Greggda
Cregcent
PO
WK
GD
CE
Zygmunt Malina
Marian Kluska
DA Polak
Mariusz Poll
Wyjaśnienie :
$ sed ‘s/\\[0-9]\\/\*[0-9]\*/p’ dataplik
Kregkato
Kregkato
Pregpod
Cregcent
Mregmazu
Pregpod
Wregwielko
Greggda
Cregcent
KA
KA
PO
CE
MA
PO
WK
GD
CE
AB Kowalski
Piotr Pawlak
Krzysztof Wrak
Jola Krul
Urszula Kropiuk
Zygmunt Malina
Marian Kluska
DA Polak
Mariusz Poll
Wyjaśnienie :
$ sed ‘/Kato/,/pod/s/$/@@/’ dataplik
Kregkato
Kregkato
Pregpod
KA
KA
PO
Nazwa
symbol
AB Kowalski
Piotr Pawlak
Krzysztof Wrak
Imie i nazwisko
Liczba
wykonanie liczba
liczba
Autor : Piotr Piętak
GR PiS ds. informatyzacji
regionu
Kregkato
Kregkato
Pregpod
Cregcent
Mregmazu
Pregpod
Wregwielko
Greggda
Cregcent
Linux
Podstawy używania systemu
regionu
dyrektora per.
KA
KA
PO
CE
MA
PO
WK
GD
CE
-rw-r—r-- 1 piotr
-rwxr—r-- 1 root
10 blocks
Pododdziałów
AB Kowalski
Piotr Pawlak
Krzysztof Wrak
Jola Krul
Urszula Kropiuk
Zygmunt Malina
Marian Kluska
DA Polak
Mariusz Poll
Oracle
sys
23
23
25
19
14
25
35
58
19
jjjj-07-tt
strona 68
planu w % towarów personelu
.98.
.98.
.45.
.74
.54.
.45.
.98.
.69.
.54.
0
May 3 15:14 2003, plik1
514 May 15 16:14 2003, plik1
\3\
\3\
\2\
\1\
\5\
\2\
\4\
\9\
\1\
88
88
77
65
85
54
91
87
25