A UNIX operációs rendszer - alapok

Óravázlat

Bevezetés, történet

A UNIX előnyei, sikere

A UNIX rendszer általános jellemzői, felépítése:

A terminálkezelő (TTY) program

Olyan rendszerprogram, amely folyamatosan figyeli, hogy egy adott bemeneti eszközről (alapesetben billentyűzet) érkezik-e jel (leütünk-e egy billentyűt), és ha igen, akkor a megfelelő karaktert (a leütött billentyű) kiírja az adott kimeneti eszközre (alapesetben monitor). A felhasználók mindegyike futtat (legalább) egy TTY programot, amellyel megteremti az operációs rendszerrel történő kommunikáció feltételét.

A SHELL

A SHELL (burok, parancsértelmező) egy olyan rendszerprogram, amelynek segítségével kommunikálni tudunk az operációs rendszerrel. Feladata: a begépelt (esetenként más módon megadott) karaktersorozatot parancsként értelmezi és az eredményről tájékoztatja a kernelt, amely elindítja a megfelelő processzusokat (vagyis végrehajtódik a parancs). Interaktív működése során egy prompt jelzi, hogy a SHELL várja az utasításainkat. A gyakorlati órán a bash (Bourne Again Shell) parancsértelmezőt használjuk.

A UNIX fájlrendszer

