Systemy Operacyjne laboratorium 5 teoria


Systemy Operacyjne - laboratorium 5 - teoria

Standardowe wejście i wyjście, przekierowania, potoki, filtry, wyszukiwanie

informacji

Celem laboratorium jest zapoznanie studentów z jednymi z fundamentalnych pojęć w systemie

UNIX, tj. z pojęciami: standardowego wejścia i standardowego wyjścia oraz z mechanizmami i

pojęciami z nimi związanymi: przekierowaniami, potokami, filtrowaniem informacji,

wyszukiwaniem informacji. Kończąc zajęcia, studenci powinni opanować praktycznie możliwości

jakie dają mechanizmy przekierowania i potoków oraz być w stanie wykorzystać odpowiednie

polecenia UNIX-a, do odfiltrowania określonych informacji, czy też wyszukania informacji

zadanych pewnym wzorcem.

Laboratorium obejmuje następujące tematy:

pojęcie standardowego wejścia i wyjścia,

mechanizm przekierowania,

pojęcie potoku,

deskryptory plików,

filtrowanie informacji,

wyszukiwanie informacji,

dodatkowe polecenia informacyjne.

Standardowe wejście i standardowe wyjście

Dotychczas korzystaliście Państwo z różnych poleceń, które wyświetlały wynik swojego działania

(wyjście polecenia) na ekranie terminala. Wyjście polecenia może mieć bardzo różną formę i nie

chodzi tylko o to, że różne polecenia drukują żne wyniki, ale przede wszystkim o to, gdzie ten

wynik jest drukowany (wyświetlany).

Kiedy polecenie dostarcza wynik, który jest następnie drukowany (wyświetlany) w oknie terminala,

to takie działanie programu nazywamy drukowaniem wyniku na standardowym wyjściu (STDOUT

- ang. Standard Output). Z pojęciem standardowego wyjścia mogliście się już Państwo spotkać na

zajęciach z programowania w językach C i C++, tu jego znaczenie jest identyczne. Przy czym

większość poleceń drukujących jakiś wynik, drukuje go właśnie na standardowym wyjściu.

Niech za przykład posłuży znane już Państwu polecenie ls, które dostarcza wynik właśnie na

standardowe wyjście:

$ ls -l /bin/p*

-rwsr-xr-x 1 root root 32140 sty 2 2003 /bin/ping*

-r-xr-xr-x 1 root root 11724 mar 4 2003 /bin/procps3-kill*

1

-rwxr-xr-x 1 root root 9880 lut 17 2003 /bin/progress*

-r-xr-xr-x 1 root root 61708 mar 4 2003 /bin/ps*

-rwxr-xr-x 1 root root 10872 lut 13 2003 /bin/pwd*

Czasami podczas wywo ywania polece mo ecie si Pa stwo spotka z komunikatami ł ń ż ę ń ć o błędach:

$ cat /etc/shadow

cat: /etc/shadow: Permission denied

Na pierwszy rzut oka, taki wynik nie różni się niczym od wyniku wypisywanego normalnie na

standardowym wyjściu, podobnie jak on zostaje wyświetlony w oknie terminala. Trzeba jednak

wiedzieć, że nie jest on drukowany do STDOUT, tylko do specjalnego rodzaju wyjścia -

nazywanego standardowym wyjściem błędów (STDERR - ang. Standard Error),

zarezerwowanego dla komunikatów o błędach.

W dalszej części zobaczycie Państwo, że łatwo można oddzielić to co zostało zapisane na

STDOUT, od tego co wydrukowano na STDERR, mimo tego, że na ekranie terminala oba wyniki

mogą być ze sobą przemieszane.

Zilustrowano to poniżej (na jednym terminalu komunikaty o błędach i normalny wynik działania

polecenia):

$ cat /etc/issue /etc/shadow

Mandrake Linux release 9.1 (Bamboo) for i586

Kernel 2.4.21-0.13mdk on an i686 / \l

cat: /etc/shadow: Permission denied

Skoro istnieje standardowe wyjście, to możemy również mówić o standardowym wejściu (STDIN -

ang. Standard Input), tj. miejscu skąd polecenia odczytują dane potrzebne im do działania.

Tradycyjnie rolę standardowe wejścia pełni klawiatura, stąd wpisując dowolny tekst, czy też

wywołując określone polecenie, korzystacie Państwo właśnie ze standardowego wejścia.

Wiele poleceń w systemie UNIX posiada tę ciekawą własność, że jeżeli nie wyszczególnimy (w

postaci nazwy odpowiedniego pliku) źródła danych dla polecenia, przyjmowane jest, że dane te

mają być odczytywane ze standardowego wejścia (czyli zazwyczaj z klawiatury - odczytywanie

trwa do momentu osiągnięcia końca pliku, co w przypadku klawiatury następuje po wciśnięciu

kombinacji klawiszy Ctrl+D).

Jako przykład takiego działania może posłużyć polecenie cat:

$ cat

To tylko przyklad tego,

jak mozna wykorzystac polecenie cat

do odczytywania danych ze standardowego wejscia

poprzez pominiecie nazwy pliku,

ktory ma byc wyswietlony.

Przekierowania standardowego wejścia i standardowego wyjścia

Czasami chcielibyście Państwo zachować wynik działania jakiegoś polecenia w pliku, po to by móc

go w jakiś sposób później analizować. Zadanie to można bardzo łatwo zrealizować wykorzystując

jedną z fundamentalnych właściwości systemu UNIX, tj. operacje przekierowania wyjścia.

W systemie UNIX, proces przechwytywania wyniku działania polecenia, w celu zapisania go w

2

jakim pliku nosi, jak ju ś ż powiedziano, nazwę przekierowania wyjścia. Polega on na zamianie

miejsca do którego komenda drukuje wynik swojego działania, zamiast standardowo na ekran, do

wskazanego pliku.

Do realizacji tego zadania wykorzystujemy dwa operatory “>” i “>>”. Pierwszy z nich pozwala

zapisać wynik działania we wskazanym pliku. Jeżeli plik o podanej nazwie nie istniał wcześniej

zostanie on utworzony (oczywiście pod warunkiem posiadania odpowiednich praw do tworzenia

nowych plików we wskazanym katalogu), jeżeli plik już istniał, jego zawartość zostanie usunięta i

zastąpiona nową (należy uważać, by nie doprowadzać do takich sytuacji!).

Składnię takiego przekierowania przedstawiono poniżej:

polecenie > plik

gdzie:

polecenie - polecenie, jakie chcemy wywołać, wraz z odpowiednimi parametrami,

plik - nazwa pliku do którego ma zostać zapisany wynik działania polecenia.

