background image

Unix - 'przetwarzanie tekstowe' 

'tedd' T. K dzierski 

str. 1/1 (ost. akt.: 14-02-05) 

 

 

Wymagania.we: przerobienie działu 'pliki i kartoteki', przerobienie działu 'edytory', przerobienie działu ‘procesy’ 

 

 

 

'Przetwarzanie tekstowe' 

 

Tryb 'tekstowy', w dobie coraz powszechniejszych interface'ów graficznych mo e wydawa  si  'krokiem wstecz'. Ci gle jednak komendy 'przetwarzania 

tekstowego' pozwalaj  na wykonanie operacji, które nie s  dost pne za pomoc  standardowych, graficznych narz dzi - w dodatku działaj  nieporównywalnie 

szybciej. Najcz ciej cytowanym przykładem 'tekstowego przetwarzania' informacji, niemo liwego do zrealizowania za pomoc  narz dzi dostarczanych przez 

rodowisko graficzne s  zadania typu 'znale  wszystkie pliki nale ce do u ytkownika "nowak", modyfikowane podczas ostatnich dwóch tygodni, 

posiadaj ce rozmiar wi kszy ni  10 MB oraz b d ce plikami wykonywalnymi' lub 'znale  wszystkie pliki, które maj  niezdefiniowanego wła ciciela' (sytuacja 

taka mo e mie  miejsce po włamaniu do naszego systemu lub po usuni ciu definicji u ytkownika - bez usuwania jego plików). Pod koniec tego działu 

b dziemy w stanie wykona  takie operacje. 

 

 

 

znajd  linie w których wyst puje pewien ła cuch znaków 

 

grep parametry tekst wzornik 

 

... komenda | grep parametry tekst | ... komenda  

 

Komenda 

grep

 pozwala na wyszukanie - w informacji tekstowej - wszystkich linii zawieraj cej 

tekst

. Dwa - najcz ciej u ywane - parametry tej komendy, to: 

 

background image

Unix - 'przetwarzanie tekstowe' 

'tedd' T. K dzierski 

str. 2/2 (ost. akt.: 14-02-05) 

 

-i 

