background image

Uniwersytet w Białymstoku

Wydział Matematyki i Informatyki

Instytut Informatyki

Materiały bazowe do zajęć z przedmiotu:

Systemy operacyjne

Laboratorium nr 03

Temat:

Komendy bash'a. Wyszukiwanie i modyfikacja

zawartości strumieni i plików.

mgr Adam Bonda

Białystok 2008

background image

Cel laboratorium: Zapoznanie si

ę

 z podstawowymi komendami Linux'a ci

ą

g dalszy.

Skróty klawiszowe, operacje na zawarto

ś

ciach plików

(1)  Skróty klawiszowe Bash'a

Wywołania z ctrl'em:

ctrl + a

– przeniesienie kursora na pocz

ą

tek linii

ctrl + b

– przeniesienie kursora jeden znak wstecz

ctrl + c

– przerwanie wywołania

ctrl + d

– kasowanie znaku pod kursorem

ctrl + D

– znak ko

ń

ca linii

ctrl + e

– przeniesienie kursora na koniec linii

ctrl + f

– przeniesienie kursora jeden znak do przodu

ctrl + k

– usuni

ę

cie znaków do znaku ko

ń

ca linii – EOL (ang. end of line)

ctrl + l

– czyszczenie ekranu

ctrl + r

– przeszukiwanie historii komend

ctrl + R

– przeszukiwanie historii komend z wielokrotnym wyst

ą

pieniem

ctrl + s

– zatrzymuje wyjście uruchomionego programu

ctrl + q

– przywraca wysyłanie danych na wyjście

ctrl + u

– usuni

ę

cie znaków przed kursorem

ctrl + xx

– przemieszczanie kursora pomi

ę

dzy aktualnym poło

Ŝ

eniem kursora, 

   a EOL

ctrl + x @

– wy

ś

wietle nazwy hostów (z pliku 

/etc/hosts

)

ctrl + z

– zawiesza lub wstrzymuje wykonywane polecenie

ctrl + \

– zako

ń

czenie programu i zapisanie obrazu programu w pliku core

Wywołania z alt'em:

alt + <

– skok do pierwej linii historii komend

alt + >

– skok do ostatniej linii historii komend

alt + ?

– wy

ś

wietlenie list

ę

 aktualnych doko

ń

cze

ń

alt + *

– wy

ś

wietlenie list

ę

 wszystkich doko

ń

cze

ń

alt + /

– wy

ś

wietla doko

ń

czenie pliku

alt + .

– wypisuje argument ostatniego polecenie

alt + b

– przenosi kursor o wyraz wstecz

alt + c

– zapisuje(zmienia) wyraz wielk

ą

 litery

alt + d

– kasuje wyraz

alt + f

– przenosi kursor o wyraz do przodu

alt + l

– zapisuje(zmienia) wyraz mał

ą

 litery

alt + n

– przeszukuj

ę

 histori

ę

 w przód bez dopisywania

alt + p

– przeszukuj

ę

 histori

ę

 wstecz bez dopisywania

alt + r

– przywołuje komend

ę

alt + t

– przestawia wyrazy

alt + u

– zapisuje cały wyraz wielkimi literami

alt + back-space

– kasuje cały wyraz przed kursorem

alt + F1,F2..

– zmienia numer aktualnego terminala

Inne wywołania klawiszowe:

„2xTab”

 oznacza dwukrotne naci

ś

niecie klawisza tabulacji (TAB)

2xTab

 – wy

ś

wietla wszystkie mo

Ŝ

liwe do wywołania komendy (to samo co alt + ?)

(tekst)2xTab

 – wszystkie mo

Ŝ

liwe doko

ń

czenia polecenia zaczynaj

ą

cego si

ę

 (tekst)

/2xTab

 – wy

ś

wietla struktur

ę

 katalogów z ukrytymi wł

ą

cznie

background image

./2xTab

 – wy

ś

wietla wszystkie katalogi w bie

Ŝą

cej lokalizacji z ukrytymi wł

ą

cznie

*2xTab

 – wy

ś

wietla wszystkie katalogi w bie

Ŝą

cej lokalizacji (bez ukrytych)

~2xTab

 – wy

ś

wietla u

Ŝ

ytkowników systemu (z /etc/passwd)

$2xTab

 – wy

ś

wietla wszystkie zmienne

@2xTab

 – wy

ś

wietla zawarto

ść

 

/etc/hosts

=2xTab

 – działa tak samo jak 

ls

 czy 

dir

(2) Pliki specialne i terminale

tty

(ang.Teletype device) wy