Ilustruje to przykład:

$ cd

$ ls /bin/p* > wynik_ls.txt

$ cat wynik_ls.txt

/bin/ping*

/bin/procps3-kill*

/bin/progress*

/bin/ps*

/bin/pwd*

Drugi z operatorów (“>>”), pozwala dopisywać wynik działania polecenia do wcześniej

otrzymanych wyników. W jego przypadku wynik jest dopisywany na końcu wskazanego pliku

(jeżeli plik nie istniał wcześniej zostanie utworzony - tak jak przy “>”).

Składnia przekierowania ma w tym wypadku postać:

polecenie >> plik

Poniżej przykład:

$ cat > plik1.txt

Pierwszy

$ cat > plik2.txt

Drugi

$ cat > plik3.txt

Trzeci

$ cat plik1.txt > plik4.txt

$ cat plik4.txt

Pierwszy

$ cat plik2.txt >> plik4.txt

$ cat plik4.txt

Pierwszy

Drugi

$ cat plik3.txt >> plik4.txt

$ cat plik4.txt

Pierwszy

Drugi

3

Trzeci

Czasami mo emy chcie zapisa wynik dzia ania kilku polece w jednym pliku. ż ć ć ł ń Możemy to zrobić

wykorzystując operator “>>”, możemy również posłużyć się inną postacią przekierowania, której

składnię przedstawiono poniżej:

lista_polecen operator_przekierowania plik

gdzie:

lista_polecen - jest to lista poleceń, które chcemy wykonać, zapisana w postaci “{ polecenie1;

polecenie2; ...; polecenieN; }”,

operator_przekierowania - jeden z wymienionych operatorów przekierowania (np. “>” i “>>”),

plik - nazwa pliku do którego ma zostać zapisany wynik.

Najlepiej zilustrować to na przykładzie:

$ w

13:01:39 up 1:51, 3 users, load average: 0,01, 0,04, 0,00

USER TTY LOGIN@ IDLE JCPU PCPU WHAT

student vc/1 11:13 1:48m 0.18s 0.01s /bin/sh /usr/X11R6/bin/startx

student pts/0 11:13 1:47m 0.00s 0.23s kdeinit: kwrited

student pts/1 11:13 0.00s 0.18s 0.02s w

$ who

student vc/1 Oct 21 11:13

student pts/0 Oct 21 11:13

student pts/1 Oct 21 11:13

$ whoami

student

$ who am i

student pts/1 Oct 21 11:13

$ { w; who; whoami; who am i; } > wynik.txt

$ cat wynik.txt

13:02:19 up 1:52, 3 users, load average: 0,00, 0,03, 0,00

USER TTY LOGIN@ IDLE JCPU PCPU WHAT

student vc/1 11:13 1:48m 0.18s 0.01s /bin/sh /usr/X11R6/bin/startx

student pts/0 11:13 1:48m 0.00s 0.23s kdeinit: kwrited

student pts/1 11:13 0.00s 0.17s 0.01s w

student vc/1 Oct 21 11:13

student pts/0 Oct 21 11:13

student pts/1 Oct 21 11:13

student

student pts/1 Oct 21 11:13

Jak widać wyniki wywołania poszczególnych poleceń zostały połączone w jedną całość i zapisane

do wskazanego do pliku.

Skoro można dokonywać przekierowania wyjścia, to jest jak sądzę oczywiste, że można również

przekierować standardowe wejście.

Składnia takiej operacji jest podobna jak w przypadku przekierowania wyjścia:

polecenie < plik

gdzie:

polecenie - nazwa polecenia, dla którego chcemy dokonać przekierowania standardowego wejścia,

4

plik - nazwa pliku, który ma pe ni rol standardowego ł ć ę wejścia.

Za przykład niech posłuży, przedstawione już wielokrotnie, polecenie cat. Domyślnie, jeżeli nie

określimy nazwy pliku do wyświetlenia, polecenie to stara się wyświetlić zawartość standardowego

wejścia (jak widać możemy to zmienić):

$ cat > plik1.txt

Pierwszy

$ cat plik1.txt

Pierwszy

$ cat < plik1.txt

Pierwszy

Istnieje jeszcze jedna, ciekawa możliwość przekierowywania standardowego wejścia, stosowana

głównie podczas pisania skryptów. Nosi ona angielską nazwę “here document”, z braku dobrego

polskiego odpowiednika możemy mówić o “zagnieżdżonym dokumencie”. Składnia dla takiej

operacji jest następująca:

polecenie << ogranicznik

dokument

ogranicznik

gdzie:

polecenie - polecenie, które chcemy wywołać,

ogranicznik - łańcuch tekstowy pełniący rolę ogranicznika dla tworzonego dokumentu, musi on być

pojedynczym słowem nie zawierającym spacji ani tabulacji,

dokument - treść dokumentu.

W tym wypadku przykład będzie mało praktyczny, jego celem jest jedynie pokazanie

wykorzystywanej składni i uzyskiwanych efektów:

$ cat << KONIEC_PLIKU

> To co teraz wpisuje stanie sie

> dokumentem, bedacym standardowym

> wejsciem dla polecenia cat. Jak

> widac w zwiazku z wpisywaniem tego

> dokumentu zmienil sie znak zachety.

> Koniec wpisywania nastapi po wpisaniu tekstu

> KONIEC_PLIKU

To co teraz wpisuje stanie sie

dokumentem, bedacym standardowym

wejsciem dla polecenia cat. Jak

widac w zwiazku z wpisywaniem tego

dokumentu zmienil sie znak zachety.

Koniec wpisywania nastapi po wpisaniu tekstu

Operator “<<” jest instrukcją, by odczytywać kolejne linie, dopóki nie pojawi się linia zawierająca

łańcuch tekstowy wskazany jako ogranicznik tekstu. W powyższym przykładzie widać wyraźnie, że

sam łańcuch ogranicznika nie staje się częścią tak utworzonego dokumentu. Pokazuje to wynik

wyświetlony przez cat (ta część tekstu w przykładzie, która nie została zapisana czcionką

wytłuszczoną).

Możemy łączyć w jednym poleceniu przekierowania wejścia i przekierowania wyjścia.

$ cat plik1.txt

5

Pierwszy

$ cat < plik1.txt > plik2.txt

$ cat plik2.txt

Pierwszy

Potoki

Jak ju wspomniano wiele (by nie powiedzie wi kszo ) polece w systemie ż ć ę ść ń UNIX, pozwala na

pracę ze standardowym wejściem (STDIN) i standardowym wyjściem (STDOUT). Dzięki temu

