Polecenia

grep — wybiera te linie z wejścia, które zawierają podany wzorzec. Przydatne flagi: -v wyświetla linie nie zawierające podanego wzorca; -c wyświetla liczbę znalezionych linii; -n podaje numer znalezionej linii, w której jest wzorzec; -s komunikatów o błędach dostępu do plików nie są wyświetlane na ekranie;  -l wyśiwetla tylko nazwy plików, w których znaleziono wzorzec. Niżej zamieszczono przykłady: w lewej kolumnie wykorzystanie komendy grep w operacjach na plikach, a w prawej w potokach.

> cat a

pisanie tekstu

> cat a1

pisanie dłuższego tekstu

> cat a2

pisanie

> cat a3

pisanie bardzo

dlugiego i trudnego

tekstu

> grep tekst a a1 a2 a3

a:pisanie tekstu

a1:pisanie dłuższego tekstu

a3:tekstu

>

> ls -goR

total 48

-rw-r--r--   1      15 Oct 27 10:31 a

-rw-r--r--   1      25 Oct 27 10:31 a1

-rw-r--r--   1       8 Oct 27 10:32 a2

-rw-r--r--   1      44 Oct 27 10:46 a3

drwxr-sr-x   2     512 Oct 27 10:48 ax1

drwxr-sr-x   2     512 Oct 27 10:49 ax2

 

./ax1:

total 0

-rw-r--r--   1       0 Oct 27 10:48 a1

-rw-r--r--   1       0 Oct 27 10:48 a2

 

./ax2:

total 0

-rwxr--r--   1       0 Oct 27 10:49 a

> ls -goR | grep x > a

> cat a

drwxr-sr-x   2     512 Oct 27 10:48 ax1

drwxr-sr-x   2     512 Oct 27 10:49 ax2

./ax1:

./ax2:

-rwxr--r--   1       0 Oct 27 10:49 a

cal — wyświetla kalendarz dla podanego miesiąca lub roku. Przykłady:

> cal

       October 1998

Sun Mon Tue Wed Thu Fri Sat

                 1   2   3

 4   5   6   7   8   9  10

11  12  13  14  15  16  17

18  19  20  21  22  23  24

25  26  27  28  29  30  31

> cal 12 1989

       December 1989

Sun Mon Tue Wed Thu Fri Sat

                     1   2

 3   4   5   6   7   8   9

10  11  12  13  14  15  16

17  18  19  20  21  22  23

24  25  26  27  28  29  30

31

uptime — podaje czas, który upłynął od włączenia systemu.

> uptime

  11:09AM  up 31 days,  22:37,  6 users,  load average: 0.21, 0.28, 0.25

 

Potoki

Przykład potoku jest podany wcześniej, przy omówieniu komendy grep. Potok to ciąg komend, które przekazują sobie rezultaty działania za pośrednictwem mechanizmu komunikacji międzyprocesowej. W przykładzie poniżej w lewej kolumnie pokazano przykład katalogu, zaś w prawej przykłady potoków, operujących na plikach znajdujących się w tym katalogu.

> ls -goR

total 80

-rw-r--r--   1       0 Oct 19 10:53 aa

-rw-r--r--   1      32 Oct 26 13:53 cmd

drwxr-sr-x   3     512 Oct 27 09:58 kat2

-rw-r--r--   1      14 Oct 26 13:33 nowyPlik

-rw-r--r--   1       0 Oct 21 13:10 plik

-rw-r--r--   1       7 Oct 21 10:40 plik1

-rw-r--r--   1      42 Oct 21 10:48 plik2

-rwxr-xr-x   1    3215 Oct 26 15:28 pro

-rw-r--r--   1     106 Oct 21 10:39 pro.c

-rw-r--r--   1     528 Oct 21 10:36 prog.c

-rwxr-xr-x   1      29 Oct 20 16:01 term

-rw-r--r--   1      36 Oct 26 13:35 val

 

./kat2:

total 16

drwxr-sr-x   2     512 Oct 19 11:11 kat3

-rw-r--r--   1    1023 Oct 19 11:16 s

 

./kat2/kat3:

total 0

> ls -goR | grep ik

-rw-r--r--   1      14 Oct 26 13:33 nowyPlik

-rw-r--r--   1       0 Oct 21 13:10 plik

-rw-r--r--   1       7 Oct 21 10:40 plik1

-rw-r--r--   1      42 Oct 21 10:48 plik2

> ls -goR | grep ik | wc -l

      4

> cat /etc/passwd | wc -l

    691

> cat /etc/passwd | grep Agnieszka | wc -l

      3

 


Kierowanie strumieni

Poniższy przykład przedstawia program napisany w C (lewa kolumna), operujący na standardowym strumieniu błędów i standardowym strumieniu wyjściowym (przykłady w prawej kolumnie).

> cat prog.c

#include <stdio.h>

 

main()

{

 

 fprintf(stdout, "STDOUT\n");

 fprintf(stderr, "STDERR\n");

 exit(0);

 

}

> cc -o pro pro.c

> ls -go pro

