1
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
1 / 81
PODSTAWOWE
POLECENIA I FILTRY
W SYSTEMIE OPERACYJNYM
UNIX/LINUX
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
2 / 81
Przegl d istotnych cech powłoki (ang. shell)
• Proste i zło one polecenia (
; & | && ||
)
$ ls –l /bin
$ cp old new && rm old
rm
je eli
cp
$ cp old new || rm old
rm
je eli nie
cp
$ ps | grep sshd
przekierowanie wyj cia
ps
na wej cie
grep
• Procesy drugoplanowe (ang. background), sterowanie wraca do powłoki, bez
oczekiwania na zako czenie procesu, zwracany jest kod zako czenia 0
$ /usr/local/bin/netscape &
$ cmd1 & cmd2 & cmd3
równoległe wykonanie trzech polece
$ cmd1 ; cmd2 ; cmd3
sekwencyjne wykonanie trzech polece
• Przekierowywanie wej /wyj (
< > >>
)
$ ls -l > my_files
zamiast do
stdout
(1) dane do
my_files
$ cat < input.data
zamiast z
stdin
(0) dane z
input.data
$ date >> logs
zamiast do
stdout
(1) doł cza dane do
logs
2
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
3 / 81
Przegl d istotnych cech powłoki (ang. shell)
• „Dzikie karty”
$ ls file*
• Zmienne powłoki i rodowiska
$ PATH=$PATH:.
• Zastosowanie znaku tyldy
$ cd ~kornj
• Zasady przywoływania
$
file="foo"
$ cat my file
$ cat "my file"
$ cat "my $file"
$ cat 'my $file'
my
file
my file
my foo
my $file
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
4 / 81
Cechy interakcyjno ci
• Pami tana jest historia polece
• Edytowanie linii polece
• Dopełnianie nazwy pliku (przycisk tab)
• Dopełnianie polecenia
• Wi zanie kluczy
• Korekta pisowni
• Kontrolowanie zada
3
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
5 / 81
Skrypty na poziomie powłoki
• Skrypt powłoki jest plikiem tekstu regularnego, który
zawiera polecenia powłoki lub UNIX
• Przed wykonaniem skryptu nale y nada mu prawa
wykonania
• Skrypty s bardzo u yteczne podczas automatyzacji
powtarzaj cych si zada , zwłaszcza czynno ci
administratora oraz do przechowywania polece , które
maja by wykonane w przyszło ci
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
6 / 81
J zyki skryptowe a j zyk C
• Korzy ci ze stosowania skryptów powłokowych
– Łatwa współpraca z innymi programami
– Prosta praca z plikami
– Prosta praca z napisami
– Brak konieczno ci kompilacji
• Braki skryptów powłokowych
– Wolniejsze ni program napisany w C
– Niezbyt dobrze przystosowane do potrzeb projektowania
algorytmów i struktur danych
4
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
7 / 81
Podstawowe narz dzia do operowania na
plikach i katalogach
• pwd
podaje nazw aktualnego
katalogu
• cat
ł czy pliki
• more, less
pokazuj zawarto pliku
• ls
listuje zawarto katalogu
• rm
usuwa plik
• mv
zmienia nazw pliku
• cp
kopiuje plik
• touch
tworzy pusty plik lub aktualizuje
dat jego modyfikacji
• ed, vi, emacs, nano edytory tekstu
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
8 / 81
Podstawowe narz dzia do operowania na
plikach i katalogach
• ln
tworzy dowi zanie do pliku
• mkdir i rmdir
tworzy i usuwa katalog
• mount, umount zarz dzaj punktami montowania
• lpr
wydruk zawarto ci pliku
• wc
podlicza słowa, znaki w pliku
• diff
porównuje zawarto dwóch plików
• file
identyfikuje typ pliku
5
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
9 / 81
Polecenia operowania atrybutami pliku
• chmod
zmiana praw dost pu do pliku
• chown
zmiana wła ciciela pliku
• chgrp
zmiana grupy zwi zanej z plikiem
• Tylko wła ciciel lub super u ytkownik mog zmienia
atrybuty pliku
• Po utworzeniu pliku domy lne prawa przypisywane plikowi
s modyfikowane przez warto przypisana za pomoc
polecenia umask
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
10 / 81
Prawa dost pu
- - - - - - - - -
r w x r w x r w x
user group others
---------
000
rwxr-x---
750
user: read, write, execute
group: read, execute
rw----rw-
606
user: read, write
others: read, write
6
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
11 / 81
Tryb dost pu symbolicznego [ugoa…][+–=][rwxs]
przykład: chmod a+r file
Tryb dost pu oktalnego (suid, sgid | user | group | others)
oktalnie
read
write
execute
0
no
no
no
1
no
no
yes
2
no
yes
no
3
no
yes
yes
4
yes
no
no
5
yes
no
yes
6
yes
yes
no
7
yes
yes
yes
przykład: chmod 400 file
Polecenie chmod
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
12 / 81
Polecenia zarz dzania procesami
• ps
monitoruje stan procesów
• kill
wysyła podany sygnał do okre lonego
procesu (domy lnie TERM)
• wait
proces rodzicielski czeka na zako czenia
wykonywania si procesu potomnego
• nohup
czyni polecenie odpornym na sygnały hangup
i terminate
• sleep
przejd w stan u pienia na okres czasu podany
w sekundach
• nice
uruchom procesy ze zmodyfikowanym
priorytetem
7
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
13 / 81
Wprowadzenie do filtrów
• Klasa narz dzi systemu Unix nazywana filtrami.
– Narz dzia, które czytaj ze standardowego wej cia,
przekształcaj (obrabiaj ) plik i wynik zapisuj na standardowe
wyj cie
• Stosowanie filtrów mo e rozumiane jako programowanie
zorientowane na dane.
– Ka dy krok oblicze filtra przekształca strumie (ang. stream)
danych.
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
14 / 81
Przykłady filtrów
• sort
– wej cie: linie danych z pliku
– wyj cie: posortowane linie z pliku
• grep
– wej cie: linie danych z pliku
– wyj cie: linie, które odpowiadaj zdefiniowanemu wzorcowi
• awk
– filtr programowalny (interpretowalny j zyk wyszukiwania i
przetwarzania wzorców)
8
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
15 / 81
Programy w systemie UNIX
•
ródła wej :
– Argumenty programu
[informacja struj ca]
– Zmienne rodowiskowe
[informacje o stanie]
– Standardowe wej cie
[dane]
• Elementy wyj cia:
– Zwracany kod statusu
[informacje steruj ce]
– Standardowe wyj cie [dane]
– Standardowe wy cie diagnostyczne
[komunikaty o bł dach]
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
16 / 81
Potoki
• Wyj cie jednego programu staje si wej ciem nast pnego
– Wykorzystywana jest koncepcja potoków systemu UNIX
• Przykład:
$ who | wc -l
– Oblicza liczb zalogowanych u ytkowników
• Potoki mog by długie i zło one
9
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
17 / 81
cat: najprostszy filtr
• Polecenie cat kopiuje bez zmian swoje wej cie na wyj cie
(filtr to samo ciowy). Gdy na wej cie podana zostanie
lista plików, wtedy filtr ł czy je i przekierowuje na
standardowe wyj cie stdout
•
• Niektóre opcje:
-n
numeruje linie wyj ciowe (pocz wszy od 1)
-v
wy wietla znaki kontrolne w postaci widocznej (np. ^C)
cat file*
ls | cat -n
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
18 / 81
W czym tkwi ró nica?
• Oba przedstawione poni ej polecenia przesyłaj dane do
polecenia (command) z pliku zamiast z klawiatury
(standardowego wej cia):
$ cat file | command
$ command < file
lub
10
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
19 / 81
Dodatkowy proces
cat
command
command
$ cat file | command
$ command < file
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
20 / 81
Polecenie head
• Pokazuje kilka pierwszych linii ze wskazanego pliku
• Składnia:
head [-n] [filename...]
-n
– liczba wy wietlanych danych, domy lnie jest ich 10
filename...
– lista nazw wy wietlanych plików
• W przypadku podania wi cej ni jednej nazwy pliku,
pocz tek ka dego wy wietlanego pliku poprzedzony jest
napisem
– ==>filename<==
11
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
21 / 81
Polecenie tail
• Pokazuje ko cowa cz
pliku
• Składnia:
tail +|-numer [lbc] [f] [filename]
lub:
tail +|-numer [l] [rf] [filename]
+numer
– kopiowanie rozpoczyna si w odległo ci numer jednostek
danych od pocz tku pliku; je li numer jest niezdefiniowany, to
domy lnie jest równy 10
-numer
– kopiowanych jest numer ostatnich jednostek danych z pliku
l,b,c
– jednostki numer wyra one s w liniach/blokach/znakach
r
– drukuje odwrotnym porz dku (tylko linie)
f
– je li wej ciem nie jest potok, to polecenie nie ko czy si po
napotkaniu ko ca pliku, ale czeka w p tli. Jest to przydatne w
przypadku konieczno ci monitorowania pliku, który jest zapisywany
przez inny proces.
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
22 / 81
Przykłady polece head i tail
head /etc/passwd
head *.c
tail +20 /etc/passwd
ls -lt | tail -3
head –100 /etc/passwd | tail -5
tail –f /usr/local/httpd/access_log
12
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
23 / 81
Polecenie tee
• Kopiuje standardowe wej cie do standardowego
wyj cia i do jednego lub wi cej plików
– Przechwytuje natychmiast wyniki filtrowania danych w
potoku
Polecenie Unix
Standardowe wyj cie
Lista plików
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
24 / 81
Polecenie tee (cd.)
• Składnia:
tee [ -ai ] file-list
-a
– dopisuje do wyj ciowego pliku (nie nadpisuje); domy lnie
funkcjonuje nadpisywanie (zast powanie) danych w pliku.
-i
- ignoruje przerwania
file-list
– jeden lub wi cej plików przechwytuj cych wyj cie
• Przykłady
ls | head –10 | tee first_10 | tail –5
who | tee user_list | wc
13
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
25 / 81
John
99
Anne
75
Andrew
50
Tim
95
Arun
33
Sowmya
76
COMP1011|2252424|Abbot, Andrew John |3727|1|M
COMP2011|2211222|Abdurjh, Saeed |3640|2|M
COMP1011|2250631|Accent, Aac-Ek-Murhg |3640|1|M
COMP1021|2250127|Addison, Blair |3971|1|F
COMP4012|2190705|Allen, David Peter |3645|4|M
COMP4910|2190705|Allen, David Pater |3645|4|M
root:ZHolHAHZw8As2:0:0:root:/root:/bin/ksh
jas:nJz3ru5a/44Ko:100:100:John Shepherd:/home/jas:/bin/ksh
cs1021:iZ3sO90O5eZY6:101:101:COMP1021:/home/cs1021:/bin/bash
cs2041:rX9KwSSPqkLyA:102:102:COMP2041:/home/cs2041:/bin/csh
cs3311:mLRiCIvmtI9O2:103:103:COMP3311:/home/cs3311:/bin/sh
Znak Tab
Znak |
Znak dwukropka
Pliki tekstowe Unixa: ograniczniki danych
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
26 / 81
Polecenie cut: wybór kolumn
• Polecenie
mo e drukowa wybrana cz
linii
wej ciowych.
– mo na wybra kolumny (domy lnie oddzielone znakami tabulacji)
– mo na wybra zakres pozycji listowanych znaków
• Niektóre opcje:
-f listOfCols
: drukuje tylko wybrane kolumny (oddzielone
znakiem Tab lub innym okre lonym opcj -d)
-c listOfPos
: drukuje tylko znaki z okre lonych pozycji
-d c
definiuje znak c jako separator kolumn
• Listy podawane s w postaci zakresów (np.
) lub
znaków oddzielonych przecinkami (np.
).
14
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
27 / 81
Przykłady u ycia cut
cut -f 1 < data
cut -f 1-3 < data
cut -f 1,4 < data
cut -f 4- < data
cut -d'|' -f 1-3 < data
cut -c 1-4 < data
nie ma sposobu odwołania si do ostatniej kolumny
bez obliczenia liczby kolumn
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
28 / 81
Polecenie paste: ł czenie kolumn
• Polecenie
wy wietla na wyj ciu „równolegle”
zawarto kilku plików tekstowych.
• Je li wej ciem sa pliki
,
,
, to
– pierwsza linia wyj ciowa składa si z pierwszych linii
plików
,
,
– druga linia wyj ciowa składa si z drugich linii plików
,
,
– itd.
• Linie z ka dego pliku sa oddzielane od siebie
znakiem Tab.
• Je li pliki sa ró nej długo ci, na wyj ciu wy wietlane
s wszystkie linie z najdłu szego pliku z pustymi
ci gami w miejsce brakuj cych linii plików
krótszych.
1
2
3
4
5
6
1 3 5
2 4 6
15
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
29 / 81
Przykład u ycia polecenia paste
cut -f 1 < data > data1
cut -f 2 < data > data2
cut -f 3 < data > data3
paste data1 data3 data2 > newdata
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
30 / 81
Polecenie sort: sortowanie linii pliku
• Polecenie
kopiuje dane z wej cia na wyj cie, dbaj c
aby wyj cie linie zostały uporz dkowane zgodnie z
daniem.
– Domy lnie sortowanie jest realizowane na podstawie porównania
kodów ASCII całej linii.
• Inne cechy polecenia
:
– rozró nia dane tekstowe, wyst puj ce w kolumnach (potrafi sortowa
według innych ni tylko pierwsza kolumna)
– rozró nia liczby i wła ciwie je sortuje
– mo e sortowa pliki pobierane z dysku jak równie potrafi działa
jako filtr danych wej ciowych.
– jest w stanie sortowa bardzo du e pliki
16
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
31 / 81
Polecenie sort: opcje
• Składnia:
sort [-dftnr] [-o filename] [filename(s)]
-d
porz dek alfabetyczny (słownikowy); wpływ na porz dek
sortowania maj jedynie litery, cyfry i spacje
-f
ignoruje wielko liter (tekst sortowany jest wg małych liter)
-t
okre la ograniczniki kolumn
-n
porz dek numeryczny, sortowanie zgodnie z warto ciami
arytmetycznymi, nie za wg pierwszej cyfry
-r
sortowanie w odwrotnym porz dku
-o filename
– zapisuje wyj cie do pliku o nazwie filename; nazwa
pliku mo e by nazw pliku wej ciowego
• ... i wiele innych opcji.
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
32 / 81
Polecenie sort: pozycje pól sortowania
• Ogranicznik :
-t
d
• Stary sposób:
+field1[.char1][options] [-field2[.char2][options]
+2.1
–3
+0
–2
+3n
Z wył czeniem
field2
Startuje od 0 (inaczej ni w przypadku cut, które staruje od 1)
• Nowy sposób (POSIX):
-k field1[.char1][options][,field2[.char2][options]]
-k2.1
–k0,1
–k3n
Wł cznie z
field2
Startuje od 1
17
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
33 / 81
Przykłady u ycia polecenia sort
sort +2nr < data
sort –k2nr data
sort -t: +4 /etc/passwd
sort -o mydata mydata
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
34 / 81
Polecenie uniq: pomija powtarzaj ce si
elementy
• Usuwa duplikaty wierszy z danych wej ciowych
• Składnia:
uniq [ -cdu] [input-file] [ output-file]
-c
zawiesza działanie opcji -u i -d oraz generuje raport wyj ciowy listuj c
ka dy wiersz wraz z liczb jego powtórze
-d
listuje jedynie powtarzaj ce si wiersze
-u
listuje tylko te wiersze, które nie powtarzaj si
–
Domy lnymi opcjami s przeł czniki -d i -u
18
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
35 / 81
Polecenie wc: wynik podsumowania
• Narz dzie zliczania słów, wc, zlicza liczb wierszy,
znaków lub słów
• Opcje:
-l
zlicza wiersze
-w
zlicza słowa
-c
zlicza znaki
• Domy lnie: zlicza linie, słowa i znaki
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
36 / 81
Przykład wc i uniq
who | sort | uniq –d
wc my_essay
who | wc
sort file | uniq | wc –l
sort file | uniq –d | wc –l
sort file | uniq –u | wc -l
19
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
37 / 81
Polecenie tr: przekształcanie znaków
• Kopiuje dane ze standardowego wej cia na standardowe
wyj cie z jednoczesnym zast powaniem lub usuwaniem
wybranych znaków
• Składnia:
tr [ -cds ] [ string1 ] [ string2 ]
-d
usuwa z wej cia wszystkie znaki zawarte w string1
-c
uzupełnia znaki w string1 w odniesieniu do całego zbioru
znaków
ASCII
-s
kompresja wszystkich napisów powtarzanych znaków
wyj ciowych, wyst puj cych w string2 w pojedynczy znak.
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
38 / 81
tr (cd.)
• tr czyta dane ze standardowego wej cia.
– Ka dy znak nie pasuj cy do znaków w string1 jest przesyłany bez
zmian na standardowe wyj cie
– Ka dy znak pasuj cy do znaków w string1 jest zamieniany na
odpowiadaj cy mu znak ze string2 przesyłany na standardowe
wyj cie
• Przykłady:
$ tr s z
zast puje wszystkie wyst pienia s na z
$ tr so zx
zast puje wszystkie wyst pienia s na z oraz o na x
$ tr a-z A-Z
zast puje wszystkie małe litery wielkimi
$ tr –d a-c
usuwa wszystkie znaki a-c
20
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
39 / 81
U ycie tr
• zmie ogranicznik
$ tr ‘|’ ‘:’
• przepisz liczby
$ tr ,. .,
• importuj plik DOS \ Windows
$ tr –d ’\r’ < dos_file
• znajd znaki ASCII w pliku binarnym
$ tr –cd ’\n[a-zA-Z0-9 ]’ < binary_file
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
40 / 81
Co to s wyra enia regularne?
• Wyra enie regularne (regex) opisuje zbiór mo liwych
napisów wej ciowych.
• Wyra enia regularne s typowe dla systemu Unix, np. w:
– vi, ed, sed i emacs
– awk, tcl, perl i Python
– grep, egrep, fgrep
• Wyra enia regularne wywodz si z podstawowej
koncepcji informatyki nazywanej gramatykami
regularnymi, u ywanymi w teorii automatów sko czonych.
21
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
41 / 81
Wyra enia regularne
• Najprostszymi wyra eniami regularnymi s ci gi literałów
dopasowywane do innych.
• Mówi si , e ci g znaków jest dopasowany do wyra enia
regularnego, je li zawiera wła ciwy podci g.
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
42 / 81
UNIX Tools rocks.
pasuje
UNIX Tools sucks.
pasuje
UNIX Tools might suck.
nie pasuje
wyra enie regularne
c k s
Przykład wyra enia regularnego
22
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
43 / 81
Wyra enia regularne
Wyra enia regularne mog by dopasowane do ła cucha
znaków (napisu) w wi cej ni jednym miejscu.
Scrapple from the apple.
dopasowanie 1
dopasowanie 2
wyra enie regularne
a p p l e
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
44 / 81
Wyra enia regularne
Wyra enie regularne w postaci
.
(kropka) pasuje do
dowolnego znaku.
For me to poop on.
dopasowanie 1
dopasowanie 2
wyra enie regularne
o
.
23
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
45 / 81
Klasy znaków
Znak klasy
[]
(nawias kwadratowy) jest u ywany do
dopasowania dowolnego wyspecyfikowanego zbioru znaków.
beat a brat on a boat
dopasowanie 1
dopasowanie 2
b
[eor]
a t
dopasowanie 3
wyra enie regularne
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
46 / 81
Zanegowana klasa znaków
Klasy znaków mo na wykluczy z procesu dopasowania
za pomoc wyra enia o składni
[^]
.
beat a brat on a boat
pasuje
b
[^eo]
a t
wyra enie regularne
24
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
47 / 81
Wi cej o klasach znaków
[aeiou]
dopasowywuje do dowolnego znaku
a
,
e
,
i
,
o
lub
u
[kK]orn
oznacza dopasowanie do
korn
lub
Korn
Klasy znaków mog tak e specyfikowa zakresy znaków:
–
[1-9]
oznacz to samo co zapis
[123456789]
–
[abcde]
jest równowa ne
[a-e]
– Mo na ł czy wiele zakresów
[abcde123456789]
jest rónowa ne
[a-e1-9]
– Zauwa my, e znak
–
ma specjalne znaczenie w obr bie klasy
znaków tylko wtedy, gdy u yty jest do zdefiniowania zakresu,
[-123]
oznaczałby dopasowanie do znaków
-
,
1
,
2
lub
3
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
48 / 81
Nazwana klasa znaków
• Do powszechnie stosowanych klas znaków mo na
odwoływa si poprzez nazw (
alpha
,
lower
,
upper
,
alnum
,
digit
,
punct
,
cntl
)
• Składnia
[:
name:]
–
[a-zA-Z]
[[:alpha:]]
–
[a-z0-9]
[[:alnum:]]
–
[45a-z]
[45[:lower:]]
• Jest to wa ne w przypadku konieczno ci zapewnienia
przenaszalno ci pomi dzy ró nymi j zykami narodowymi.
25
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
49 / 81
Podstawowe znaki specjalne
(tzw. kotwice, ang. anchors)
• Znaki specjalne s u ywane do dopasowania pocz tku
lub ko ca linii (lub jednego i drugiego).
•
^
oznacza dopasowanie pocz tku linii
•
$
oznacza dopasowanie ko ca linii
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
50 / 81
beat a brat on a boat
pasuje
wyra enie regularne
^
b
[eor]
a t
b
[eor]
a t
$
beat a brat on a boat
pasuje
^$
^word$
Przykład
wyra enie regularne
26
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
51 / 81
Powtórzenia
Znak specjalny
*
oznacza zero lub wi cej wyst pie
pojedynczego wyra enie regularnego poprzedzaj cego
znak
*
.
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
52 / 81
I got mail, yaaaaaaaaaay!
pasuje
wyra enie regularne
y a
*
y
For me to poop on.
pasuje
o a
*
o
.*
Przykład
wyra enie regularne
27
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
53 / 81
Zakresy powtórze
• Zakresy mo na definiowa tak e w postaci:
–
{
n,m}
– notacja okre la zakres powtórze bezpo rednio
poprzedzaj cych regex
–
{
n}
oznacza dokładnie n wyst pie
–
{
n,}
oznacza przynajmnie n wyst pie
–
{
n,m}
oznacza przynajmniej n wyst pie , ale nie wi cej ni
m wyst pie
• Przykład:
–
.{0,}
.*
–
a{2,}
aaa*
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
54 / 81
Podwyra enia
• Je li chcemy zgrupowa cz
wyra enia tak, aby
*
odnosiło si nie tylko do poprzednich znaków, to nale y
u y notacji
( )
.
• Podwyra enia traktowane s podobnie jak pojedynczy
znak
–
a*
oznacza dopasowanie 0 lub wi cej wyst pie
a
–
abc*
odpowiada wzorcom
ab
,
abc
,
abcc
,
abccc
, …
–
(abc)*
odpowiada wzorcom
abc
,
abcabc
,
abcabcabc
, …
–
(abc){2,3}
odpowiada wzorcowi
abcabc
lub
abcabcabc
28
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
55 / 81
grep
• nazwa
grep
pochodzi od polecenia edytora ed do
przeszukiwania “global regular expression print” albo
g/re/p
• polecenie było na tyle przydatne, e zaimplementowano je
jako samodzielne narz dzie
• istniej warianty polecenia, m.in.:
egrep
i
fgrep
• polecenie
grep
jest np. przydatne gdy chcemy znale
plik zawieraj cy okre lon fraz , nie pami tamy jednak
jego nazwy
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
56 / 81
Polecenia z rodziny grep
• grep – u ywa wyra e regularnych do dopasowania
wzorców (ang. pattern matching)
• fgrep – (file grep) nie u ywa wyra e regularnych,
dopasowuje jedynie stałe ła cuchy znaków, mo e jednak
pobra taki ła cuch z pliku
• egrep – (extended grep) u ywa bardziej rozbudowanego
zestawu wyra e regularnych, ale nie umo liwia
stosowania odwoła wstecznych (ang. backreferencing),
najszybsze polecenie z rodziny grep
• agrep – (approximate grep) nie uj te w normach
29
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
57 / 81
Składnia wyra e regularnych dla polece
rodziny grep
• polecenia grep i egrep wykorzystuj ide wyra e
regularnych
• grep i egrep maj ró n składni wyra e regularnych:
– grep:
BRE
– egrep: ERE
• Przykładowe ró nice w składni:
– grep:
\(
,
\)
,
\{
,
\}
– egrep:
(
,
)
,
{
,
}
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
58 / 81
Zabezpieczenie zestawu znaków wyra e
regularnych dla grep
Poniewa wiele spo ród znaków u ywanych w wyra eniach
regularnych ma równie specjalne znaczenie dla powłoki,
wskazane jest wi c umieszczanie wyra e regularnych w
apostrofach
– zabezpiecza to znaki specjalne przed interpretowaniem ich przez
powłok
– wygodniej jest przyj , e taka ochrona zestawu znaków w
wyra eniu regularnym jest zawsze niezb dna, ni analizowa
ka dy przypadek
30
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
59 / 81
U ycie znaków specjalnych jako zwykłych
symboli dla grep i egrep
• w niektórych przypadkach mo emy chcie u y znaków
specjalnych w ich podstawowym znaczeniu, jako zwykłych
symboli
• w tym celu poprzedzamy znak specjalny symbolem
\
(backslash)
• np. je eli szukamy ła cucha
a*b*
– u ycie wyra enia
'a*b*'
pozwoli wyszuka ła cuch zawieraj cy zero
lub wi cej liter
a
, po których wyst puje zero lub wi cej liter
b
- nie
tego oczekiwali my!
– poprawnie skonstruowane wyra enie regularne
'a\*b\*'
– w tym
przypadku gwiazdki nie s traktowane jako symbole specjalne
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
60 / 81
egrep: symbol alternatywy
• wyra enia regularne pozwalaj na u ycie znaku
alternatywy
|
w celu dopasowania jednego lub wi cej
podwyra e , np.:
– do
(K|T)en
pasuj ‘Ken’ albo ‘Ten’
– do
^(From|Subject):
pasuj typowe linie From i Subject z
nagłówka typowej wiadomo ci email (dopasowanie do ła cucha
znaków, w którym pocz tek linii rozpoczyna si znakami ‘
From
’
lub ‘
Subject
’, po których nast puje ‘
:
’)
• do ograniczenia zakresu działania alternatywy u ywane
s podwyra enia, np:
– do
At(ten|nine)tion
pasuj “Attention” albo “Atninetion”
– do
Atten|ninetion
pasuj “Atten” albo “ninetion”
31
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
61 / 81
egrep: powtórzenia
• symbol
*
(gwiazdka) oznacza zero lub wi cej wyst pie
poprzedzaj cego go znaku (b d podwyra enia)
• symbol
+
(plus) oznacza jedno lub wi cej wyst pie
poprzedzaj cego go znaku (b d podwyra enia)
ekwiwalentem symbolu
+
jest zapis
{1,}
do
abc+d
pasuj ‘abcd’, ‘abccd’, albo ‘abccccccd’, ale nie pasuje ‘abd’
do
abc?d
pasauj ‘abd’ albo ‘abcd’, ale nie pasuje ‘abccd’
do
abc+d
pasuj ‘abcd’, ‘abccd’, ‘abccccccd’ albo ‘abd’
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
62 / 81
egrep: powtórzenia (cd.)
• symbol
?
(znak zapytania) oznacza opcjonalne
wyst pienie znaku znajduj cego si bezpo rednio przed
znakiem zapytania
do
July?
pasuj ‘Jul’ albo ‘July’
ekwiwalentem dla
?
jest
{0,1}
ekwiwalentem dla
July?
mo e by
(Jul|July)
• Symbole
*
,
?
i
+
mog by u ywane w stosunku do
pojedynczych znaków jak i całych podwyra e , np.:
– do
(a*c)+
pasuj ‘c’, ‘ac’, ‘aac’ albo ‘aacaacac’, ale nie pasuj ‘a’
lub pusta linia
32
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
63 / 81
grep: odwołania wsteczne
• Sometimes it is handy to be able to refer to a match that
was made earlier in a regex
• This is done using backreferences
–
\
n
is the backreference specifier, where n is a number
• For example, to find if the first word of a line is the same
as the last:
–
^\([[:alpha:]]\{1,\}\).*\1$
– The
\([[:alpha:]]\{1,\}\)
matches 1 or more letters
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
64 / 81
Przykłady u ycia wyra e regularnych dla
egrep
• nazwy zmiennych w C
–
[a-zA-Z_][a-zA-Z_0-9]*
• kwoty w dolarach (opcjonalnie z centami)
–
\$[0-9]+(\.[0-9][0-9])?
• godzina
–
(1[012]|[1-9]):[0-5][0-9] (am|pm)
• nagłówi HTML
<h1> <H1> <h2> …
–
<[hH][1-4]>
33
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
65 / 81
Składnia polece rodziny grep
grep [-hilnv] [-e expression] [filename]
egrep [-hilnv] [-e expression] [-f filename] [expression] [filename]
fgrep [-hilnxv] [-e string] [-f filename] [string] [filename]
-h
nie wy wietla nazw plików
-i
ignoruje wielko ci liter we wzorcach i na wej ciu
-l
wypisuje jedynie nazwy plików zawieraj cych
dopasowania
-n
poprzedza ka d lini wyj cia jej numerem w pliku
wej ciowym
-v
odwraca sens dopasowania (wybór linii niepasuj cych)
-x
dopasowanie całych linii (opcja tylko dla fgrep)
-f filename
pobiera wzorzec z pliku filename
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
66 / 81
Składnia polece rodziny grep (cd.)
Regular
Expression
Matches
grep, fgrep, and egrep
x
xyz
Ordinary characters match themselves (NEWLINES and
metacharacters excluded)
Ordinary strings match themselves
grep and egrep
\m
^
$
.
[xy^$x]
[^xy^$z]
[a-z]
[^a-z]
r*
r1r2
Matches literal character m
Start of line
End of line
Any single character
Any of x, y, ^, $, or z
Any one character other than x, y, ^, $, or z
Any single character in given range
Any single character not in range
zero or more occurrences of regex r
Matches r1 followed by r2
34
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
67 / 81
Składnia polece rodziny grep (cd.)
Regular
Expression
Matches
grep only
\(r\)
\n
\{n,m\}
Tagged regular expression, matches r
Set to what matched the nth tagged
expression (n = 1-9)
Repetition
egrep only
r+
r?
r1|r2
(r1|r2)r3
(r1|r2)*
{n,m}
One or more occurrences of r
Zero or one occurrences of r
Either r1 or r2
Either r1r3 or r2r3
Zero or more occurrences of r1|r2,
e.g., r1, r1r1, r2r1, r1r1r2r1,…)
Repetition
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
68 / 81
U ycie polece rodziny grep
grep ‘men’ GrepMe
grep ‘fo*’ GrepMe
egrep ‘fo+’ GrepMe
egrep -n ‘[Tt]he’ GrepMe
fgrep ‘The’ GrepMe
egrep ‘NC+[0-9]*A?’ GrepMe
fgrep -f expfile GrepMe
• Odszukaj w plikach o rozszerzeniu .c linie zawieraj ce liczb ze
znakiem:
$ egrep ’[-+][0-9]+\.?[0-9]*’ *.c
bsearch. c: return
-1
;
compile. c: strchr("
+1-2
*3", t-> op)[1] - ’0’, dst,
convert. c: Print integers in a given base 2
-16
(default 10)
convert. c: sscanf( argv[ i
+1
], "% d", &base);
strcmp. c: return
-1
;
strcmp. c: return
+1
;
35
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
69 / 81
U ycie polece rodziny grep (cd.)
• /usr/dict/words zawiera ok. 25,000 słów w j. angielskim. Jakie słowa zawieraj
dwa znaki ‘hh’ obok siebie:
$ egrep hh /usr/dict/words
beachhead
highhanded
withheld
withhold
• Proste sprawdzenie pisowni (niepewna alternatywa):
$ egrep "n(ie|ei)ther" /usr/dict/words
neither
• W jakich słowach znajduj si trzy znaki ‘c’ rozdzielone pojedynczymi znakami:
$ egrep u.u.u /usr/dict/words
cumulus
• W ilu słowach znajduj si trzy znaki ‘a’ rozdzielone pojedynczymi znakami:
$ egrep a.a.a /usr/dict/words | wc –l
50
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
70 / 81
grep: inne uwagi
• u ycie /dev/null jako dodatkowej nazwy pliku powoduje
wy wietlenie nazwy pliku, w którym zostało dokonane
dopasowanie, np.:
$ grep test bigfile
This is a test.
$ grep test /dev/null bigfile
bigfile:This is a test.
• Wykorzystanie kodu powrotu z polecenia grep
$ grep fred filename > /dev/null && rm filename
/dev/null – „czarna dziura” - wirtualne urz dzenie usuwaj ce wszystkie dane
przekierowane do niego i nie generuj ce adnych danych dla procesów
czytaj cych z niego
36
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
71 / 81
Maskowanie i wzorce (ang. wildcards & patterns)
powłoki
• Powłoki operuj na pewnych (cz sto modyfikowanych)
podzbiorach wyra e regularnych. Przykładowo powłoka
ksh
rozszerza zakres wzorców.
• Zazwyczaj inna składnia ni przyj ta w omawianych
wyra eniach regularnych, np.:
*
w powłoce
.*
w wyra eniach regularnych
?
w powłoce
.
w wyra eniach regularnych
[]
ma takie samo znaczenie w powłoce i w wyra eniach
regularnych, ale ju negacja b dzie wyra ona inaczej:
wyra enie regularne:
[^abc]
powłoka:
[!abc]
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
72 / 81
Przechodzenie drzewa
• jak wybra zbiór plików, w stosunku do których maj by
zastosowane filtry?
• pierwsza mo liwo : maski
–
grep word *
–
grep word * */* */*/*
• ale co np. z plikami:
– we wszystkich podkatalogach danego katalogu?
– utworzonymi po 1 stycznia 2001 roku?
– plikami wi kszymi ni 10K?
37
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
73 / 81
Polecenie find
•
find [path...] [expression]
• polecenie szuka plików w hierarchii katalogowej katalogu
(lub wielu katalogów)
path
• w skład
expression
wchodz :
– opcje
– testy
– akcje
– operatory
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
74 / 81
Polecenie find - opcje
-depth
- przetwarza zawarto ka dego katalogu przed
samym katalogiem jako takim
-maxdepth gł boko
- schodzi maksymalnie
gł boko
(nieujemna liczba całkowita) poziomów
katalogów od argumentów wiersza polece . `
-maxdepth
0
' oznacza, by testy i akcje stosowa tylko do argumentów
wiersza polece
-follow
- rozwikłuje dowi zania symboliczne
-xdev
- nie zagł bia si w katalogi na innych systemach
plików
...
38
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
75 / 81
Polecenie find - testy
Warto ci numeryczne mog yb podawane jako +n (wi kszy od n), -n (mniejszy od n) lub n
(równy n).
-amin n
- dost p do pliku nast pił ostatnio n minut temu
-cmin n
- status pliku został zmieniony n minut temu
-mmin n
- dane pliku były ostatnio modyfikowane n minut temu
-size n
- plik zajmuje n jednostek miejsca (jednostki to domy lnie 512-bajtowe bloki)
-inum n
- plik ma numer iw zła n
-name wzorzec
- podstawa nazwy pliku (z usuni t cie k i poprzedzaj cymi katalogami)
odpowiada wzorcowi powłoki wzorzec
-perm prawa
- bity praw pliku s dokładnie równe prawom
-perm -prawa
- wszystkie bity prawa s ustawione dla pliku
-perm +prawa
- który z bitów praw jest ustawiony dla pliku
-type x
- plik jest typu x (x=‘f’ zwykły plik, x=‘d’ katalog, x=‘l’ dowi zanie, itd.)
-user userid | username
- wła cicielem pliku jest username (lub numerycznie userid)
-group groupid | groupname
- plik nale y do grupy groupname (lub numerycznie
groupid)
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
76 / 81
Polecenie find - akcje
•
- prawdziwe; wypisuje pełn nazw pliku na standardowe
wyj cie, za nazw daje now lini (akcja domy lna)
•
-exec polecenie ;
- wykonuje polecenie; prawdziwe je li
zwrócony został status 0; wszelkie nast pne argumenty find s brane
za argumenty polecenia, a nie zostanie napotkany argument,
składaj cy si z ‘;’
•
-ok polecenie ;
- podobne do -exec, lecz pyta wpierw u ytkownika
(na standardowym wej ciu); je li odpowied nie rozpoczyna si od `y' lub
`Y', nie uruchamia polecenia i zwraca fałsz
...
39
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
77 / 81
Polecenie find - operatory
Wymienione w malej cym priorytecie:
( wyra ) - wymusza pierwsze stwo.
! wyra - prawdziwe je li wyra jest fałszywe
wyra 1 wyra 2 - and (jawny); wyra 2 nie jest analizowany je li wyra 1 jest
fałszywe
wyra 1 -and wyra 2 - to samo, co wyra 1 wyra 2
wyra 1 -or wyra 2 - or; wyra 2 nie jest analizowane je li wyra 1 jest
prawdziwe
wyra 1 , wyra 2 - lista; zarówno wyra 1 jak i wyra 2 zawsze s
analizowane. Warto wyra 1 jest niszczona; warto listy jest
warto ci wyra 2
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
78 / 81
U ycie find
• Znajd w katalogu domowym wszystkie pliki na f
–
find ~ -name ‘f*’ -print
• Znajd w katalogu domowym wszystkie pliki o wilek ci 10K
–
find ~ -size 10k -print
• Usu pliki o nazwie core
–
find / -name core –exec rm {} \;
40
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
79 / 81
Porównanie dwóch plików: diff
polecenie diff porównuje dwa pliki i wy wietla opis ró nic, u ycie:
diff [options] file1 file2
-q
- poinformowanie jedynie o tym, czy pliki si ró ni
-i
- ignorowanie zmian w wielko ci liter
-w
- ignorowanie wszystkich odst pów przy porównywaniu plików
--binary
- wymuszenie odczytu i zapisu danych w trybie binarnym
-e
- generowanie skryptu ed transformacji file1 do file2
apples
oranges
walnuts
apples
oranges
grapes
$ diff test1 test2
3c3
< walnuts
---
> grapes
SYSTEMY OPERACYJNE KOMPUTERÓW
UNIX – PODSTAWOWE POLECENIA POWŁOKI
80 / 81
Porównanie dwóch plików: cmp i comm
•
cmp
- porównuje dwa pliki lub zakresy bajtów
– narz dzie cmp porównuje dwa dowolnego typu pliki i wypisuje
wynik na standardowym wyj ciu. Domy lnie, cmp milczy gdy
pliki s takie same. Je li si ró ni , zgłaszany jest numer bajtu
i linii, gdzie wyst piła pierwsza ró nica.
•
comm
- porównaj dwa posortowane pliki linia po linii
– bez opcji comm wypisuje wynik w trzech kolumnach. Kolumna
pierwsza zawiera linie unikatowe dla plik1, kolumna druga
zawiera linie unikatowe dla plik2, a kolumna trzecia zawiera
linie wspólne obu plikom;
– oba pliki musz by posortowane zanim b dzie mo na u y
comm, przy czym ko cz ce znaki nowej linii s znacz ce.