możemy łączyć ze sobą polecenia w taki sposób, że standardowe wyjście z jednego polecenia staje

się standardowym wejściem dla polecenia kolejnego. Taki mechanizm łączenia ze sobą poleceń nosi

nazwę potoku. Do jego realizacji jest wykorzystywany operator “|”.

Składnia dla tej operacji jest następująca:

polecenie1 | polecenie2 | ... | polecenieN

gdzie:

polecenie1, polecenie2, ..., polecenieN - są to polecenia, które pragniemy wykonać. Operator “|”

sprawia, że standardowe wyjście polecenia “polecenie1” staje się standardowym wejściem dla

polecenia “polecenie2” (itd. dla pozostałych poleceń). Każde z poleceń może być tak proste, czy tak

skomplikowane, jak to tylko potrzebne.

Mechanizm potoków, w połączeniu z operacją przekierowania, otwiera przed poleceniami UNIX-a

możliwości niedostępne dla poleceń w innych systemach operacyjnych. Dzięki niemu możemy ze

sobą łączyć żnorakie polecenia, w celu uzyskania określonego wyniku.

Poniższe przykłady pokazują jak można wykorzystywać choć część możliwości oferowanych przez

mechanizm potoków.

Przykład pierwszy pokazuje wykorzystanie poleceń: ls, head i tail. W taki sposób, że pierwsze z

nich wyświetla zawartość określonego katalogu (ls), kolejne (head) pozostawia z wyniku działania

ls tylko 4 pierwsze linie, występujące dalej (tail) wybiera z wyniku otrzymanego z head tylko 2

ostatnie linie. Uff... strasznie to długie:

$ ls -al /bin | head -n 4 | tail -n 2

drwxr-xr-x 19 root root 4096 paź 21 14:15 ../

-rwxr-xr-x 1 root root 2868 sty 28 2003 arch*

Przykład kolejny działa tak jak pierwszy, z tym, że dokładamy jeszcze do potoku polecenie wc, do

zliczenia liczby linii, słów i znaków na jego samym końcu:

$ ls -al /bin | head -n 4 | tail -n 2 | wc

2 18 122

Deskryptory plików

Kiedy w okienku terminala wywołujecie Państwo dowolne polecenie, powłoka UNIX-a otwiera i

powiązuje z tym poleceniem trzy pliki, z których każdy jest reprezentowany przez niewielką liczbę

całkowitą, nazywaną deskryptorem pliku. Deskryptor pliku (ang. file descriptor), jest to mechanizm

za pomocą którego możecie Państwo powiązać liczbę z nazwą pliku, by następnie móc

wykorzystywać tę liczbę do czytania lub pisania do pliku. Czasami deskryptor pliku bywa również

6

nazywany uchwytem pliku (ang. file handle).

Trzy pliki, standardowo powi zane z ka dym poleceniem (wraz z odpowiadaj ą ż ącymi im numerami),

wyszczególniono poniżej:

Standard Input (STDIN), 0,

Standard Output (STDOUT), 1,

Standard Error (STDERR), 2.

Występująca na końcu linii liczba całkowita jest deskryptorem każdego z plików. Domyślnie każdy

z tych plików jest powiązany z terminalem, ale jak już Państwo wiecie, nie ma przeszkód jeżeli

chodzi o jego przekierowanie.

Oprócz powyższych, trzech standardowych plików, istnieje każdorazowo możliwość powiązania z

danym poleceniem dodatkowych plików. Wykorzystujemy do tego celu polecenie exec.

Wykorzystanie deskryptorów plików jest wygodne, jeżeli wielokrotnie planujemy wykonywać

przekierowania do określonego pliku i nie mamy ochoty każdorazowo wpisywać jego pełnej nazwy.

By oszczędzić czas (i klawiaturę) możemy zamiast nazwy pliku wykorzystać jego deskryptor

(liczbę) - zysk z takiego działania jest ewidentny. Ma to zastosowanie szczególnie podczas

tworzenia skryptów powłoki, dlatego też do polecenia exec powrócimy podczas omawiania tego

zagadnienia.

Składnia wywołania polecenia exec jest następująca:

exec n> nazwa_pliku

exec n>> nazwa_pliku

exec n< nazwa_pliku

gdzie:

exec - nazwa polecenie,

n - liczba całkowita (deskryptor pliku),

nazwa_pliku - nazwa pliku, który pragniecie Państwo otworzyć i powiązać z danym deskryptorem.

W zależności od użytego operatora, otwieracie Państwo plik w trybie: “>” - do zapisu, “>>” - do

dopisywania, “<” - do odczyty.

Możecie Państwo również wykonywać ogólne przekierowanie wyjścia i wejścia, stosując

deskryptor pliku i operator przekierowania (i przynajmniej na razie będzie to najczęstsze z

podejmowanych przez Państwa działań).

Składnia dla tej operacji jest następująca:

polecenie n> nazwa_pliku

polecenie n>> nazwa_pliku

polecenie n< nazwa_pliku

gdzie:

polecenie - nazwa polecenia, które pragniecie Państwo wywołać (np. ls),

n - deskryptor pliku (liczba),

nazwa_pliku - nazwa pliku, który pragniecie Państwo otworzyć.

7

Pierwsze dwie pozycje z powy szej listy dokonuj przekierowania wyj cia z ż ą ś danego polecenia do

wskazanego pliku (odpowiednio w trybie do zapisu i do dopisywania). Forma trzecia służy do

przekierowania wejścia polecenia (wskazany plik zostanie otwarty w trybie do odczytu).

Dla przykładu możecie Państwo dokonywać przekierowania standardowego wyjścia, używając

poniższej składni:

polecenie 1> nazwa_pliku

polecenie 1>> nazwa_pliku

W tym przypadku 1, to po prostu deskryptor pliku powiązanego ze standardowym wyjściem.

Dla standardowego wyjścia błędów, inny jest tylko deskryptor pliku:

polecenie 2> nazwa_pliku

polecenie 2>> nazwa_pliku

W przypadku przekierowania standardowego wejścia, mamy:

polecenie 0< nazwa_pliku

Bardzo często zdarza się, że w ramach jednego polecenia pragniemy dokonać przekierowania

zarówno STDOUT, jak i STDERR.

W takim wypadku możemy wykorzystać poniższą składnię:

polecenie 1> nazwa_pliku_dla_STDOUT 2> nazwa_pliku_dla_STDERR

Zamiast operatora “>” można również stosować operator “>>”.

Korzystając z tej wiedzy możemy wreszcie udowodnić, że to co widzicie Państwo na ekranie jako

jeden wynik, jest w istocie połączeniem wyniku otrzymanego z STDOUT i STDERR.

