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.