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:
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
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
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
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.
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
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:
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)
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:
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 {} \;
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