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
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
./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
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
ró
ż
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
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
.
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
ę
p
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:
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
ą
(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
-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
ą
t
z listowanego, bie
żą
cego katalogu
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
ró
ż
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.
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
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
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.