ś

wietla nazw

ę

 pliku terminala na którym prowadzona

jest bie

Ŝą

ca sesja

Przekazywanie informacji z bie

Ŝą

cego terminala do terminala 

/dev/pts/1

cat > /dev/pts/1
...
ctrl+d

wi

ę

cej informacji 

man tty

stty

wy

ś

wietlenie lub zmiana ustawie

ń

 terminala

Opcjonalny  minus  przed USTAWIENIEM oznacza zaprzeczenie. Gwiazdka (*) oznacza
ustawienia spoza POSIX. System sam okre

ś

la, które ustawienia s

ą

 dost

ę

pne.

Przykłady zdefiniowania funkcji klawiszowych i ustawie

ń

 terminala

eof ZNAK

– ZNAK wysyła znak ko

ń

ca pliku (ko

ń

ca wej

ś

cia)

erase ZNAK

– ZNAK kasuje ostatni wprowadzony znak

intr ZNAK

– ZNAK wysyła sygnał przerwania

kill ZNAK

– ZNAK kasuje bie

Ŝą

c

ą

 lini

ę

rows N

– ustawienie długo

ś

ci terminala na N wierszy

cols N

– ustawienie szeroko

ś

ci terminala na N kolumn

Przykłady:

Ustawienie kombinacji ctrl+F funkcji kasowania bie

Ŝą

cej linii

stty kill ^F

Ustawienie liczby wierszy na 30

stty rows 30

wi

ę

cej informacji 

man stty

(3) Komendy:

file

okre

ś

lenie typu pliku

Polecenie sprawdza   ka

Ŝ

dy   ze swoich argumentów, próbuj

ą

c go sklasyfikowa

ć

. Istniej

ą

trzy zestawy testów, które s

ą

 wykonywane  w  nast

ę

puj

ą

cej   kolejno

ś

ci:   testy   systemu

plików,     testy   liczb   magicznych,   testy   j

ę

zyka.   Pierwszy   zako

ń

czony   powodzeniem   test

powoduje wypisanie typu pliku.

Przykład:

login@nazwa:~$ file /etc/fstab
/etc/fstab: ASCII text

background image

umask

ustawia mask

ę

 tworzenia pliku (katalogu)

pliki

katalogi

warto

ść

prawa dost

ę

pu warto

ść

prawa dost

ę

pu

0
1
2
3
4
5
6
7

rw-
rw-
r--
r--
-w-
-w-
---
---

0
1
2
3
4
5
6
7

rwx
rw-
r-x
r--
-wx
-w-
--x
---

Przykład:
Zestaw kilku komend ułatwiaj

ą

cych sprawdzenie wyniku u

Ŝ

ycia polecenia 

umask

umask 444 ; rm plik ; touch plik ; ls -l plik
--w--w--w-  1 adam shellusers 0 2008-10-13 17:09 plik

cmp

(ang. compare) porównuje dwa pliki

U

Ŝ

ycie:

cmp [-l][-s] plik1 plik2

Porównuje   wskazane   pliki   i   je

Ŝ

eli   si

ę

  one   ró

Ŝ

ni

ą

,   dla   ka

Ŝ

dej   ró

Ŝ

nicy   wyprowadza   na

standardowe   wyj

ś

cie   numer   ró

Ŝ

ni

ą

cego   si

ę

  bajtu   i   numer   wiersza   w   którym   ten   bajt

wyst

ę

puje.

-l

 – wyprowadzenie numerów bajtów dziesi

ę

tnie, a ich warto

ś

ci ósemkowo

-s

  – wyprowadzenie tylko kodu zako

ń

czenia polecenia (

0

  – pliki s

ą

 identyczne,  

1

  – pliki

Ŝ

ni

ą

 si

ę

2

 – pliki s

ą

 niedost

ę

pne)

diff

(ang. difference) ustala ró

Ŝ

nice pomi

ę

dzy dwoma plikami

U

Ŝ

ycie:

diff -[befh] plik1 plik2

Porównuje pliki wiersz po wierszu i wyprowadza ró

Ŝ

nice na standradowe wyj

ś

cie wraz ze

wskazówkami co nale

Ŝ

y zrobi

ć

 z plikiem 

plik1

, aby otrzyma

ć

 

plik2

.

comm

(ang. common) wyprowadza wspólne cz

ęś

ci plików

U

Ŝ

ycie:

comm -[123] plik1 plik2

Porównuje pliki wiersz po wierszu i wyprowadza ró

Ŝ

nice na standradowe wyj

ś

cie wraz ze

