architektura komputerów i system operacyjny linux

47
010 ARCHITEKTURA KOMPUTERÓW Prof. dr hab. Marek Wisła

Upload: dangliem

Post on 11-Jan-2017

228 views

Category:

Documents


2 download

TRANSCRIPT

010 ARCHITEKTURA

KOMPUTERÓW

Prof. dr hab. Marek Wisła

Pojęcie komputera

Komputer (dawniej maszyna cyfrowa) to urządzenie (zespół urządzeń), które:

• pobiera dane wejściowe

• wykonuje na tych danych pewne operacje (obliczenia) zgodnie z określoną z góry kolejnością poleceń programu (będącego skończonym ciągiem rozkazów/instrukcji do wykonania, podanym w postaci zrozumiałej dla komputera)

• otrzymane wyniki tych operacji (obliczeń) przesyła użytkownikowi.

Powstanie i rozwój komputerów (urządzeń technicznych zdolnych do gromadzenia, przechowywania i przetwarzania informacji) datuje się od początku lat 40-tych XX wieku.

System informatyczny

System informatyczny (komputerowy) to system

obejmujący:

• komputer,

• oprogramowanie

• i zwykle bank danych (bazą danych

i oprogramowaniem do jej

bezpośredniej obsługi).

Narzędzia informatyki to:

• komputery + oprogramowanie

• (hardware + software)

Rodzaje komputerów

• Superkomputery - zastosowania specjalne, np. w nauce lub wojskowości

• Duże komputery (ang. mainframe) - stosowane np. w bankowości

• Minikomputery - najczęściej stosowane jako serwery do obsługi przedsiębiorstw, grup użytkowników, sieci komputerowych.

• Mikrokomputery (komputery osobiste) - przeznaczone dla pojedynczego użytkownika (IBM PC, MacIntosh)

• Laptopy, notebooki - komputery przenośne

• Palmtopy

• Tablety

Architektura komputera

Architektura komputera to ustalenia obejmujące:

• organizację i strukturę komputera

• procesor i zbiór realizowanych przez niego instrukcji

• pamięć i sposoby jej organizacji

• magistrale systemowe

• urządzenia wejścia/wyjścia

Architektura von Neumanna

• W 1946 r John von Neumann (1903-1957) podał założenia, które stały się standardem w architekturze komputerowej.

• Model ten obowiązuje do dzisiaj w tradycyjnych komputerach sekwencyjnych (większość komputerów).

• Elementami komputera sekwencyjnego są:

• procesor - jednostka arytmetyczno-logiczna (w tym arytmometr),

• pamięć operacyjna o liniowej adresacji, w której jest zapisany program i dane,

• układy sterujące,

• systemy wejścia/wyjścia (we/wy).

Procesor

• Procesor (mikroprocesor, CPU – Central Processor Unit) to bardzo złożony, o dużej skali integracji układ scalony, który wykonuje rozkazy, nadzoruje i synchronizuje pracę wszystkich urządzeń w komputerze.

• Zadania procesora:

• pobieranie rozkazów z pamięci,

• dekodowanie rozkazów i ich interpretowanie,

• pobieranie danych – z pamięci lub bezpośrednio z urządzeń wejścia,

• przetwarzanie danych, czyli przeprowadzanie na danych operacji arytmetyczno-logicznych,

• zapisywanie danych – w pamięci lub na urządzeniach wyjścia.

Budowa procesora

Procesor tworzą:

• jednostka arytmetyczno-logiczna (arytmometr) – wykonuje obliczenia,

• jednostka sterująca – odpowiada za przepływ informacji i steruje pracą całego układu,

• rejestry - bardzo szybka pamięć o niewielkiej pojemności, służy do przechowywania bieżących danych i adresów: • akumulator (A) – przechowuje argument lub wynik obliczeń

• licznik rozkazów (LR) – zawiera adres następnego do wykonania rozkazu

• flagi – określają wektor stanu procesora i wykonywanych obliczeń (np. flaga znaku, flaga zera itd.)

Lista rozkazów - funkcjonalnie pełny zestaw poleceń „zapisanych” w języku maszynowym, które procesor potrafi wykonać