Pokazywałem Państwu wcześniej, że polecenie, jak poniżej, dostarcza obu rodzajów wyników:

$ cat /etc/issue /etc/shadow

Mandrake Linux release 9.1 (Bamboo) for i586

Kernel 2.4.21-0.13mdk on an i686 / \l

cat: /etc/shadow: Permission denied

Kolejny przykład pokazuje jak można rozdzielić wyniki z STDOUT i STDERR:

$ cat /etc/issue /etc/shadow 1> STDOUT.txt 2> STDERR.txt

$ cat STDOUT.txt

Mandrake Linux release 9.1 (Bamboo) for i586

Kernel 2.4.21-0.13mdk on an i686 / \l

$ cat STDERR.txt

cat: /etc/shadow: Permission denied

Jak widać, w jednym pliku został zapisany normalny wynik działania polecenia (STDOUT),

natomiast w drugim pliku znalazły się informacje o błędach (STDERR).

Często deskryptor standardowego wyjścia jest pomijany, w takim wypadku składnia ulega

8

uproszczeniu (z tak uproszczon sk adnia ju si Pa stwo spotkali cie, ą ą ł ż ę ń ś na samym początku

omawiania operacji przekierowania, to uproszczenie działa zarówno dla standardowego wyjścia, jak

też dla standardowego wejścia, jedynie w przypadku STDERR nadal należy używać deskryptora):

polecenie > nazwa_pliku_dla_STDOUT 2> nazwa_pliku_dla_STDERR

Dla potwierdzenia, powyższy przykład z wykorzystaniem tej uproszczonej składni:

$ cat /etc/issue /etc/shadow > STDOUT.txt 2> STDERR.txt

$ cat STDOUT.txt

Mandrake Linux release 9.1 (Bamboo) for i586

Kernel 2.4.21-0.13mdk on an i686 / \l

$ cat STDERR.txt

cat: /etc/shadow: Permission denied

We wszystkich systemach z rodziny UNIX, istnieje specjalny plik o nazwie “/dev/null”. W pewnych

sytuacjach pragnęlibyście Państwo, by niektóre wyniki działania poleceń były w jakiś sposób

usuwane, bo np. nie odczuwacie Państwo potrzeby ich oglądania. Realizując przekierowanie do

tego pliku uzyskujecie Państwo taki właśnie efekt. Wszystko co zostanie do niego zapisane zniknie

bezpowrotnie.

$ cat /etc/issue /etc/shadow

Mandrake Linux release 9.1 (Bamboo) for i586

Kernel 2.4.21-0.13mdk on an i686 / \l

cat: /etc/shadow: Permission denied

$ cat /etc/issue /etc/shadow 2> /dev/null

Mandrake Linux release 9.1 (Bamboo) for i586

Kernel 2.4.21-0.13mdk on an i686 / \l

W pewnych sytuacjach nie chcemy (lub nie potrzebujemy) oglądać komunikatów o błędach (wiemy,

że mogą się pojawić, ale nam to wcale nie przeszkadza - w tym konkretnym przypadku).

Przekierowując STDERR do “/dev/null” osiągamy taki efekt - jak w powyższym przykładzie.

Jeżeli spróbowalibyście Państwo wyświetlić przy pomocy polecenia cat zawartość pliku “/dev/null”,

to okaże się, że jest on zawsze pusty (niezależnie co do niego wcześniej zapiszemy):

$ cat /dev/null

$

Czasami możecie Państwo chcieć zapisać zarówno wynik pochodzący z STDOUT, jak też z

STDERR, w jednym i tym samym pliku. Można wtedy wykorzystać następującą składnię:

polecenie > nazwa_pliku 2>&1

lista_polecen > nazwa_pliku 2>&1

Zamiast “>” można użyć “>>”, jeżeli chcielibyśmy Państwo, by wyniki były dopisywane do

otrzymanych wcześniej:

polecenie >> nazwa_pliku 2>&1

lista_polecen >> nazwa_pliku 2>&1

Poniższy przykład pokazuje wykorzystanie tego mechanizmu:

$ cat p1.txt

Pierwszy

9

$ cat p2.txt

Drugi

$ ls

p1.txt p2.txt

$ { cat p1.txt > p4.txt 2>&1; cat p2.txt >> p4.txt 2>&1; cat p3.txt >> p4.txt

2>&1; }

$ cat p4.txt

Pierwszy

Drugi

cat: p3.txt: No such file or directory

Przyk ad pozwala te zorientowa si , jak mo na wykorzysta deskryptory ł ż ć ę ż ć plików (np. te

utworzone przy pomocy exec) i jaką rolę ma w tym wypadku operator “&”.

Ogólna składnia przekierowania z wykorzystaniem deskryptorów plików, jest następująca:

n>&m

gdzie:

n, m - deskryptory plików (liczby całkowite), jeżeli m jest znakiem “-”, plik, którego deskryptorem

jest n, zostanie zamknięty. Próba czytania, czy pisania do takiego pliku kończy się błędem.

“>” - operator przekierowania (równie dobrze może to być “<” lub “>>”).

Poniżej kilka “zabaw” z wykorzystaniem deskryptorów. Proszę spróbować odszyfrować, co się tak

naprawdę dzieje podczas kolejnych przekierowań i z jakim plikiem jest na koniec powiązane

standardowe wyjście.

$ exec 1> p2.txt

$ cat p1.txt

$ cat p1.txt 1>&2

Pierwszy

$ cat p1.txt

$ exec 1>&-

$ cat p1.txt

cat: standardowe wyjście: Bad file descriptor

$ exec 1<&2

$ cat p1.txt

Pierwszy

Inną sytuacją jest ta, kiedy chcielibyście Państwo zapisywać na standardowym wyjściu błędów,

również te komunikaty, które normalnie trafiają na standardowe wyjście.

Można to zrobić korzystając z następującej postaci przekierowania:

polecenie 1>&2

lista_polecen 1>&2

Dzięki temu na standardowym wyjściu nie pojawi się żaden wynik:

$ ls -l 2> STDERR.txt 1>&2

$ cat STDERR.txt

razem 12

-rw-r--r-- 1 student student 9 paź 24 16:15 p1.txt

-rw-r--r-- 1 student student 6 paź 24 16:15 p2.txt

-rw-r--r-- 1 student student 54 paź 24 17:20 p4.txt

-rw-r--r-- 1 student student 0 paź 24 17:32 STDERR.txt

10

Ale jak pokazuje przyk ad wynik jest generowany i rzeczywi cie trafia ł ś w całości na STDERR.

Polecenie można uprościć, pomijając deskryptor standardowego wyjścia:

$ ls -l 2> STDERR.txt >&2

$ cat STDERR.txt

razem 12

-rw-r--r-- 1 student student 9 paź 24 16:15 p1.txt

-rw-r--r-- 1 student student 6 paź 24 16:15 p2.txt

-rw-r--r-- 1 student student 54 paź 24 17:20 p4.txt

-rw-r--r-- 1 student student 0 paź 24 17:36 STDERR.txt

Jak widać mechanizm przekierowania wejścia i wyjścia, w połączeniu z potokami i deskryptorami

plików, daje do ręki doświadczonego użytkownika przepotężne narzędzie. Oczywiście sztuką (i to

czasami dużą) jest jego umiejętne wykorzystanie. Tak jak w przypadku innych narzędzi,

mistrzostwo w jego użytkowaniu bierze się z poznania go i doświadczenia w pracy z nim. Tym

samym to Państwo zadecydujecie, czy chcielibyście się nim posługiwać i w jaki sposób (ostatecznie

wielu ludzi umie pisać, co nie oznacza, że każdy z nich jest pisarzem - podobnie wiele osób miało

do czynienia z systemem UNIX, co nie oznacza, że znają ten system).

Filtrowanie tekstów

Bardzo często, podczas pracy w systemie UNIX, zdarza się, że interesuje nas jedynie część wyniku

jakiegoś polecenia. Stajemy w takim przypadku przed koniecznością odfiltrowania tego wyniku, w

taki sposób, by pozostawić tę jego część, która jest przedmiotem naszego zainteresowania. Znając

mechanizm potoków, możemy zrealizować to zadanie, stosunkowo prosto, wykorzystując

odpowiednie polecenia, stworzone z myślą o zadaniach filtrowania tekstów.

Pewną formą filtrowania, jest ograniczenie wyniku do określonej liczby linii (początkowych lub

końcowych). To zadanie nie powinno być dla Państwa żadnym problemem (wystarczy wykorzystać

znane już polecenie: head i tail). Co najwyżej warto wspomnieć o jednej nie wymienionej wcześniej

opcji polecenia tail “-f” (ang. follow).

Dzięki poleceniu postaci:

tail -f nazwa_pliku

będziecie Państwo mogli na bieżąco obserwować, co nowego zostało dopisane do wskazanego

pliku. Jest to szczególnie użyteczne podczas pracy z plikami log-ów.

Często stosowane jest np. takie wywołanie tail:

# tail -f /var/log/httpd/access_log

127.0.0.1 - - [24/Oct/2003:19:19:50 +0200] "GET / HTTP/1.1" 200 7035 "-"

"Mozilla/5.0 (compatible; Konqueror/3.1; Linux)"

...

Pozwala ono administratorowi serwera WWW śledzić na bieżąco kto i skąd próbuje się połączyć z

serwerem.

Polecenie grep

11

Polecenie grep umo liwia Pa stwu odnajdowanie, we wskazanych plikach, ż ń tych linii, które

zawierają określone słowo, czy zwrot. Nazwa programu sięga do początków systemu UNIX i

pochodzi od angielskich słów: globally regular expression print. W nazwie tej pojawia się

określenie “wyrażenie regularne” (ang. regular expression). Czym są i do czego służą wyrażenia

regularne, dowiecie się Państwo pod koniec semestru. W tym momencie jedynie o nich

wspominam.

Podstawowa składnia polecenia grep jest następująca:

grep slowo nazwa_pliku

gdzie:

grep - nazwa polecenia,

slowo - słowo, którego szukamy; polecenie grep wyświetli tylko te linie, z wskazanego pliku

wejściowego, które zawierają podane słowo,

nazwa_pliku - nazwa pliku wejściowego, tego, w którym będzie wyszukiwane określone słowo.

Poniżej prosty przykład (wyświetlanie tych linii z pliku “dlaczego_UNIX?.txt”, które zawierają

słowo “UNIX”):

$ cat dlaczego_UNIX?.txt

UNIX to stabilny i bezpieczny system operacyjny.

Linux to system z rodziny unix-ow.

Zdaniem wielu laczenie w jednym zdaniu slow "Windows" i "bezpieczenstwo" jest

nieporozumieniem.

Serwery WWW i serwery baz danych w wiekszosci korzystaja z UNIX-a.