-rwxr-xr-x   1    3215 Oct 26 15:28 pro

>

> ./pro

STDOUT

STDERR

> ./pro > a

STDERR

> cat a

STDOUT

> ./pro 2>& a

> cat a

STDERR

STDOUT

> sh

$ ./pro 2> a

STDOUT

$ cat a

STDERR

$ exit

>

Polecenia:

> komenda plik

oraz

> komenda < plik

 nie są równoważne, pomimo że rezultaty obu powyższych poleceń są na ogół takie same (np. polecenie cat z laboratorium 1). Różnicę widać poniżej:

> setenv TERM vt100

> echo tekst > a

> cat a

tekst

> vi a

"a" 1 line, 6 characters

tekst

:q!

>vi < a

ex: 0602-134 An error occurred while reading input.

>

> vi a

iwpisywanie^[

:w zapisdopliku

:q!

> vi < a

...

> ls -go zapisdopliku

-rw-r--r--   1      11 Oct 27 12:22 zapisdopliku

> cat zapisdopliku

wpisywanie

>

Znak „^[” oznacza esc. Najprostszy sposób umieszczenia tego znaku w pliku to:

> cat >> b <ENTER>

^[ <ENTER>

<CTRL+D>

 

Wykonywanie procesów w tle — zastosowanie

Jednym z podstawowych zastosowań jest wykonywanie skomplikowanych obliczeń, które mogą zablokować użytkownikowi dostęp do konsoli na dłuższy czas. Poniżej zaprezentowano przykład, w którym użytkownik próbuje obliczyć setną potęgę liczby 2364562346512675461245123451345.

> cat val

2364562346512675461245123451345^100

> bc val

...

quit

> bc val &

[1] 29640

> <ENTER>

[1]  + Suspended (tty input)  bc val

> bc < val &

[2] 10792

... <ENTER>

[2]    Done                   bc < val

Wywołanie komendy: „> bc val &” jest błędne. Standardowe wejście (tj. klawiatura) jest udostępnione użytkownikowi (dzięki znakowi &), zaś dla kalkulatora (bc) nie przypisano nowego wejścia, więc nadal próbuje czytać znaki z klawiatury. Po naciśnięciu dowolnego przycisku bc jest zawieszany. Uwaga: zostaje po tym proces, który można usunąć komendą „kill -9 nr_procesu”. Numer procesu można uzyskać za pomocą komendy „ps”.

 


Prawa dostępu

chmod — służy do zmiany praw dostępu do plików albo katalogów. Polecenie to może być używane w dwóch trybach: symbolicznym i numerycznym. W trybie numerycznym zmieniane są wszystkie prawa wszystkich użytkowników naraz. W trybie symbolicznym można wybrać, które prawa będą zmienione.

d r w x r - s r - x   2     512 Oct 19 11:11 kat3

1

2

3

4

5

6

7

8

9

0

 

       prawa dostępu

 

1 — określa, czy dany obiekt jest katalogiem, czy plikiem (d – katalog),

2 — prawo czytania (r) dla właściciela (user)

3 — prawo zapisu (w, zmiany) dla właściciela (u)

4 — prawo wykonywania (x) dla właściciela (u)

5,6,7 — prawa czytania, zapisu i wykonywania dla grupy (group, g)

8,9,0 — prawa czytania, zapisu i wykonywania dla pozostałych (other, o)

Bit s oznacza, że właścicielem procesu, który powstanie po uruchomieniu programu staje się osoba, która wywołuje proces. Bit S oznacza, że ustawiony jest bit s, ale nie jest ustawiony bit x.

W trybie numerycznym prawa dostępu są przedstawione jako liczby w zapisie ósemkowym. Na przykład liczba 400 (czyli bitowo 100 000 000) oznacza tylko prawo czytania dla właściciela, liczba 720 (czyli bitowo 111 010 000) oznacza wszystkie prawa dla właściciela i prawo zapisu dla grupy oraz usunięcie wszystkich praw dla pozostałych użytkowników.

Przykłady:

Ustawienie praw czytania dla użytkownika:

> ls -go s

----------   1       0 Oct 27 13:44 s

> chmod u+r s

> ls -go s

-r--------   1       0 Oct 27 13:44 s

> ls -go s

----------   1       0 Oct 27 13:44 s

> chmod +w s

> ls -go s

--w-------   1       0 Oct 27 13:44 s

> ls -go s

----------   1       0 Oct 27 13:44 s

> > chmod 400 s

> ls -go s

-r--------   1       0 Oct 27 13:44 s

Ustawienie praw zapisu dla wszystkich (właściciela, grupy, pozostałych)

> ls -go s

----------   1       0 Oct 27 13:44 s

> chmod ugo+w s

> ls -go s

--w--w--w-   1       0 Oct 27 13:44 s

> chmod a+w s

> ls -go s

--w--w--w-   1       0 Oct 27 13:44 s

> chmod 222 s

> ls -go s

--w--w--w-   1       0 Oct 27 13:44 s

W języku C do operacji na prawach dostępu do plików służy komenda umask.