wskazówkami co nale

Ŝ

y zrobi

ć

 z plikiem 

plik1

, aby otrzyma

ć

 

plik2

.

O ile nie podano dodatkowych funkcji dane wyj

ś

ciowe wyprowadzane s

ą

 w trzech

kolumnach:

kolumna1 – wiersze, które zawarte s

ą

 tylko w 

plik1

kolumna2 – wiersze, które zawarte s

ą

 tylko w 

plik2

kolumna3 – wiersze, które zawarte s

ą

 w obydwu plikach

background image

Przykład:
wyprowadzenie jedynie kolumny z liniami wspólnymi dla dwu plików:

comm -12 f1 f2

wyprowadzenie jedynie tych wierszy, które wyst

ę

puj

ą

 w pliku f1:

comm -23 f1 f2

Nie wyprowadza 

Ŝ

adnych wierszy:

comm -123 f1 f2

wc

(ang. word count) liczy liczb

ę

 bajtów, słów oddzielonych białymi znakami, oraz

znaków ko

ń

ca linii (wierszy) w  ka

Ŝ

dym  podanym  pliku  lub  w  standardowym

wej

ś

ciu

Przykład:

login@nazwa:~$ ls > plik; wc < plik; rm plik
 104  116 1171

                                                       

liczba znaków (w tym spacji)
liczba kolumn (oddzielonych spacjami)
liczba wierszy

locate

wyszukuje pliki w okresowo aktualizowanej bazie danych

Bardzo wydajny sposób na okre

ś

lenie poło

Ŝ

enia pliku(ów) w systemie. 

locate

 działa w

oparciu o periodycznie uruchamian

ą

 komend

ę

 

updatedb

. Z kolei działanie 

updatedb

uzale

Ŝ

nione jest od programu 

find

.

Dla ka

Ŝ

dego z podanych wzorców 

locate

 przeszukuje jedn

ą

 lub wi

ę

cej  baz danych

zawieraj

ą

cych nazwy plików i wy

ś

wietla te nazwy, które zawieraj

ą

 wzorzec. Wzorce mog

ą

zawiera

ć

 metaznaki (znaki uogólniaj

ą

ce/specjalne), takie  jak  u

Ŝ

ywane w powłoce: 

`*',

`?' i `[]'

.  Metaznaki nie traktuj

ą

 specjalnie 

`/' 

ani 

`.'

. Zatem, do wzorca

`foo*bar' 

mo

Ŝ

e by

ć

  dopasowana nazwa  pliku  zawieraj

ą

ca  

`foo3/bar'

, za

ś

 do

wzorca 

`*duck*'

 nazwa zawieraj

ą

ca  

`lake/.ducky'

.  Wzorce  posiadaj

ą

ce   znaki

uogólniaj

ą

ce powinny  by

ć

 cytowane, by uchroni

ć

 je przed rozwini

ę

ciem przez powłok

ę

.

Je

Ŝ

eli wzorzec jest zwykłym ła

ń

cuchem tekstowym -- nie  zawiera  metaznaków  -- to

locate

 wy

ś

wietla wszystkie nazwy plików z bazy zawieraj

ą

ce ten ła

ń

cuch w dowolnym

miejscu. Je

Ŝ

eli wzorzec  zawiera  metaznaki,  to 

locate

  wy

ś

wietla  tylko  te  nazwy

plików,  które dokładnie pasuj

ą

 do wzorca.  Na skutek tego, wzorce zawieraj

ą

ce

metaznaki  powinny  zwykle rozpoczyna

ć

  si

ę

 od 