Jezeli jeszcze nie przekonaliscie sie Panstwo do unix-ow, to trudno :(

$ grep UNIX dlaczego_UNIX?.txt

UNIX to stabilny i bezpieczny system operacyjny.

Serwery WWW i serwery baz danych w wiekszosci korzystaja z UNIX-a.

W przypadku, gdy grep nie odnajdzie żadnej linii zawierającej określone słowo, po prostu nie

wyświetli żadnego wyniku. Można również prowadzić wyszukiwanie w kilku plikach jednocześnie.

Polecenie grep normalnie odnajduje tylko te linie, w których poszukiwane słowo występuje

dokładnie w tej postaci, w jakiej je określiliśmy (dokładnie, tzn. małe “a” i duże “A”, to dwie różne

litery). Czasami jednak chcielibyśmy odszukać te linie, które zawierają to słowo, niezależnie od

tego jakimi literami (dużymi czy małymi) jest ono zapisane. Wtedy z pomocą przychodzi nam opcja

“-i”.

Kolejny przykład pokazuje jej działanie:

$ cat dlaczego_UNIX?.txt

UNIX to stabilny i bezpieczny system operacyjny.

Linux to system z rodziny unix-ow.

Zdaniem wielu laczenie w jednym zdaniu slow "Windows" i "bezpieczenstwo" jest

nieporozumieniem.

Serwery WWW i serwery baz danych w wiekszosci korzystaja z UNIX-a.

Jezeli jeszcze nie przekonaliscie sie Panstwo do unix-ow, to trudno :(

$ grep UNIX dlaczego_UNIX?.txt

UNIX to stabilny i bezpieczny system operacyjny.

Serwery WWW i serwery baz danych w wiekszosci korzystaja z UNIX-a.

$ grep -i UNIX dlaczego_UNIX?.txt

UNIX to stabilny i bezpieczny system operacyjny.

Linux to system z rodziny unix-ow.

12

Serwery WWW i serwery baz danych w wiekszosci korzystaja z UNIX-a.

Jezeli jeszcze nie przekonaliscie sie Panstwo do unix-ow, to trudno :(

Je eli w wywo aniu polecenia grep nie podamy nazwy pliku wej ciowego, polecenie ż ł ś przyjmie, że

tym plikiem jest STDIN. Dzięki temu polecenie grep staje się szczególnie użyteczne podczas pracy

z potokami.

W przykładzie odfiltrowujemy wynik polecenia finger tak, by pozostała tylko linia, w której

znajdują się login i pełna nazwa wskazanego użytkownika:

$ finger student

Login: student Name: Student

Directory: /home/student Shell: /bin/bash

On since Fri Oct 24 20:23 (CEST) on vc/1 43 minutes 59 seconds idle

On since Fri Oct 24 20:23 (CEST) on pts/0 43 minutes 32 seconds idle

On since Fri Oct 24 20:23 (CEST) on pts/1 (messages off)

No mail.

No Plan.

$ finger student | grep Name

Login: student Name: Student

W większości wypadków, praca z grep-em polega na wyszukiwaniu linii zawierających określone

słowo. Czasami jednak interesowałyby nas, dla odmiany, te linie, w których wskazane słowo nie

występuje. Do realizacji takiego zadania możemy wykorzystać opcję “-v”.

Kolejny przykład pokazuje efekt jej działania:

$ cat dlaczego_UNIX?.txt

UNIX to stabilny i bezpieczny system operacyjny.

Linux to system z rodziny unix-ow.

Zdaniem wielu laczenie w jednym zdaniu slow "Windows" i "bezpieczenstwo" jest

nieporozumieniem.

Serwery WWW i serwery baz danych w wiekszosci korzystaja z UNIX-a.

Jezeli jeszcze nie przekonaliscie sie Panstwo do unix-ow, to trudno :(

$ grep -v -i UNIX dlaczego_UNIX?.txt

Zdaniem wielu laczenie w jednym zdaniu slow "Windows" i "bezpieczenstwo" jest

nieporozumieniem.

Podczas przeglądania pliku, w poszukiwaniu wskazanego słowa, polecenie grep numeruje

przeszukiwane linie. Dzięki temu, możecie Państwo zażyczyć sobie, by polecenie wyświetlało

numer każdej ze znalezionych linii. Do tego zadania wykorzystujemy opcję “-n”. Przy czym, po jej

użyciu, każda z linii wyniku ma następującą postać:

nazwa_pliku:numer_linii:linia

Nazwa pliku jest wyświetlana tylko wtedy, gdy polecenie grep przeszukuje kilka plików

jednocześnie.

Ilustruje to następny przykład:

$ cat plik1.txt

UNIX to stabilny i bezpieczny system operacyjny.

Historia systemu UNIX siega lat 60-tych dwodziestego wieku.

$ cat plik2.txt

Prawda jest, ze UNIX (z reguly) nie sluzy do gier.

Uzytkownicy Windows uzywaja programow antywirusowych.

Wirusy dla UNIX-a do prawdziwa zadkosc!

$ grep -n UNIX plik1.txt plik2.txt

13

plik1.txt:1:UNIX to stabilny i bezpieczny system operacyjny.

plik1.txt:2:Historia systemu UNIX siega lat 60-tych dwodziestego wieku.

plik2.txt:1:Prawda jest, ze UNIX (z reguly) nie sluzy do gier.

plik2.txt:3:Wirusy dla UNIX-a do prawdziwa zadkosc!

Czasami, chcieliby cie Pa stwo wiedzie , nie to w jakich liniach dane s owo ś ń ć ł występuje, a tylko w

jakich w ogóle plikach się ono pojawia.

Dla przykładu: poszukujemy wszystkich plików zawierających słowo UNIX, znajdujących się we

wskazanym katalogu. Dysponując dotychczasową wiedzą moglibyście Państwo wydać polecenie:

$ tree tmp

tmp

|-- plik1.txt

|-- plik2.txt

`-- plik3.txt

0 directories, 3 files

$ cat plik1.txt

UNIX to stabilny i bezpieczny system operacyjny.

Historia systemu UNIX siega lat 60-tych dwodziestego wieku.

$ cat plik2.txt

Prawda jest, ze UNIX z reguly nie sluzy do gier.

Uzytkownicy Windows uzywaja programow antywirusowych.

Wirusy dla UNIX-a do prawdziwa zadkosc!

$ cat plik3.txt

Windows RULEZ!

$ grep UNIX tmp/*

tmp/plik1.txt:UNIX to stabilny i bezpieczny system operacyjny.

tmp/plik1.txt:Historia systemu UNIX siega lat 60-tych dwodziestego wieku.

tmp/plik2.txt:Prawda jest, ze UNIX z reguly nie sluzy do gier.

tmp/plik2.txt:Wirusy dla UNIX-a do prawdziwa zadkosc!

Jednak wynik takiego polecenia, zawiera wiele zbędnych informacji. Pamiętajmy - potrzebujemy

tylko nazw plików. W takim przypadku przydatna bywa opcja “-l”.

Wynik jej użycia pokazano poniżej (dla tych samych danych wejściowych co powyżej):

$ grep -l UNIX tmp/*

tmp/plik1.txt

tmp/plik2.txt

Polecenie sort

Polecenie sort możemy wykorzystać (jak wskazuje jego nazwa) do posortowania danych

dostarczonych na jego wejście.

Sortowanie może zarówno dotyczyć łańcuchów tekstowych, jak też liczb. Może ono również

odbywać się zarówno w porządku rosnącym, jak też malejącym. Normalnie sortowanie odbywa się

tak, jakby dane miały postać łańcuchów tekstowych. Dodając opcję “-n” (ang. numeric),

wskazujemy, że chodzi nam o sortowanie liczb. Równocześnie domyślnie sortowanie odbywa się

od najmniejszego elementu do największego (w sensie przyjętego kryterium). Po zastosowaniu

opcji “-r” (ang. reverse) wymuszamy sortowanie w porządku odwrotnym.

Zastosowanie sort pokazują kolejne przykłady:

$ cat plik1.txt

14

Joanna

Jerzy

Adam

Katarzyna

Eugeniusz

Cezary

Klaudia

Bernadetta

Katarzyna

Maurycy

Tomasz

Aleksandra

1

15

25

26

101

13

$ sort plik1.txt

11

01

13

15

25

26

Adam

Aleksandra

Bernadetta

Cezary

Eugeniusz

Jerzy

Joanna

Katarzyna

Katarzyna

Klaudia

Maurycy

Tomasz

$ sort -r plik1.txt

Tomasz

Maurycy

Klaudia

Katarzyna

Katarzyna

Joanna

Jerzy

Eugeniusz

Cezary

Bernadetta

Aleksandra

Adam

26

25

15

13

101

1

$ sort -n plik1.txt

Adam

Aleksandra

Bernadetta

Cezary

Eugeniusz

Jerzy

Joanna

Katarzyna

Katarzyna

15

Klaudia

Maurycy

Tomasz

11

3

15

25

26

101

$ sort -n -r plik1.txt

101

26

25

15

13

1T

omasz

Maurycy

Klaudia

Katarzyna

Katarzyna

Joanna

Jerzy

Eugeniusz

Cezary

Bernadetta

Aleksandra

Adam

Normalnie polecenie sort okre la porz dek sortowania w oparciu o zawarto pierwszej ś ą ść kolumny (w

przykładzie była tylko jednak kolumna). Nie zawsze nam to odpowiada, czasami chcielibyśmy

sortować w nieco odmienny sposób, np. w oparciu o zawartość innej kolumny, sort daje nam taką

możliwość.

Słowo o kolumnach - kolumna to dowolny ciąg znaków nie zawierający znaków separatora

(domyślnie separatorami są tabulacje i spacje). Innymi słowy liczba kolumn w linii, to (w zasadzie)

liczba słów w linii. Kolejne kolumny mają kolejny numer początkowy. Pierwsza kolumna w linii

ma numer 1.

Aby dokonać sortowania w oparciu o zawartość innej kolumny niż pierwsza (domyślna), należy

wykorzystać opcję “-k” (ang. key). Polecenie sort tworzy klucz dla każdej z linii pliku wejściowego,

a następnie dokonuje ich (kluczy) uporządkowania w zależności od określonego kryterium.

Podstawowa składnia, dla takiego użycia sort, jest następująca:

sort -k kolumna_poczatkowa, kolumna_koncowa pliki

gdzie:

kolumna_poczatkowa - numer pierwszej z kolumn stanowiących klucz do sortowania,

kolumna_koncowa - numer ostatniej z kolumn wchodzących w skład klucza.

Jeżeli klucz jest oparty na jednej kolumnie, to składnia ulega uproszczeniu:

sort -k kolumna pliki

Wykorzystanie opcji “-k” pokazuje kolejny przykład:

16

$ cat ceny.txt

<NAZWA_PRODUKTU> <CENA> <ILOSC>

chleb 1.40PLN 100

jablka_1_kg 2.10PLN 90

banany_1_kg 2.70PLN 16

margaryna 3.80PLN 65

kawa_rozpuszczalna 8.90PLN 1

mleko_3.2% 1.80PLN 48

ser_bialy_kostka 4.00PLN 14

serek_topiony_opakowanie 1.50PLN 6

piwo_bezalkoholowe_;)_puszka 3.00PLN 499

$ grep PLN ceny.txt | sort -r -k 1,1

serek_topiony_opakowanie 1.50PLN 6

ser_bialy_kostka 4.00PLN 14

piwo_bezalkoholowe_;)_puszka 3.00PLN 499

mleko_3.2% 1.80PLN 48

margaryna 3.80PLN 65

kawa_rozpuszczalna 8.90PLN 1

jablka_1_kg 2.10PLN 90

chleb 1.40PLN 100

banany_1_kg 2.70PLN 16

$ grep PLN ceny.txt | sort -k 2

chleb 1.40PLN 100

serek_topiony_opakowanie 1.50PLN 6

mleko_3.2% 1.80PLN 48

jablka_1_kg 2.10PLN 90

banany_1_kg 2.70PLN 16

piwo_bezalkoholowe_;)_puszka 3.00PLN 499

margaryna 3.80PLN 65

ser_bialy_kostka 4.00PLN 14

kawa_rozpuszczalna 8.90PLN 1

$ grep PLN ceny.txt | sort -nr -k 3

piwo_bezalkoholowe_;)_puszka 3.00PLN 499

chleb 1.40PLN 100

jablka_1_kg 2.10PLN 90

margaryna 3.80PLN 65

mleko_3.2% 1.80PLN 48

banany_1_kg 2.70PLN 16

ser_bialy_kostka 4.00PLN 14

serek_topiony_opakowanie 1.50PLN 6

kawa_rozpuszczalna 8.90PLN 1

Je eli w pliku wej ciowym znalaz oby si wiele takich samych linii, ż ś ł ę moglibyśmy tak wywołać

polecenie sort, by w wyniku została wyświetlona tylko jedna z tych linii. Do tego celu służy opcja

“-u” (ang. unique).

$ cat plik1.txt

1

11

53

2$

sort plik1.txt

11

12

35

$ sort -u plik1.txt

1

17

2

3

5

Polecenie uniq

Polecenie uniq (ang. unique) usuwa powtarzaj ce si linie z posortowanego pliku ą ę (jak sort z opcją

“-u”). Możemy je wykorzystać do wyświetlania niepowtarzalnych linii z wskazanego pliku.

$ cat plik1.txt

1

11

53

2

$ uniq plik1.txt

15

32

Należy jednak pamiętać, że polecenie to usuwa powtarzające się linie tylko wtedy, gdy występują

one po sobie kolejno (plik jest posortowany), w przeciwnym wypadku efekt działania polecenia nie

jest zgodny z naszymi oczekiwaniami:

$ cat plik1.txt

1

53

21

41

$ uniq plik1.txt

1

5

3

2

1

4

1

Dodatkowe polecenia informacyjne

Na jednych z poprzednich zajęć zetknęliście się Państwo z podstawowymi poleceniami

informacyjnymi w systemie UNIX (Linux). W czasie zajęć dzisiejszych macie Państwo okazję

uzupełnić swoją wiedzę o dodatkowe polecenia służące do uzyskiwania informacji (mogą być one

również przydatne - przynajmniej od czasu do czasu). Część z tych poleceń mieliście już Państwo

okazję poznać, były one jednak używane wtedy do realizacji odmiennych zadań. Poniżej

przedstawiono takie ich wykorzystanie, które dostarcza określone informacje (np. o wersji systemu,

czy posiadanym procesorze).

Polecenie cal

Polecenie cal (ang. calendar) wyświetla prosty kalendarz. Bez podania żadnych dodatkowych

parametrów jest to kalendarz na dany miesiąc, z opcją “-y” wyświetla kalendarz na cały rok (inne

18

opcje prosz przetestowa ę ć samemu).

Poniższy przykład pokazuje sposób użycia i wynik działania polecenia cal:

$ cal

październik 2003

ni po wt śr cz pi so

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 -y

2003

styczeń luty marzec

ni po wt śr cz pi so ni po wt śr cz pi so ni po wt śr cz pi so

1 2 3 4 1 1

5 6 7 8 9 10 11 2 3 4 5 6 7 8 2 3 4 5 6 7 8

12 13 14 15 16 17 18 9 10 11 12 13 14 15 9 10 11 12 13 14 15

19 20 21 22 23 24 25 16 17 18 19 20 21 22 16 17 18 19 20 21 22

26 27 28 29 30 31 23 24 25 26 27 28 23 24 25 26 27 28 29

30 31

...

Zamieszczono tylko część przykładowego wyniku.

Polecenie cat - wyświetlanie informacji

Kolejne przykłady pokazują, jak można uzyskać konkretne informacje o komputerze przy którym

Państwo pracujecie, poprzez odczytanie zawartości odpowiednich plików tekstowych. Użycie w

przykładach polecenia cat jest jedynie pretekstem (równie dobrze moglibyście Państwo użyć np.

more czy less, albo wręcz programu mc). Ważne jest odczytanie odpowiednich plików, a nie to

czym je odczytamy.

W pliku “/etc/issue” jest zapisana (o ile nie zmienił tego administrator) informacja o posiadanej

przez Państwa dystrybucji Linux-a.

Kolejny przykład pokazuje jak możemy ją odczytać:

$ cat /etc/issue

Mandrake Linux release 9.1 (Bamboo) for i586

Kernel 2.4.21-0.13mdk on an i686 / \l

Plik “/proc/cpuinfo” zawiera informacje o procesorze (procesorach) znajdującym się w danym

komputerze:

$ cat /proc/cpuinfo

processor : 0

vendor_id : AuthenticAMD

cpu family : 6

model : 4

model name : AMD Athlon(tm) Processor

stepping : 2

cpu MHz : 1007.315

cache size : 256 KB

fdiv_bug : no

hlt_bug : no

19

f00f_bug : no

coma_bug : no

fpu : yes

fpu_exception : yes

cpuid level : 1

wp : yes

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov

pat pse36 mmx fxsr syscall mmxext 3dnowext 3dnow

bogomips : 2005.40

Kolejny plik - “/proc/filesystems” - dostarcza informacji o systemach plików wykorzystywanych

przez Państwa:

$ cat /proc/filesystems

nodev rootfs

nodev bdev

nodev proc

nodev sockfs

nodev tmpfs

nodev shm

nodev pipefs

ext2

nodev ramfs

nodev devfs

nodev nfs

nodev devpts

ext3

nodev usbdevfs

nodev usbfs

nodev supermount

vfat

udf

iso9660

Następny plik “/proc/interrupts” zawiera informacje o przerwaniach i przypisanych im

urządzeniach:

$ cat /proc/interrupts

CPU0

0: 380200 XT-PIC timer

...

Zamieszczono tylko część przykładowego wyniku.

Plik “/proc/pci” przechowuje informacje o urządzeniach podłączonych do magistrali PCI.

$ cat /proc/pci

PCI devices found:

Bus 0, device 0, function 0:

Host bridge: VIA Technologies, Inc. VT8363/8365 [KT133/KM133] (rev 3).

Master Capable. Latency=8.

Prefetchable 32 bit memory at 0xe6000000 [0xe7ffffff].

...

Zamieszczono tylko część przykładowego wyniku.

Ostatnim z listy, jest plik “/proc/version” - zawiera on szczegółowe informacje o posiadanej przez

Państwa wersji Linux-a:

$ cat /proc/version

20

Linux version 2.4.21-0.13mdk (flepied@bi.mandrakesoft.com) (gcc version 3.2.2

(Mandrake Linux 9.1 3.2.2-3mdk)) #1 Fri Mar 14 15:08:06 EST 2003

Oczywi cie jest jeszcze ca a masa plików przechowuj cych ró norakie informacje, ś ł ą ż w razie potrzeby

możecie Państwo je odszukać samodzielnie.

Polecenie date

Polecenie to dostarcza informacji o aktualnej dacie. Umożliwia również jej modyfikację, czy też

precyzyjne określenie w jaki sposób data ta ma być wyświetlana.

$ date

pon paź 20 20:18:35 CEST 2003

$ date +"%Y-%m-%d %H:%M:%S"

2003-10-20 20:18:13

Inne sposoby wywołania polecenia date (np. to jak przy jego pomocy zmienić datę) możecie

Państwo odnaleźć w odpowiednim podręczniku man. Jesteście Państwo już na tyle zaawansowani,

by czynić to samodzielnie, stąd nie podaję więcej przykładów.

Polecenie uname

Polecenie to może być wykorzystywane na różny sposób. Wywołane z opcją “-a” dostarcza

informacje o systemie i jądrze Linux-a.

$ uname -a

Linux localhost 2.4.21-0.13mdk #1 Fri Mar 14 15:08:06 EST 2003 i686 unknown

unknown GNU/Linux

Polecenia w, who i whoami

Z poleceniem who już się Państwo spotkaliście, pozostałe mają praktycznie identyczne działanie.

Najlepiej zobaczyć to na przykładzie:

$ w

20:03:39 up 1:16, 3 users, load average: 0,03, 0,05, 0,01

USER TTY LOGIN@ IDLE JCPU PCPU WHAT

student vc/1 18:48 1:15m 0.09s 0.01s /bin/sh /usr/X11R6/bin/startx

student pts/0 18:48 1:14m 0.00s 0.25s kdeinit: kwrited

student pts/1 18:48 0.00s 0.11s 0.02s w

$ who

student vc/1 Oct 20 18:48

student pts/0 Oct 20 18:48

student pts/1 Oct 20 18:48

$ who am i

student pts/1 Oct 20 18:48

$ whoami

student



Wyszukiwarka

Podobne podstrony:
Systemy Operacyjne laboratorium 2 teoria
Systemy Operacyjne laboratoria 3 i 4 teoria
Systemy operacyjne laboratorimuiIi
Systemy Elektroenergetyczne Laboratorium Teoria
lab7, SEMESTRY, Sem 7, Interfejsy Programowe Systemow Operacyjnych, Laboratorium
Systemy operacyjne laboratorimuii
Systemy Operacyjne laboratorium 5 zadania
Systemy operacyjne laboratorimuV
Systemy Operacyjne laboratoria 3 i 4 zadania
Systemy operacyjne laboratorimu
Systemy Operacyjne laboratorium 2 zadania
Laboratorium Systemy operacyjne II lista 3
Teoria informatyki, Szkoła, Systemy Operacyjnie i sieci komputerowe, utk, semestr II
Unix - TCPIP, Laboratorium Systemów Operacyjnych
rso odp teoria, wisisz, wydzial informatyki, studia zaoczne inzynierskie, rozproszone systemy operac
Laboratorium Systemy operacyjne II
Laboratorium systemów operacyjnych Robert Schaefer
Systemy operacyjne
5 Systemy Operacyjne 23 11 2010 Zarządzanie procesami

więcej podobnych podstron