Architektura CISC, RISC, EPIC

CISC (Complex Instruction Set Computers):

• rozbudowana (kilkaset), uniwersalna lista rozkazów procesora

• zróżnicowany format rozkazów

• mała optymalizacja działania

• do pamięci może odwoływać się bezpośrednio duża liczba rozkazów

RISC (Reduced Instruction Set Computers) (ARM, MIPS, SPARC):

• zredukowana (kilkadziesiąt) lista rozkazów procesora

• rozkazy są prostsze, bardziej zunifikowane, upraszcza to dekodowanie

• zwiększona liczba rejestrów

• zmniejszona liczba odwołań procesora do pamięci

• procesory są wydajniejsze niż procesory o architekturze CISC

EPIC (Explicitly Paralell Instruction Computing)

• rozkazy CISC-owe są rozbijane na mikrorozkazy, które następnie są wykonywane przez RISC-owy blok wykonawczy

Cykl rozkazowy

Procesor pracuje w tzw. cyklu rozkazowym (maszynowym):

1. Pobranie z pamięci wskazanej przez adres podany w liczniku

rozkazów kolejnego słowa maszynowego i przekazanie go do

dekodera

2. Rozpoznanie słowa (rozkaz lub dana); jeśli jest to rozkaz, to następuje

wydzielenie części operacyjnej (nr rozkazu z listy rozkazów procesora)

i części adresowej (adres lub adresy argumentów i/lub wyniku)

3. Na podstawie adresów pobranie z pamięci argumentów i wykonanie

polecenia (odwołanie się do odpowiedniego układu w arytmometrze)

oraz przesłanie wyniku pod wskazany adres

4. Zwiększenie zawartości licznika rozkazów o 1 (lub o założoną

jednostkę)

5. Jeżeli operacja nie dotyczyła zakończenia programu, to powrót do pkt.1

Praca procesora regulowana jest przez sygnał zegarowy.

Pamięć

Pamięć służy do przechowywania programów i danych.

• Fizycznie jest to zestaw układów elektronicznych, z których każdy w

elementarnej postaci może przyjmować dwa rozróżnialne stany 0 i 1.

• Charakterystyki pamięci:

• wewnętrzna (np. RAM), zewnętrzna (np. pamięć flash);

• dostęp: sekwencyjny (np. taśma magnetyczna), bezpośredni (np.

dysk twardy), swobodny (np. RAM);

• ulotna (np. RAM), trwała (nieulotna, np. dysk twardy, CD-ROM);

• tylko do odczytu (np. ROM), zapisywalna 1 raz (CD-R) lub wiele

razy (CD-RW);

• półprzewodnikowa (np. RAM, flash), magnetyczna (np. dyskietka),

optyczna (np. DVD-ROM), magnetooptyczna.

Parametry pamięci

Podstawowe parametry pamięci:

• pojemność – wyrażana w wielokrotnościach bajtów (B),

np. 120 GB,

• czas dostępu – czas niezbędny do zrealizowania

operacji zapisu/odczytu lub czas potrzebny na

umieszczenie mechanizmu zapisu/odczytu w żądanym

miejscu, od kilku ns (cache) do kilku ms (dysk twardy),

• szybkość zapisu/odczytu.

Rodzaje pamięci

• ROM (Read Only Memory) – pamięć trwała, tylko do odczytu,

zawartość zostaje zapisana podczas procesu produkcji i np.

umożliwia zainicjowanie pracy komputera po włączeniu (BIOS -

testowanie, wczytanie systemu operacyjnego).

• PROM pamięć tylko do odczytu z programowalną zawartością:

• EPROM optycznie (UV) wymazywalna, odczytywana i

zapisywana elektrycznie,

• EEPROM elektrycznie wymazywalna,

• pamięć flash odmiana pamięci EEPROM.

• RAM (Random Access Memory) – pamięć ulotna, o dostępie

swobodnym, wielokrotnie zapisywalna; przechowuje programy i

dane.

RAM

RAM to układy scalone zwane modułami pamięci (SIMM, DIMM, RIMM).

Istnieją różne odmiany pamięci RAM:

• SRAM (Static RAM) - nieulotna, bardzo krótki czas dostępu ~ 5-8 ns, cena (!)

• DRAM (Dynamic RAM) – wymaga odświeżania, czas dostępu ~ 50 ns

• SDRAM (Synchronous DRAM) – zoptymalizowany sposób odświeżania

• DDR SDRAM (Double Data Rate SDRAM)

• DDR2 SDRAM – większa przepustowość

• DDR3 SDRAM – większa przepustowość

Hierarchia pamięci

• Rejestry - < 1 kB, < 1 ns

• Cache (pamięć podręczna, kieszenie) – zapewnia buforowanie

danych między procesorem i pamięcią operacyjną, nie wymaga

odświeżania (architektura SRAM – Static RAM)

• warstwa L1 - ≤ 128 kB, 1 ns (zintegrowana z procesorem)

• warstwa L2 - ≤ 4 MB, 2 ns

• warstwa L3 - ≤ 144 MB, 5 ns

• Pamięć operacyjna (RAM) - 512 MB .. 128 GB, 10 .. 50 ns

• Pamięć wirtualna – rozszerzenie pamięci operacyjnej

• Pamięć masowa z plikami (np. dysk twardy) - > 100 GB, < 10

ms

• Nośniki wymienne (CD, DVD) - nieograniczona pojemność,

sek .. min

Magistrala systemowa

• Magistrala systemowa to zespół wieloprzewodowych połączeń elektronicznych umożliwiających wymianę danych i informacji sterujących.

• Rodzaje:

• szyna danych – umożliwia przepływ danych, jej szerokość (16, 32, 64 bity) określa wielkość przesyłanej porcji danych,

• szyna adresowa – pozwala przekazywać adresy, pod które mają trafić przesyłane dane, jej szerokość określa wielkość przestrzeni adresów,

• szyna sterowania – pozwala przesyłać informacje o stanie systemu, zachowaniu się urządzeń zewnętrznych itp.

Jednostka centralna

Obudowa: tower, desktop

Płyta główna ma postać dużej płytki „drukowanej” -- na stałe zamontowane są na niej:

• gniazdo procesora,

• chipset (organizuje przepływ informacji),

• kości pamięci BIOS,

• układ pamięci ROM,

• gniazda dla modułów pamięci RAM,

• gniazda kart rozszerzeń,

• sterowniki napędów dyskietek i dysków twardych,

• porty i złącza,

• Bateria,

• Zasilacz.

Najważniejsze elementy: - Socket - gniazdo procesora - Chipset (mostek północny - northbridge odpowiada za wymanię danych pamięć-procesor oraz steruje złączem PCI-Express, mostek południowy - southbridge odpowiada za współpracę z urządzeniami wejścia/wyjścia jak dyski czy inne dodatkowe karty). Chipset steruje pracą całego komputera. - Złącza PCI-Express o dużej przepustowości (dla grafiki) - Złącza PCI-Epress o małej przepustowości (inne karty np. muzyczne, sata) - Złącza PCI (inne karty wyjścia/wejścia) - Gniazda dla złącz SATA/IDE (dyski twarde i napędy optyczne) - Złącza dla stacji dyskietek - Sloty na pamięć operacyjną (DDR/DDR2/DDR3) - Złącze zasilania ATX - Wtyczki wejścia/wyjścia - USB, LAN, Firewire, Audio, VGA, HDMI, LPT, eSATA .

http://www.arest.pl/pomoc/Konfigurator%20-%20P%C5%82yta%20g%C5%82%C3%B3wna

Pamięci zewnętrzne

Pamięci zewnętrzne (nośniki we/wy) służą do trwałego

przechowywania danych. Dzielą się na:

• pamięci o dostępie sekwencyjnym:

• taśmy magnetyczne, DAT (Digital Audio Tape – kasety)

• pamięci o dostępie bezpośrednim:

• dyskietki,

• dyski magnetyczne: stałe i wymienne,

• dyski optyczne,

• dyski magnetooptyczne,

• pamięci flash,

• karty pamięci: półprzewodnikowe, magnetyczne, optyczne,

• pamięci holograficzne.

Urządzenia zewnętrzne

Urządzenia wejścia-wyjścia:

• monitor

• modem

Urządzenia wejścia: Urządzenia wyjścia:

• klawiatura - drukarka

• mysz - głośniki (słuchawki)

• skaner - ploter

• mikrofon - urządzenia sterujące

• kamera internetowa - …

• tablet (digitizer)

• manipulator (joystick)

• czytnik kodów kreskowych

• urządzenia pomiarowe

• czujniki sygnałów

SYSTEM OPERACYJNY

LINUX

UNIX

Unix Time-Sharing System (UNIX) – system operacyjny napisany w 1969 r w Bell Laboratories (AT&T) przez Dennisa Ritchie i Kena Thompsona.

Obecnie UNIX to cała rodzina systemów operacyjnych różniących się sposobami implementacji (AIX, GNU/Linux, MAC OS X, Solaris). Podstawowe cechy:

• niezależność od sprzętu,

• warstwowa architektura (jądro, które otaczają warstwy zewnętrzne),

• wielozadaniowość, wieloprogramowość,

• wielodostępność,

• wieloprocesorowość,

• ochrona dostępu do katalogów i plików

• łatwe przystosowanie interpretera poleceń do wymagań użytkownika.

Podstawowe wady to: duża liczba wersji i obszerna dokumentacja.

Warstwowy model systemu

Większość elementów systemu UNIX, np. rodzaj i wygląd interfejsu, nie

jest ustalona, zależy od modułów, jakie zostaną włączone w skład

systemu.

Warstwowy model systemu UNIX składa się z czterech warstw:

• jądro:

• ma bezpośredni dostęp do wszystkich zasobów komputera,

• zawiera tzw. program szeregujący i sterowniki urządzeń,

• zarządza pamięcią operacyjną.

• biblioteki:

• zestawy podprogramów (zwykle napisanych w języku C)

wykonujących różne, często stosowane operacje,

• biblioteki są dołączane do programów na etapie konsolidacji (faza

po kompilacji, przed uruchomieniem).

Warstwowy model systemu

• powłoka:

• warstwa ta oddziela wewnętrzną część systemu operacyjnego od użytkownika,

• zawiera interpreter poleceń, który umożliwia komunikację z użytkownikiem,

• interpreter poleceń uruchamia polecenia systemu operacyjnego oraz programy użytkownika,

• programy:

• procesy uruchamiane przez użytkownika, zarządzane przez program szeregujący jądra,

• każdy program ma przydzielony odpowiedni obszar pamięci i priorytet,

• jeśli proces użytkownika próbuje dostać się do cudzego obszaru pamięci, zostaje przerwany, a system wyświetla odpowiedni komunikat.

Linux

• Linux – uniksopodobny (Linux Is Not UNIX) 32 lub 64-

bitowy system operacyjny, oferowany na zasadach licencji

wolnego i otwartego oprogramowania (GNU/Linux).

• Pierwsza wersja monolitycznego jądra Linuksa została

napisana (głównie w języku C) przez Linusa Torvaldsa w