`*'

, a najcz

ęś

ciej równie

Ŝ

 ko

ń

czy

ć

 si

ę

tym znakiem.
Wyj

ą

tkami s

ą

 wzorce celowo dosłownie dopasowuj

ą

ce pocz

ą

tek b

ą

d

ź

  koniec nazwy pliku.

Przykład:

login@nazwa:~$ locate [hH][oO][sS][tT][nN]*
/bin/hostname
/etc/hostname
...

which

poka

Ŝ

 pełn

ą

 

ś

cie

Ŝ

k

ę

 komendy

which

 pobiera  seri

ę

 nazw programów i drukuje pełne 

ś

cie

Ŝ

ki programów, które powłoka

by  wywołała,  aby  je  uruchomi

ć

.  Robi  to,  symuluj

ą

c przeszukiwanie przez powłok

ę

zmiennej 

ś

rodowiskowej 

$PATH

.

background image

Przykład:

login@nazwa:~$ which bash
/bin/bash

whereis

znajduje pliki  binarne,  

ź

ródłowe  i  strony 

man

 dla danego polecenia

Przykład:

login@nazwa:~$ whereis whereis
whereis: /usr/bin/whereis /usr/share/man/man1/whereis.1.gz

find

szuka pliki według zadanego kryterium w hierarchii katalogowej

Wybrane kryteria wyszukiwania:

-xdev

Przeszukiwanie okre

ś

lonego systemu plików

-name 'plik'

Uwzgl

ę

dnia pliki spełniaj

ą

ce zadany wzorzec. (*,?,[,])

-perm [-]000

Uwzgl

ę

dnia pliki według kryterium praw dost

ę

pu

-type
[fdcblosmnM]

Uwzgl

ę

dnia pliki typów: 

f

 – zwykły plik, 

d

 – katalog, 

c

 – specjalny

typu znakowego, 

b

 – specjalny typu znakowego, 

l

 – dowi

ą

zanei

symboliczne, 

p

 – nazwane ł

ą

cze kominikacyjne (FIFO), 

s

 – semafor,

m

 – pami

ęć

 dzielona, 

n

 – plik sieciowy, 

M

 – punkt podł

ą

czenia (ang

mount dir.), 

H

 – katalog ukryty

-atime ile_dni

Uwzgl

ę

dniane s

ą

 pliki do których był dost

ę

ile_dni

 wstecz.

Warto

ść

 parametry (

ile_dni

) mo

Ŝ

na poprzedza

ć

 znakiem 

+

=

,

zale

Ŝ

nie od okre

ś

lenia czy chodzi o czas dost

ę

pu wi

ę

kszy, mniejszy,

czy równy zadanej warto

ś

ci (+ wi

ę

cej ni

Ŝ

– 

mniej ni

Ŝ

,

 = 

dokładnie

tyle)

-mtime ile_dni

Uwzgl

ę

dnia modyfikacj

ę

 plików ile_dni temu. (

+

,

,

=

)

-user login

Uwzgl

ę

dnia pliki nale

Ŝą

ce do u

Ŝ

ytkownika 

login

-uid uid

jw. z tym 

Ŝ

e okre

ś

lana jest numeryczna warto

ść

-group nazwa_gr

Uwzgl

ę

dniane s

ą

 pliki nale

Ŝą

ce do okre

ś

lonej parametrem grupy

-gid gid

jw. z tym 

Ŝ

e okre

ś

lana jest numeryczna warto

ść

-nouser

Uwzgl

ę

dniane s

ą

 pliki nale

Ŝą

ce do nieznanego uzytkownika

(nieznanego systemowi, którego id nie wyst

ę

puje 

/etc/passwd

)

-nogroup

jw. 

-size rozmiar

Uwzgl

ę

dniane s

ą

 pliki o rozmiarze zadanym parametrem 

rozmiar

.

Po warto

ś

ci parametru okre

ś

la si

ę

 jednostk

ę

c

 (bajty), 

b

 (bloki

dysku), 

k

 (kilobajty). (

+

,

,

=

)

-links liczba

Uwzgl

ę

dniane s

ą

 pliki posiadaj

ą

ce 

liczba

 powi

ą

za

ń

. (

+

,

,

=

)

Wybrane akcje:

-print

Wyprowadzanie pełnych nazw znalezionych plików

-exec polecenie

Wykonanie polecenia shell'a dla ka

Ŝ

dego znalezionego pliku. Koniec

polecenia musi by

ć

 zaznaczony symbolem 

ś

rednika 

\;

Argument polecenia postaci 

{} 

jest zast

ę

powany bie

Ŝą

c

ą

 nazw

ą

background image

(wraz ze 

ś

cie

Ŝ

k

ą

) pliku. Nawiasy klamrowe musz

ą

 by

ć

 otoczone

spacjami.

-ok polecenie

Podobnie jak w przypadku 

-exec

 z tym, 

Ŝ

e pełna posta

ć

 polecenia

wyprowadzana jest na standardowe wyj

ś

cie i wykonywana jest  po

potwierdzeniu klawiszem 

y

.

Przykłady:

find . -print
find /usr/ -user frog -print
find / -type -f links +1 -print
find / -atime +100 -print
find /home -atime -6 -print
find . -name '*.c' -print
find . -atime +1 -type f -exec mv {} TMP \;
find / \( -name core -o -name "*.out"\) -atime +7 -exec rm -i {} \;
rm -i `find . Mtime +30 -print'
find . -print | cpio -ovB /dev/hdd3
find /export/home -xdev -user jasio -size +1024K -atime +30\