A UNIX operációs rendszerben a fájlok és könyvtárak fa struktúrába vannak rendezve. A fájlrendszer bármely pontjához hozzákapcsolhatunk egy másik (akár más lemezpartíción, vagy egy távoli gépen lévő) alrendszert. A struktúra kiindulópontja a gyökérkönyvtár (jele: / ).
A gyökérkönyvtárban található könyvtárak (általában):
/dev : eszközvezérlő állományok
/bin : futtatható (rendszer-)programok
/usr : felhasználói fájlrendszer
/etc : konfigurációs fájlok
/var : temporális fájlok
/home : a felhasználók "home" könyvtárai (bejelentkezéskor alapértelmezés szerint minden felhasználó a saját könyvtárát használja (pl.: /home/h735257)
/root : az adminisztrátor (root) felhasználó home könyvtára

A fájlrendszerben egy adott fájlra annak elérési útjával (path) hivatkozhatunk, az alkönyvtárakat / jel választja el. Az elérési útvonal az alábbi karakterekkel kezdődhet:
/gyökérkönyvtár
.az aktuális munkakönyvtár
..a munkakönyvtár szülőkönyvtára
~az adott felhasználó home könyvtára
~usera user felhasználó home könyvtára
(semmi)relatív útvonalmegadás

Alapvető UNIX utasítások

A UNIX utasítások általános formája:
utasításnév -opciók argumentumok

Az opciók módosítják az utasítás végrehajtását. Az egyes opciókat - jellel adjuk meg, de elég egy darab - jelet írni és utána egybe írni az opciókat (pl. az
ls -l -a
utasítás ekvivalens az
ls -la
utasítással).

Az argumentumok az utasítás bemenetei.

Fájlkezelő utasítások:

A gyakorlati óra során az alábbi utasításokat használtuk. Bővebben a man és az info parancsok segítségével mindenki önállóan tájékozódhat.
man man# a man parancs manuál oldala
man date# a date parancs manuál oldala
date# az aktuális dátum és idő kiíratása
date -u # az aktuális dátum és idő kiíratása GMT-ben
date +%a # a hét aktuális napjának rövidítését írja ki
finger # a bejelentkezett felhasználók és egyes adataik kilistázása
finger user # az user felhasználó adatainak kiírása
who # hasonló a finger-hez, csak más formátumú listát ad
w # hasonló az előzőhöz
mkdir konyvtar # a konyvtar nevű könyvtár létrehozása
cd konyvtar # munkakönyvtár váltása
cat > file1 # a file1 feltöltése a begépelt karakterekkel (ld.  Input/Output átiranyitása)
mkdir alkonyvtar # az alkonyvtar nevű könyvtár létrehozása
cp file1 file2 # létrehozza a file2 fájlt és feltölti azt a file1 tartalmával
cp file1 alkonyvtar # létrehozza az alkonyvtar/file1 útvonalú fájlt és feltölti a file1 tartalmával
ls # a munkakönyvtárunk tartalmának kilistázása
ls -la # az ls parancs hosszú formátummal, és a rejtett (.-tal kezdődő) fájlok listázásával
ls -R # rekurzív lista, vagyis az összes alkönyvtár tartalmát kiírja
mv file2 alkonyvtar # file2 mozgatása az alkonyvtar könyvtárba
cd alkonyvtar # munkakönyvtár váltása
pwd # aktuális munkakönyvtár kiírása
rm file1 file2 # a file1 és a file2 törlése
cd .. # munkakönyvtár váltása eggyel feljebb (konyvtar)
rmdir alkonyvtar # az (üres) alkonyvtar törlése
cd # aktuális könyvtár váltása a home könyvtárra
rmdir konyvtar # ez az utasítás hibát jelez, mert az rmdir utasítás csak üres könyvtárak törlésére szolgál
rm -R konyvtar # ez a helyes megoldás (-R: rekurzív mód), a konyvtar és annak tartalma törlődik

Input/Output átirányítása

utasítás > fájlaz utasítás kimenetét (a képernyő helyett) fájl-ba írja (ha a fájl már létezik, akkor felülírja annak tartalmát)
utasítás >> fájlu.a. mint az előző, de létező fájl esetén annak végéhez csatolja az utasítás kimenetét
utasítás < fájlaz utasítás bemenete (a billentyűzet helyett) a (szöveges) fájl tartalma lesz
parancs1 | parancs2a parancs1 kimenete (a képernyő helyett) a parancs2 bemenete lesz

Példák:

cat# argumentum nélkül az alapértelmezett bemenetet (stdin), vagyis a billentyűzetről beolvasott karaktert az alapértelmezett kimenetre (stdout), vagyis a képernyőre másolja. A folyamatot a <ctrl>+d -vel szakíthatjuk meg (ez általában a bemenet megszakítását jelenti).
cat > hello# az előzőhöz hasonlóan inputként a billentyűzet szolgál, az outputot viszont a hello nevű fájlba irányítjuk. A parancs kiadása után a begépelt karakterek a hello fájlba íródnak (amikor befejeztük az írást, nyomjunk <enter>-t és <ctrl>+d -t!)
cat >> hello# ugyanaz, mint az előző, de nem írjuk felül a hello eddigi tartalmát, hanem ahhoz hozzáírjuk az utasítás kiadása után beírt szöveget.
cat < hello# az output ezúttal az alapértelmezetten adott képernyő, az input viszont a hello nevű fájl. Az eredmény: a hello állomány tartalma megjelenik a képernyőn.
cat hello# Fájlok tartalmának kiíratásához a fájlnevet a cat utasításnál argumentumként is megadhatjuk, vagyis ez az utasítás az előzővel megegyező eredménnyel jár. Több argumentum (fájlnév) esetén a fájlok tartalma egymás után íródik (konkatenáció)
cat hello | wc -l# a wc -l utasítás bemenetéül a cat hello utasítás kimenete szolgál. A wc -l a bemenetében található sorok számát adja, így a teljes utasítás a hello nevű szövegfájlban található sorok számát írja ki.
finger | grep username# ez egy egyszerű alkalmazása a grep utasításnak, amely a bemenetéből (esetünkben a finger utasítás kimenetéből) kiválogatja az argumentumként megadott (reguláris kifejezéssel megadott) mintának (lásd: man grep és man 5 regexp) megfelelő sorokat.

Szövegszerkesztők

vi

Indítsuk el a szövegszerkesztőt a
vi fájlnév
paranccsal, ahol a fájlnév a szerkesztendő fájl neve.

kurzor billentyűk : kurzor mozgatása
i szöveg <esc> : szöveg beszúrása az aktuális pozíciótól
a szöveg <esc> : szöveg beszúrása az aktuális pozíció után
[n]x : n darab karakter törlése*
[n]dw : n darab szó törlése*
[n]x : n darab sor törlése*

* az n elhagyható, ilyenkor a művelet egyszer hajtódik végre.

u : undo
:w! : a fájl mentése
:q! : kilépés (mentés nélkül)
:wq! : mentés, kilépés

További információ:
man vim
vimtutor    ; # tanító segédprogram a vi használatára (amennyiben fel van telepítve, érdemes végigcsinálni)

pico

A pico szövegszerkesztő a pine program használatára készült, ezért a pine-t használók számára ismerős lehet. A

pico fájlnév

paranccsal indíthatjuk el.
A képernyő alsó soraiban fel vannak sorolva a parancsok, használata értelemszerű, viszonylag egyszerű. Segítséget a <ctrl>+g-vel kaphatunk. Kilépni a <ctrl>+x-szel tudunk, amennyiben nincs mentve az állomány, úgy azt felajánlja a program.

fájl hozzáférések, engedélyek

az
ls -la
paranccsal kilistázott sorok valami hasonló karakterekkel kezdődnek:
drwxr-xr-x

Ezeknek jelentése (a teljesség igénye nélkül):
1. karakter :
- : normál fájl
d : könyvtár

2.-4. karakterhármas: a fájl tulajdonosának (user) (a lista harmadik oszlopában lévő felhasználói név) engedélyei
5.-7. karakterhármas: a csoportra (group) vonatkozó engedélyek (a lista negyedik oszlopában feltüntetett felhasználói csoport tagjaira vonatkozik)
8.-10. karakterhármas: bármely, az előző felhasználóktól különböző felhasználó (others) engedélyei

A karakterhármasok az alábbi karakterekből állnak:
r : engedély olvasásra (read)
w : engedély módosításra (write)
x : engedély futtatásra (execute)
- : engedély megtagadva

pl. az
ls -la kimenetében az alábbi sor jelentése:
-rwxr-xr--   1 rgyorgy  stud           97 Feb 18 14:42 sign

A sign nevű fájl tulajdonosa (rgyorgy) olvashatja, írhatja és futtathatja az állományt (nyilván futtatható állományról van szó), a (stud) csoportba tartozó felhasználók csak olvashatják és futtathatják a fájlt, bármely egyéb felhasználó pedig csak olvasási jogosultságokkal rendelkezik.

Az engedélyek megváltoztatására a

chmod [ugoa] [+-=] [rwx] fájl

utasítás szolgál, ahol a u (user), g (group), o (other), a (all, azaz mindhárom) karakterekkel a felhasználókat adjuk meg.
A továbi karakterek jelentése:
+ : jogosultság hozzáadása a megadott felhasználóknak
- : jogosultság elvétele a megadott felhasználóknak
= : jogosultság beállítása a megadott felhasználóknak az r, w, vagy x karakterek által meghatározott értékre
r, w, x : a jogosultság típusa

pl:
chmod ug-x sign      # a tulajdonos és a csoport futtatási jogosultságának elvétele
chmod o=rx sign      # a "külső" felhasználók csak olvasási és futtatási jogosultsággal rendelkezzenek.

vagy:

chmod [nnn] fájl

ahol az n az alábbi módon tevődik össze:
r : 4
w : 2
x : 1
Az adott jogosultság a fenti számok megfelelő összegéből áll.
Az [nnn] első tagja a tulajdonos, a második a csoport, a harmadik pedig a többi felhasználó jogosultságát jelöli.

pl:
chmod 754 sign        # rwxr-xr-- jogosultságnak felel meg.

Ajánlott irodalom


Manuál oldalak (házi feladat: tanulj meg angolul!) Unix manual (man) pages in HTML
Brian W. Kernighan, Rob Pike - A UNIX operációs rendszer, Műszaki Könyvkiadó, 1994
Harley Hahn, Rachel Morgan, Henry McGilton - UNIX: Bevezetés: Könnyen is lehet,Panem, 1996
Harley Hahn, Rachel Morgan, Henry McGilton - UNIX: Haladóknak: Könnyen is lehet, Panem, 1996
Orlando Unix iskola
UNIXhelp for users
Linux Documentation Project


<<