1991 roku dla komputerów PC (najnowsze wersje można

sprawdzić na http://kernel.org).

• Pełny system operacyjny wymaga powłoki systemowej,

kompilatora, bibliotek, itp.

• W roli większości z tych narzędzi użyto oprogramowania

GNU.

Dystrybucje Linuksa

• Nie istnieje jedna, oficjalna wersja GNU/Linuksa, istnieje

natomiast wielu niezależnych producentów, którzy

do wydanego jądra Linuksa dodają oprogramowanie GNU

oraz inne, pomocnicze programy. Takie połączenie

bibliotek i programów nazwane jest dystrybucją

GNU/Linuksa.

• Programy występują zwykle w postaci pakietów binarnych

lub jako źródła, które należy przed użyciem skompilować.

Dystrybucja oferuje system pobierania, instalacji,

deinstalacji i uaktualniania pojedynczych pakietów oraz

wspólny interfejs konfiguracji pakietów.

Dystrybucje Linuxa

• Obecnie znanych jest ponad 300 dystrybucji Linuksa.

• Serwis monitorujący dystrybucje Linuksa: http://distrowatch.com

• Najbardziej popularne dystrybucja Linuksa: • Ubuntu

• Linux Mint

• Pinguy OS

• Debian

• Fedora

• Gentoo Linux

• Knoppix

• Mandriva Linux

• Red Hat Enterprise Linux

• Slackware

• openSUSE

• Red Hat Enterprise Linux (http://www.redhat.com)

• dystrybucja komercyjna (wsparcie i pomoc

techniczna),

• przeznaczona dla rynku firm i przedsiębiorców.

• Ubuntu (http://www.ubuntu.com)

• najpopularniejsza, kompletna dystrybucja GNU/Linux

• przeznaczona głównie do zastosowań biurowych i

domowych

• darmowe dyski CD-ROM wydawane co 6 miesięcy

Zastosowania Linuxa

Zastosowania:

• bezpieczeństwo, stabilność, możliwość audytu i łatwość

modyfikacji kodu źródłowego,

• stosowany jest jako podstawowy system operacyjny

serwerów (WWW, FTP, pocztowych, baz danych), zapór

sieciowych i routerów,

• używany w większości superkomputerów,

• szerokie zastosowanie na rynku komputerów biurowych i

domowych,

• popularny system w komputerach wykorzystywanych do

tworzenia animacji i efektów specjalnych.

Interfejs

• Linux oferuje interfejs wiersza poleceń (Command Line Interface)

jako część funkcji przejętych z systemu UNIX.

• Brak GUI pozwala zminimalizować wykorzystywane zasoby

systemowe.

• Graficzny interfejs użytkownika nie jest w Linuksie integralną częścią

systemu operacyjnego, lecz dodatkowym zbiorem programów:

• menedżer okien - pozwala na kontrolowanie położenia i wyglądu

okien indywidualnych aplikacji oraz na interakcję z systemem

obsługi okien

• duże środowiska graficzne:

• GNOME (GNU Network Object Model Environment) - atrakcyjny pulpit dla

użytkowników końcowych oraz zestaw bibliotek do budowania aplikacji

graficznych (np. GIMP, Inkscape) (http://www.gnome.org)

• KDE (K Desktop Environment ) - bogaty system bibliotek do tworzenia aplikacji w

środowisku graficznym (http://www.kde.org)

Programy narzędziowe

• OpenOffice.org - pakiet oprogramowania biurowego:

• procesor tekstu - Writer

• arkusz kalkulacyjny - Calc

• edytor grafiki - Draw

• edytor prezentacji - Impress

• program do tworzenia baz danych - Base

• edytor wzorów matematycznych - Math

• wizualny edytor HTML • Amarok - program do odtwarzania muzyki dla środowiska KDE

• K3b - aplikacja służąca do nagrywania płyt CD i DVD przeznaczona dla środowiska graficznego KDE

• KPlayer - program służący do odtwarzania plików audio i video

• Scribus – program do składu tekstu (DTP).

Struktura systemu plików

• Struktura plików Linuksa jest pogrupowana w logiczne

części. Każdy katalog zawiera pliki powiązane ze sobą

logicznie.

• Jest tylko jedno drzewo katalogów, w którym kolejne

partycje dysków, a nawet różne dyski fizyczne i inne

urządzenia, np. drukarki, są traktowane jak podkatalogi.

• Wielkość liter w nazwach jest istotna.

• Separatorem katalogów jest / (ukośnik - slash)

Podstawowe katalogi

• / - katalog główny (macierzysty)

• /bin - wykonywalne pliki binarne dostępne dla wszystkich użytkowników

• /dev - pliki urządzeń stanowiące interfejs do sterowników w jądrze

• /etc - pliki konfiguracyjne systemu

• /home - w nim umieszczone są katalogi domowe użytkowników

• /tmp - pliki tymczasowe

• /usr - pliki z oprogramowaniem użytkowników

• /boot - jądro systemu oraz pliki niezbędne przy jego uruchomieniu

• /root - katalog domowy użytkownika root (administratora systemu)

• /lib - biblioteki systemowe

• /mnt - katalog, do którego montowane są tymczasowe systemy plików urządzeń zewnętrznych (dyskietka, CD-ROM)

• /var - pliki często zmieniane, np. logi, pliki pocztowe

Poziomy własności

• Każdy plik i katalog posiada trzy poziomy własności:

• poziom właściciela (o) – określa użytkownika-właściciela (każdy

plik w systemie musi mieć właściciela)

• poziom grupy (g) – określa grupę użytkowników o jednakowych

prawach (każdy użytkownik musi należeć do co najmniej jednej

grupy, tzw. grupy podstawowej)

• poziom pozostałych (u) – określa wszystkich pozostałych

użytkowników

Prawa dostępu

• Dla każdego poziomu określa się trzy prawa dostępu:

• odczyt (r) – daje prawo odczytu zawartości pliku (dla katalogu jest

to prawo dostępu do plików w tym katalogu)

• zapis (w) – daje prawo tworzenia, modyfikacji i usuwania pliku (dla

katalogu jest to prawo tworzenia i usuwania nowych plików w

katalogu)

• wykonanie (x) – daje prawo uruchamiania pliku (programu lub

skryptu) (dla katalogu jest to prawo przeglądania zawartości

katalogu).

Plik

właściciel grupa pozostali

r w x r - x r- -

r, w, x : prawo przyznane, - : prawo nieprzyznane

Podstawowe polecenia

Polecenia związane z użytkownikami, grupami, loginami i zamykaniem systemu:

• shutdown [minuty] [informacja dla użytkowników] - zamykamy Linuksa

• adduser [nazwa użytkownika] - dodajemy nowego użytkownika

• newgrp [nazwa grupy] - dodajemy nową grupę

• logout - wylogowanie się

• who [parametry] - sprawdzamy, kto jest aktualnie zalogowany

• users - j/w

• whoami - sprawdzamy, kim jesteśmy

• write [użytkownik] [wiadomość] - wysłanie wiadomości do danego użytkownika

• wall (j/w, tylko do wszystkich użytkowników)

• rwall [plik tekstowy] - j/w, tylko do wszystkich użytkowników

• finger [user] - szczegółowe informacje o użytkowniku

• su [user] - zmieniamy się w innego użytkownika

• chmod [o|g|u|a][+|-][r|w|x][nazwa pliku] - zmieniamy parametry pliku

• (odpowiedniki liczbowe: 0 ---, 1 --x, 2 -w-, 3 –wx, 4 r--, 5 r-x, 6 rw-, 7 rwx)

Operacje na katalogach

• ls [parametr] [katalog] - pokazuje nam zawartość katalogu

• dir pokazuje nam zawartość katalogu, w którym się znajdujemy

• pwd - pokazuje nam katalog, w którym się znajdujemy

• cd [katalog] - zmieniamy katalog (~ oznacza katalog

macierzysty)

• rmdir [katalog] - usuwamy katalog

• mkdir [katalog] - tworzymy nowy katalog

• rm [plik] - usuwamy plik

• mv [plik] [cel] - przenosimy plik (lub zmieniamy jego nazwę)

• cp [plik] [cel] - kopiujemy plik

• mvdir [katalog] [cel] - przenosimy katalog (lub zmieniamy jego

nazwę)

Pomoc

• help – wyświetla wszystkie polecenia w Linuksie

• man [program] - pokazuje nam pomoc do programu

Strumienie

• Każdy proces korzysta ze strumieni danych, będących wirtualnym źródłem lub ujściem danych. Dla każdego procesu system tworzy • standardowy strumień wejściowy (ang. standard input), reprezentujący

urządzenia wejściowe, np. klawiaturę i dysk,

• standardowy strumień wyjściowy (ang. standard output), którym może być terminal (monitor komputera) lub plik oraz

• strumień diagnostyczny (ang. standard error).

• Strumienie wejściowy, wyjściowy i diagnostyczny oznaczane są odpowiednio: stdin, stdout, stderr.

• Strumieniom przypisane są standardowe wartości: stdin - 0, stdout - 1 i stderr - 2.

• Odczytanie danych ze strumienia wejściowego jest jednokrotne, tzn. nie można tych danych ponownie wczytać.

Przekierowania

• Istnieje możliwość przekierowania strumieni wyjściowych i wejściowych. Zmianę standardowego wejścia, wyjścia i wyjścia diagnostycznego można wykonać za pomocą operatorów: >, <, >>, <<.

• Operator > powoduje przekierowanie wyjścia na plik. Plik o nazwie podanej po znaku > zostanie utworzony lub nadpisany (jeśli istnieje) a w nim zostanie zapisane to, co proces wypisałby na standardowym wyjściu.

• Przykład:

$cat > plik.txt

To jest plik.

Ala ma kota.

^D

Przekierowania >, <

• Operator < powoduje przekierowanie wejścia procesu,

czyli pobranie danych wejściowych ze wskazanego pliku: $cat < plik.txt

To jest plik.

Ala ma kota.

Uwaga: w poleceniu cat znak przekierowania < można opuścić.

• Operatory > i < można używać jednocześnie,

przekierowując zarówno wyjście jak i wejście, co spowoduje, że zawartość pliku plik.txt zostaje

skopiowana do pliku plik_nowy.txt:

• $cat < plik.txt > plik_nowy.txt

Uwaga: Również tutaj znak przekierowania < można opuścić.

Przekierowania >

• Niektóre polecenia oprócz wyników wysyłają również

dodatkowe informacje informujące o napotkanych błędach

na standardowe wyjście diagnostyczne. Istnieje

możliwość niezależnego przekierowania strumienia

diagnostycznego, za pomocą operatora > poprzedzonego

numerem wyjścia diagnostycznego, czyli 2: • $cat plik1.txt plik2.txt 2> plik3.err

(informacje o błędach będą zapisywane w pliku plik3.err),

• $cat plik1.txt plik2.txt> plik3.txt 2> /dev/null

(informacje o błędach nie będą zapisywane).

• $cat plik1.txt plik2.txt> plik3.txt 2>&1

(informacje o błędach będą zapisywane w pliku plik3.txt),

Przekierowania >>, <<

• Operator >> przekierowuje standardowe wyjście, dopisując wyniki

działania programu na końcu istniejącego pliku: $ cat >> plik.txt

Kot ma Ale.

^D

• Operator << powoduje, że do procesu zostaną przekazane dane ze

standardowego wejścia aż do napotkania wskazanego napisu: $cat << przerwa

> Ala ma kota

> Kot ma Ale

> przerwa

Ala ma kota

Kot ma Ale.

Filtry

• Istnieją programy, których zadaniem jest odczyt danych ze standardowego

wejścia, przetworzenie tych danych i ich zapis na standardowe wyjście.

Programy takie nazywane są filtrami i są szeroko wykorzystywane w

przetwarzaniu potokowym. Poniżej przedstawiono najczęściej

wykorzystywane filtry:

• cat – wyświetla zawartość pliku,

• head - wyświetla początkową część pliku. Standardowo wyświetlanych jest pierwszych 10 linii

odczytanych danych.

• tail - wyświetla końcową część pliku. Standardowo wyświetlanych jest ostatnich 10 linii danych.

• sort - sortowanie danych wejściowych, domyślnie sortowane są leksykograficznie.

• uniq - usunięcie powtarzających się, sąsiadujących linii danych wejściowych.

• wc - zlicza znaki, słowa i linie w podanych danych wejściowych.

• tr - pozwala zamienić łańcuchy tekstowe, które podawane są jako argumenty wejściowe. Znaki z

pierwszego łańcuch zamieniane są na znaki z drugiego łańcucha.

• cut - pozwala wyświetlić fragmenty wierszy danych wejściowych. Zwykle jest to wycinanie

odpowiednich kolumn.

• grep [opcje] wyrażenie [lista_plików] - przeszukuje dane pochodzące ze standardowego wejścia

lub pliki wyszczególnione na liście plików, wypisując tylko linie zawierające szukane wyrażenie.

• more – sekwencyjne wyświetlanie tekstu na ekranie (strona po stronie).

Przykłady

$ ls | wc -l

(zliczenie ilości plików w katalogu (linii))

$ cat ~/.xsession-errors | more

(sekwencyjne wyświetlanie zawartości pliku) $ tail -n 10 czytaj.to | head -n 10 | tail -n 3 | wc – w

(zliczenie ilości słów)