-printf '%s %p %a'

find / -nouser -exec rm -f \ {}\ \;
find / -nouser -print | cpio -oavH crc | gzip -9 > \
/mnt/dysk2/nouser.cpio.gz
find /raid -type d -name '*mp3*' \
   -exec cp -R {} \mnt\pendrive\ \;

wi

ę

cej informacji 

man find 

;-)

bc

j

ę

zyk kalkulatora dowolnej precyzji

Polecenie udost

ę

pnia posty interakcyjny j

ę

zyk o składni przypominaj

ą

cej j

ęŜ

yk C,

umo

Ŝ

liwiaj

ą

c obliczanie warto

ś

ci wyra

Ŝ

e

ń

, oraz realizacj

ę

 kilku własnych polece

ń

wewn

ę

trznych. Opis wyra

Ŝ

e

ń

 pobierany jest z pliku o zadanej nazwie, b

ą

d

ź

 bezpo

ś

rednio

z klawiatury. Wykonanie polecenie zatwierdzamy enterem. 

wi

ę

cej informacji 

man bc

cut

Usuwanie fragmentów z ka

Ŝ

dego wiersza pliku

Polecenie wycina wskazane kolumny lub fragmenty z wszystkich wierszy pliku, a wynik
operacji wyprowadzany jest na standardowe wyj

ś

cie. Wiersze nie mog

ą

 zawiera

ć

 wi

ę

cej

ni

Ŝ

 512 znaków.

U

Ŝ

ycie:

cut -c lista [ plik1 plik2 ...]
cut -f lista [-d znak] [-s] [ plik1 plik2 ...]

Opcje:

lista –

 lista oddzielonych przecinkami liczba całkowitych (w kolejno

ś

ci rosn

ą

cej), lub 

poł

ą

czonych znakiem –, np.: 1,2,3; 1-3; -5,10, 3- itp.

-b

 (ang. bytes) wypisuje tylko bajty okre

ś

lone na li

ś

cie

-c

 (ang. characters) wypisuje tylko znaki okre

ś

lone na li

ś

cie

-d

 (ang. delimiter) jako separatora pól u

Ŝ

ywa znaku ogranicznika

background image

-f

 (ang. field) wypisuje tylko podane pola oraz wszystkie linie nie zawieraj

ą

ce znaku 

separatora (chyba, 

Ŝ

e u

Ŝ

yto flagi -s)

-s

 pomija wszystkie wiersze nie zawieraj

ą

ce separatora

Przykłady:

w | cut -f1,6 -d" "
cut -f1 -d: /etc/passwd
cat /etc/passwd | cut -b -8
cat /etc/passwd | cut -c8-12

grep, egrep, fgrep

wypisz linie pasuj

ą

ce do wzorca

grep 

 (ang. global regular expression print) przeszukuje  wskazane  pliki  wej

ś

ciowe  (lub

standardowe wej

ś

cie) szukaj

ą

c  linii zawieraj

ą

cych  co

ś

 pasuj

ą

cego do podanego wzorca.

Domy

ś

lnie 

grep

 wypisuje pasuj

ą

ce linie.

Dodatkowo dost

ę

pne s

ą

 dwa programy wariantowe  

egrep

  i  

fgrep

Egrep

 jest tym

samym, co 

grep -E

.  

Fgrep

 jest tym samym, co 

grep -F

.

Wszystkie warianty obsługuj

ą

 wyra

Ŝ

enia regularne

U

Ŝ

ycie:

grep|egrep|fgrep [opcje] wzorzec plik1 plik2 ...

Opcje:

-c

- dla ka

Ŝ

dego pliku wyprowadza tylko liczb

ę

 wierszy zawieraj

ą

ce okre

ś

lony wzorzec

-e

- opcja poprzedza wzorzec, gdy ten zaczyna si

ę

 znakiem -. Wzorzec mo

Ŝ

e by

ć

 

zapisany bezpo

ś

rednio za opcj

ą

 -e, lub odseparowany spacj

ą

.

-h

- nie wyprowadza na pocz

ą

tku nazwy przeszukiwanego pliku

-i

- ignoruje małe i wielkie litery

-l

- wyprowadza tylko wiersze zawieraj

ą

ce wzorzec

-n

- poprzedza ka

Ŝ

dy wyprowadzony wiersze jego numerem w pliku

-s

- pomija komunikaty o bł

ę

dach w dost

ę

pie do pliku

-x

- wyprowadza tylko wiersze w cało

ś

ci pasuj