wyszukuj tekst uto samiaj c du e i małe litery ('

ignore case

') 

-v 

wyszukuj linie 

nie 

zawieraj ce tekstu '

tekst

 

S dz ,  e najpro ciej b dzie wyja ni  'u yteczno ' tej komendy na przykładach: 

 

• 

W którym  z plików, którego nazwa ko czy si  na 'txt' masz zapisane numery totolotka na nast pny tydzie . Numery s  zapisane po słowie 'lotek'. Znajd  

te numery: 

grep -i lotek *txt 

 

• 

Chcesz wy wietli  opis definicji u ytkownika 'nowak', pami taj c  e opisy u ytkowników znajduj  si  w pliku /etc/passwd 

grep -i nowak /etc/passwd 

 

 

 

• 

Znajd  wszystkie procesy u ytkownika 'nowak', uruchomione na elfie, których nazwy zawieraj  w sobie ła cuch znaków 'prog': 

ps -Af | grep nowak | grep prog  

(mo emy 

krotnie

 u ywa  grepa do filtrowania informacji tekstowej) 

 

• 

Wy wietl informacje o wszystkich bie co działaj cych procesach z wyj tkiem procesów roota: 

ps -Af | grep -v root | less 

 

 

background image

Unix - 'przetwarzanie tekstowe' 

'tedd' T. K dzierski 

str. 3/3 (ost. akt.: 14-02-05) 

 

 

W którym  z plików  ródłowych zawieraj cych programy w j zyku C (ich nazwy ko cz  si  na '

c

') zapisałe  definicj  funkcji 

Alfa

. Znajd  plik, 

w którym znajduje si  ta definicja 

 

Kolejna komenda - nie wiem dlaczego - zwykle powodowała 'o ywienie' w czasie zaj ... 

 

 

policz ilo  znaków, słów i linii w tek cie 

 

wc [-c] [-w] [-l] wzornik 

 

... komenda | wc [-c] [-w] [-l] | ... komenda  

 

Komenda 

wc

 ('

word count

') - u yta bez  adnych parametrów - liczy ilo  znaków, wyrazów i linii w tek cie. U ycie parametrów pozwala 'ograniczy ' to, co 

policzy komanda 

wc

 

-c 

policz ilo  znaków w tek cie 

-w  policz ilo  słów w tek cie 

-l 

policz ilo  linii w tek cie 

 

Zastosowanie? 

 

• 

policz ilo  zdefiniowanych u ytkowników w Twoim systemie Unixowym: 

cat /etc/passwd | wc -l 

background image

Unix - 'przetwarzanie tekstowe' 

'tedd' T. K dzierski 

str. 4/4 (ost. akt.: 14-02-05) 

 

 

 

• 

policz ilo  procesów uruchomionych przez u ytkownika 'nowak' 

ps -Af | grep nowak | wc -l 

 

Komenda 

wc

, w poł czeniu z 

grep

em pozwala zlicza  ilo  wyst pie  procesów, plików, danych konfiguracyjnych - wszystkiego, co mo emy wydzieli  za 

pomoc  ła cucha znaków. 

 

 

policz ilo  plików  ródłowych, zawieraj cych programy  ródłowe w j zyku C (zakładamy,  e nazwy tych plików ko cz  si  na 

.c), zawartych 

we wszystkich podkartotekach bie cej kartoteki 

 

 

 

sortuj dane tekstowe 

 

sort [ parametry ] wzornik 

 

... komenda | sort [ parametry ] | ... komenda  

 

Najcz ciej u ywane parametry to: 

 

-k 

liczba

 

sortuj dane według 

liczba

 pola. Pola s  - standardowo - ograniczane przez znaki spacji i tabluacji 

-n 

kolumna według której odbywa si  sortowanie jest numeryczna. Standardowo 

sort 

traktuje sortowane kolumny jako pola znakowe. Pola 

background image

Unix - 'przetwarzanie tekstowe' 

'tedd' T. K dzierski 

str. 5/5 (ost. akt.: 14-02-05) 

 

numeryczne, potraktowane jako pola znakowe zostan  uporz dkowane według kodów ASCII (1, 20, 2, ...). U ycie parametru 

-n

 spowoduje 

poprawne posortowanie kolumny numerycznej 

-t

znak

 

redefiniuje znak oddzielaj cy pola w sortowanym tek cie 

-r 

zmie  kolejno  sortowania. Standardowo 

sort

 porz dkuje dane rosn co - 

-r

 odwraca kolejno  sortowania 

 

 

 

• 

Wy wietl nazwy wszystkich procesów u ytkownika 'nowak', posortowane według identyfikatorów procesów: 

ps -Af | grep nowak | sort -k 2 -n | less 

 

Cz sto zachodzi potrzeba wy wietlenia pocz tku lub ko ca pliku: 

 

 

wy wietl pocz tkowe linie z pliku: 

 

head [-liczba] wzornik 

 

... | head [-liczba] | ... 

wy wietl ko cowe linie z pliku: 

 

tail [-liczba] [-f] wzornik 

 

... | tail [-liczba] [-f] | ... 

 

Je eli nie podamy liczby linii - 

head

 i 

tail

 wy wietlaj  - odpowiednio - 10 pocz tkowych lub 10 ko cowych linii. 

background image

Unix - 'przetwarzanie tekstowe' 

'tedd' T. K dzierski 

str. 6/6 (ost. akt.: 14-02-05) 

 

 

• 

wy wietl nazwy siedmiu plików z bie cej kartoteki o najwi kszym rozmiarze: 

ls -la | sort -k 5 -n -r | head -7 

 

Parametr 

-f

  komendy 

tail

  nadaje  si   szczególnie  do  ledzenia  zmian  w  logach.  Jego  u ycie  spowoduje  wy wietlenie  okre lonej  ilo ci  ko cowych  linii, 

tail

 

b dzie  nast pnie  ledził  zawarto   pliku,  którego  nazwa  jest  jego  parametrem.  Je eli  w  pliku  pojawi   si   nowe  linie,  dopisane  na  ko cu  pliku  -  zostan  

wy wietlone przez 

tail

.  

 

 

• 

wy wietlaj log systemowy na elfie: 

tail -f /var/adm/SYSLOG 

 

 

 

Wyszukiwanie plików - '

find

 

Komenda ‘

find

’ słu y do wyszukiwania plików. Potrafi wi cej ni  inne komendy wyszukiwania – na odnalezionych plikach mo na wykona  – w zasadzie 

dowoln  – operacj . Składnia komendy 

find 

wygl da nast puj co: 

 

 

 

znajd  pliki, wykonaj na nich okre lon  operacj  

 

find kartoteka_pocz tkowa parametry_wyszukiwania akcja  

background image

Unix - 'przetwarzanie tekstowe' 

'tedd' T. K dzierski 

str. 7/7 (ost. akt.: 14-02-05) 

 

 

Poszczególne składowe komendy 

find

 maj  nast puj ce znaczenie: 

 

• 

kartoteka_pocz tkowa 

kartoteka od której komenda 

find 

zaczyna przeszukiwanie kodkartotek. Komenda 

find

 zawsze przeszukuje drzewo kartotek, pocz wszy od kartoteki której 

nazwa pojawi si  jako 

kartoteka_pocz tkowa

 

 

Je eli ‘nieodpowiednio’ dobierzemy kartotek  pocz tkow , komenda 

find

 mo e si  bardzo długo wykonywa . W Unixie otoczenie sieciowe i 

urz dzenia s  ‘przesłoni te’ drzewem kartotek. Oznacza to,  e dysk sieciowy jest w tym systemie widziany jako podkartoteka. To samo dotyczy 

partycji dyskowych (sposób doł czania dysków sieciowych i partycji do drzewa kartotek poznamy w drugiej cz ci zaj ). Je eli b dziemy mieli tak 

‘podpi te’ dyski sieciowe lub kartoteki to szukanie plików w sytuacji, kiedy kartotek  pocz tkow  w komendzie 

find

 b dzie kartoteka korzenia 

przeszuka wszystkie doł czone dyski sieciowe i partycje. U ycie parametru 

–xdev

 ‘wyłaczy’ przeszukiwanie tak doł czonych dysków sieciowych i 

partycji 

 

• 

parametry_wyszukiwania 

okre laj  

czego ma szuka  komenda 

find

. Najcz ciej u ywane parametry wyszukiwania to: 

 

-name 

fname

 

szukaj pliku którego nazwa pasuje do 

fname

. Je eli chcemy u y  wzornika jako 

fname

 – musimy go uj  w cudzysłowy ( w 

przeciwnym przypadku zostały zamieniony – przez shella – w nazwy plików pasuj ce do tego wzornika. Tylko pierwsza z tak 

rozwini tych nazw zostałaby potraktowana jako skł dnik parametru –name – posoztałe były traktowane jako bł dne składowe 

komendy 

find

.) 

-perm 

prawa_dost

 

-perm +

prawa_dost

 

-perm –

prawa_dost

 

szukamy plików do których mamy okre lone prawa dost pu (

prawa_dost

). Prawa dost pu mog  by  podane w postaci liczby 

oktalnej lub w postaci symbolicznej – tak jak podajemy je w komendzie 

chmod

. Je eli podamy prawa dost pu bez  adnego znaku – 

szukamy plików do których mamy 

dokładnie takie prawa dost pu jak podane. ‘

+prawa_dost pu

’ oznacza,  e wszystkie z podanych 

praw dost pu musimy mie  zagwarantowane (ale – by  mo e – nie s  to wszystkie nasze prawa dost pu do plików). 

-prawa_dost pu’

 oznacza  e mamy mie  jakiekolwiek  z wymienionych praw dost pu. 

-type d 

szukany obiekt jest – odpowiednio: 

background image

Unix - 'przetwarzanie tekstowe' 

'tedd' T. K dzierski 

str. 8/8 (ost. akt.: 14-02-05) 

 

-type l 

-type f 

-type d  

kartotek  

-type l   

linkiem 

-type f   

plikiem 

-user 

name

 

szukany obiekt nale y do u ytkownika o podanej nazwie lub numerze (identyfikatorze u ytkownika) 

-group 

name

 

szukany obiekt nale y do u ytkownika b d cego członkiem grupy o podanej nazwie (nazwy grup w pliku 

/etc/group

-nouser 

szukamy obiektów które nie nale  do  adnego ze zdefiniowanych u ytkowników. Tego parametru u ywamy np. szukaj c plików i 

kartotek które pozostały w systemie po u ytkowniku którego usun li my z systemu. 

-nogroup 

szukamy obiektów, które nale  do nie zdefiniowanej w systemie grupy u ytkowników (usun li my grup  z /etc/group ale w systemie 

pozostały jeszcze pliki, których ‘grupowa przynale no ’ wskazuje na t  usuni ta grup ) 

-size 

liczba

bloków

 

-size 

liczba

c

znaków

 

-size 

liczba

k

KB

  

szukamy plików o rozmiarze równym co najmniej 

liczba

 bloków (w wi kszo ci systemów Unixowych blok ma 512 bajtów). Je eli po 

liczbie

 wpiszemy c – 

liczba 

jest traktowana jako ilo  znaków. k oznacza,  e 

liczba

 to ilo  KB. 

-mtime 

liczba

 

-mtime +

liczba

 

-mtime –

liczba

 

szukamy obiektów które były modyfikowane 

liczba 

dni temu. ‘

liczba

’ oznacza,  e szukany obiekt był modyfikowany pomi dzy 

liczba

*24 (

liczba-1

)*24 godzin , ‘

+liczba

’ – obiekt był modyfikowany wcze niej ni  

liczba

*24 godzin temu, ‘

-liczba

’ – obiekt był 

modyfikowany pó niej ni  

liczba

*24 godzin temu 

-newer 

fname

 

szukamy obiektów modyfikowanych pó niej ni  plik o nazwie 

fname

 

-xdev 

je eli zaczynamy przeszukiwanie od jakiej  kartoteki do której – jako podkartoteki – doł czone s  dyski sieciowe lub dodatkowe 

partycje dysków, dodatkowe urz dzenia (np. CD ROM) – 

find

 nie b dzie przeszukiwał tych podkartotek 

Je eli u yjemy kilku parametrów_wyszukiwania komenda 

find

 potraktuje je jako koniunkcj  (and) warunków według których szukane b d  pliki. Dodatkowo 

mo emy ł czy  parametry wyszukiwania w grupy, u ywaj c konstrukcji 

\( warunek

1

 

operator

 warunek

2

 ... \) – operatorami mog  by : 

-a 

koniunkcja  (

and

background image

Unix - 'przetwarzanie tekstowe' 

'tedd' T. K dzierski 

str. 9/9 (ost. akt.: 14-02-05) 

 

-o 

alternatywa (or

! 

negacja (jak w j zyku C) 

 

• 

akcja 

Ta grupa parametrów okre la, co komenda 

find

 ma zrobi  ze znalezionymi obiektami. Oczywi cie prawa dost pu – ograniczaj ce operacje jakie mo emy 

wykona  na znalezionych obiektach działaj  normalnie – nie do wszystkich operacji b dziemy mieli ‘prawa wykonania’. Najcz ciej wykonywane akcje: 

 

-print 

wylistuj pełn   cie k  dost pu do znalezionego obiektu 

-exec komenda ...{} ... \;  wykonaj podan  komend  na znalezionych obiektach. W ‘tre ci’ komendy dwa nawiasy klamrowe {} zostan  zast pione przez 

pełn   cie k  dost pu do znalezionego obiektu. Komenda musi ko czy  si  znakami 

\; Komenda jest wykonywana 

bezwarunkowo (bez jakiegokolwiek pytania o potwierdzenie tego, czy komenda ma by  wykonana) 

-ok. komenda ... {} ... \; 

działa dokładnie tak jak 

–exec ale wymaga potwierdzenia. 

find

 wy wietla najpierw komend , która ma by  wykonana i pyta, czy 

j  wykona . Je eli u ytkownik naci nie y a po nim Enter – komenda zostanie wykonana. Dowolny inny znak spowoduje 

zignorowanie komendy i kontynuacj  wyszukiwania. Konstrukcje 

{} i \; działaj  tak samo jak w komendzie –exec

 

Przykłady: 

• 

znajd  wszystkie obiekty nale ce do u ytkownika ‘nowak’ 

find / -user nowak –print 

 

• 

znajd  wszystkie pliki których wła ciciele zostali usuni ci z systemu a ich pliki zawierały w nazwach ‘doom’ – usu  znalezione pliki 

find / -nouser –type f –name „*doom*” –ok rm {} \; 

 

 

background image

Unix - 'przetwarzanie tekstowe' 

'tedd' T. K dzierski 

str. 10/10 (ost. akt.: 14-02-05) 

 

Test.wy: 

 

 

• 

policz ilo  plików znajduj cych si  w systemie, które nie maj  swoich wła cicieli 

• 

znajd  i skasuj wszystkie własne pliki o nazwie 

core

 (takie pliki powstaj  cz sto jako ‘zrzut pami ci’ po niepoprawnym zako czeniu 

programu) 

• 

znajd  i wylistuj  cie k  dost pu i zawarto  wszystkich plików których jeste  wła cicielem, zmodyfikowanych w czasie ostatniego 

tygodnia. Listuj informacje o plikach ze stronicowaniem (

less

 

Nast pny rozdział

awk.doc

  

 

Koniec