ą

ce do wzorca

-v

- wyprowadza wiersze nie zawieraj

ą

ce szukanego wzorca

-fplik

- plik zbieraj

ą

cy wzorzec (wzorce) do przeszukiwania

Wzorcem mo

Ŝ

e by

ć

 pojedyncze słowo, kilka słów uj

ę

tych w apostrofy lub cudzysłowy, oraz

wyra

Ŝ

enia regularne.

Mo

Ŝ

na te

Ŝ

 stosowa

ć

 znaki specjalne:

.

- dowolny znak

\

- cytuje wyst

ę

puj

ą

cy za nim znak;

[...]

- dowolny znak z wymienionych w nawiasach

*

- zero lub wi

ę

cej wyst

ą

pie

ń

 wyra

Ŝ

e

ń

;

^

- pocz

ą

tek wiersza

$

- koniec wiersza

Przykłady:

ls | grep param[1-3]*.c
ls /dev/* | grep sda
grep '[pP]aram=' plik
ls | grep ^t

wy

ś

wietla wszystkie pliki zaczynaj

ą

ce si

ę

 liter

ą

 

z listowanego, bie

Ŝą

cego katalogu

background image

grep 'do..lne' przyklad

wyprowadza wiersze z pasuj

ą

cym do wzorcem, czyli np.: dowolne z  pliku 

przykład

grep ",$" przyklad

wyprowadza wiersze pliku 

przykład

 ko

ń

cz

ą

ce si

ę

 przecinkiem

Specyfikacj

ę

 kilku wzorców dopuszczaj

ą

 polecenia 

egrep

 i f

grep

:

grep 'wzorzec1|wzorzec2' plik

W przypadku 

fgrep

 kolejne wzorce mog

ą

 by

ć

 okre

ś

lane w kolejnych wierszach.

sort

Sortowanie wierszy plików tekstowych

Polecenie 

sort

 sortuje wiersze kolejno z ka

Ŝ

dego podanego pliku. Je

ś

li podano wi

ę

cej ni

Ŝ

jeden plik to ich zawarto

ść

 jest ł

ą

czona podczas sortowania. Domy

ś

le sortowanie

przeprowadzane jest zgodnie z kolejno

ś

ci

ą

 kodów ASCII i zmiennej 

ś

rodowiskowej 

$LANG

.

Opcje:
zasadniczo dzieli si

ę

 na trzy grupy:

Zmiana działania:

-c

- sprawdzenie uporz

ą

dkowania i zako

ń

czenie pracy, bez wyprowadzania 

czegokolwiek je

Ŝ

eli plik był uporz

ą

dkowany

-m

- tylko poł

ą

czenie posortowanych plików

-u

- zast

ą

pienie powtarzanych wierszy tekstu ich pojedynczymi wyst

ą

pieniami

-op

- zapisanie wyniku sortowania w pliku okre

ś

lonym argumentem 

p

.

Okre

ś

lenie uporz

ą

dkowania:

-d

- sortowanie słownikowe (litery, cyfry, spacje)

-f

- sortowanie z uwzgl

ę

dnieniem 

Ŝ

e małe litery traktowane s

ą

 jak wielkie

-i

- sortowanie z ignorowanie niedrukowanych znaków (o kodach ósemkowych 

Ŝ

nych od 040 – 176)

-n

- sortowanie według warto

ś

ci numerycznych zapisanych liczb

-r

- sortowanie według odwrotnej kolejno

ś

ci alfabetycznej

Interpretacja pól:

-M

- traktowanie pola jako nazwy miesi

ą

ca

-b

- ignorowanie spacji i znaków tabulatur na pocz

ą

tku pól sortowania

-tx

- ustalenie znaku 

x

 jako znaku separuj

ą

cego pola sortowane (standardowo jest nim 

spacja lub tab)

Klucze sortowania:
Domy

ś

lnie sortowane s

ą

 całe wiersze, jednak wiod

ą

ce białe znaki tych wierszy równie

Ŝ

bior

ą

  udział   w   sortowaniu.   „Klucze   sortowania”   umo

Ŝ

liwiaj

ą

  okre

ś

lenie,   które   cz

ęś

ci

wierszy bior

ą

 udział w ich porównywaniu. Polecenie sort w wierszach wyró

Ŝ

nia pole, przy

czym   domy

ś

lnie   s

ą

  one   oddzielone   białymi   znakami   (spacja,   tab).   Białe   znaki

poprzedzaj

ą

ce pierwsze słowo wiersza nale

Ŝą

 do pierwszego pola, a gdy dwa lub wi

ę

cej

białych   znaków   oddziela   s

ą

siaduj

ą

ce   pola   to   pierwszy   z   nich   traktowanych   jest   jako

separator, pozostałe nale

Ŝą

 do drugiego z tych pól.

Opcje  

[]+pozycja1 [-pozycja2]]

  definiuj

ą

 w wierszu pocz

ą

tek i koniec pozycji klucza

sortowania. Je

ś

li pomini

ę

to 

pozycja2

 to klucz si

ę

ga do ko

ń

ca wiersza. Pozycje okre

ś

la si

ę

jako 

p

 (numer pola), lub 

p.z

 (

z

 pozycja znaku w polu). Pola i ich znaki numerowane s

ą

 od

0.   Je

ś

li   w   poleceniu   pomini

ę

te   zostały   klucze,   to   interpretowane   s

ą

  zawarto

ś

ci   całych

wierszy.

background image

Z   ka

Ŝ

dym   kluczem   mo

Ŝ

na   zwi

ą

za

ć

  odr

ę

bne   opcje   z   drugiej   grupy.   Mo

Ŝ

liwe   jest   wi

ę

c

sortowanie   wg   kilku   kluczy   (przy   czym   dla   ka

Ŝ

dego   klucza   sortowanie   przebiega   wg

innego kryterium).

Przykłady:

sort lista
sort -r liczby (seq początek krok koniec)
sort -n liczby
ls -l /etc/ | sort -b' ' +7

login@nazwa:~$ cat plik
4 2 7
2 3 4
3 1 5
login@nazwa:~$ sort 

+0

 plik

2

 3 4

3

 1 5

4

 2 7

login@nazwa:~$ sort 

+2

 plik

2 3 

4

3 1 

5

4 2 

7

sort +1 plik

omini

ę

cie jednego pola w ka

Ŝ

dym wierszu podczas sortowania (spacje maj

ą

 wpływ na

wynik działania polecenia)

sort +1 -2 plik

sortowane s

ą

 wszystkie znaki znajduj

ą

ce si

ę

 w kolumnie pierwszej (+1), lecz nie

znajduj

ą

ce si

ę

 kolumnie drugiej (-2). Klucz sortowania obejmuje tylko drug

ą

 kolumn

ę

sortowanie podanego pliku wg drugiego pole w jego wierszu

sort -r -o plik_w +1.0 -1.2 plik1 plik2

sortowanie w odwrotnej kolejno

ś

ci zawarto

ś

ci plików plik1 i plik2 i u mieszczenie wyników

w pliku 

plik_w

. Jako klucz sortowania u

Ŝ

ywane s

ą

 dwa pierwsze znaki w drugim polu

wierszy pliku (pola s

ą

 numerowane od 0).

cat /etc/passwd | sort -t: +3n -4 +2n -3

Separatorem pól jest dwukropek. Polecenie sortuje dane wej

ś

ciowe numerycznie (n)

najpierw wg numery grupy (gid), a nast

ę

pnie linie z jednakowym numerem grupy

sortowane s

ą

 wg numeru u

Ŝ

ytkownika (uid).

uniq

usuwa powtarzaj

ą

ce si

ę

 linie z posortowanego pliku

hd

Wy

ś

wietlanie pliku binarnego

Wy

ś

wietla zawarto

ść

 pliku binarnego w postaci szesnastkowej, ósemkowej, b

ą

d

ź

znakowej

background image

od [-bcdox] [plik] [[+]przesunięcie[.][b]]

(ang.   octal   dump)   wy

ś

wietla

zawarto

ść

 pliku

Polecenie od wyprowadza na standardowe wyj

ś

cie zawarto

ść

 pliku. Je

ś

li nie u

Ŝ

yto innych

opcji to domy

ś

lnie 16-bit słowa pliku wyprowadzane s

ą

 ósemkowo.

tee

Rozdzielenie standardowego wyj

ś

cia

Składnia

tee [-i][-a][-u] plik ...

polecenie | tee plik

Powy

Ŝ

sza konstrukcja przesyła zawarto

ść

 swojego strumienia wej

ś

ciowego do strumienia

wyj

ś

ciowego, tworz

ą

c jednocze

ś

nie dodatkow

ą

 kopie swojego strumienia wyj

ś

ciowego w

pliku o podanej nazwie.

Polecenie przydatne w przypadku [potrzeby jednoczesnego ogl

ą

dania wyników na ekranie

i jednoczesnego zachowania ich w pliku.

wi

ę

cej informacji 

man tee

tr

translacja znaków

Składnia

tr [opcje] [napis1 [napis2]]

Polecenie przepisuje zawarto

ść

 standardowego wej

ś

cia do  wyj

ś

cia i wykonuje zamian

ę

(lub kasowanie) znaków. Znaki ze strumienia wej

ś

ciowego wymienione w argumencie

napis1

 s

ą

 zamieniane na odpowiednie znaki z tych samych pozycji argumentu 

napis2

.

Za moc

ą

 tego polecenia mo

Ŝ

liwa jest zmiana liter małych na wielkie, konwersja polskich z

jednego standardu na inny

Opcje:

-c

- zast

ą

pienie znaków nie wymienionych w pieszym napisie, znakami z napisu 

drugiego

-d

- usuni

ę

cie ze strumienia wej

ś

ciowego wszystkich znaków podanych w pierwszym 

argumencie

-s

- zast

ą

pienie wszystkich powtarzaj

ą

cych si

ę

 znaków ze strumienia wej

ś

ciowego 

wymienionych w drugim napisie znakami pojedynczymi

Przykłady:
zmiana liter malych na wielkie

tr [a-z] [A-Z] < plik_in > plik_out

tworzy posortowan

ą

 list

ę

 słów pliku plik1 i umieszcza po jednym w linii pliku plik2. 

Argumenty s

ą

 cytowane ze wzgl

ę

du na ochron

ę

 znaków specialnych przed interpretacj

ą

shell'a (012 – kod ASCII znaku nowej linii)

tr -cs ''[A-Z][a-z]'' ''[\012*]'' <plik1 | sort >plik2

konwersja pomi

ę

dzy standardami MAZOVIA i IBM Latin 2 (Code Page 852)

tr $MAZOVIA $IBMLAT2 < plik_in > plik_out

background image

Zadanie.1 Stwórz plik 

test.txt

 z zawarto

ś

ci

ą

:

jeden,dwa:trzy 3;
cztery. Piec: 0 sześc;
dwa :dziewięć 9;
tekst:teskt2;

Zadanie.2
Korzystaj

ą

c z cut

(a) wy

ś

wietl list

ę

 praw dost

ę

pu do plików w aktualnym katalogu

(b) wy

ś

wietl rozmiary plików z bie

Ŝą

cego katalogu

(c) wy

ś

wietl rozmiary plików z bie

Ŝą

cego katalogu zachowuj

ą

c wyrównanie liczb do

prawej (spacje po lewej)

(d) wy

ś

wietl opisy u

Ŝ

ytkowników z pliku /etc/passwd

Zadanie. 3
Korzystaj

ą

c z grep

(a) Wy

ś

wietl list

ę

 podkatalogów katalogu bie

Ŝą

cego. Wy

ś

wietl informacje o

dowi

ą

zaniach symbolicznych z katalogu /usr/bin

(b) Wy

ś

wietl informacje o takich plikach zwykłych z katalogu bie

Ŝą

cego, które maj

ą

ustawione prawo zapisu dla grupy.

(c) Wy

ś

wietl z pliku test.txt linie nie zawieraj

ą

ce 

Ŝ

adnych liczb

(d) Wy

ś

wietl z pliku test.txt linie nie b

ę

d

ą

ce komentarzem, a wiec linie nie zaczynaj

ą

ce

si

ę

 od znaku „#”.

(e) Wy

ś

wietl nazwy plików txt, w których (nie) sa zawarte dowolne polskie litery „a”, „c”

lub „e”.

(f) Pokaz 3-liniowy kontekst wyst

ą

pienia słowa „abc” w pliku  test.txt.

Zadanie. 3
Korzystaj

ą

c z polecenia wc

Policz dowiązania symboliczne w katalogu 

/usr/bin

Zlicz wszystkie pliki zwykłe znajdujące się w katalogu 

/etc 

i jego podkatalogach

Oblicz długość trzeciej linii pliku 

/etc/passwd

.

Zadanie. 4
Korzystaj

ą

c z polecenia sort

Posortuj trwale zawartość pliku test.txt
Wyświetl listę nazw użytkowników z pliku 

/etc/passwd  

posortowana wg numerów

UID w kolejności od największego do najmniejszego

 i odwrotnie

Zadanie. 5
Korzystaj

ą

c z polecenia tr

Zamień

 wszystkie małe litery na wielkie w wynikach komendy 

ls

Rozbij tekst z pliku test.txt tak, aby każde słowo było w oddzielnej linii. Dodatkowo usuń wszelkie
znaki interpunkcyjne.