Verzió: 1.2
Ebben a leckében az alábbi parancsokról lesz szó: cd, ls, cp, mv, rm, mkdir, rmdir, pwd, cat, more, head, tail, wc
A Unix rengeteg parancsot és kisebb-nagyobb hasznos segédprogramot tartalmaz; ezek közös jellemzoje, hogy nevük -jóllehet néha nehezen felderítheto módon- utal feladatukra, és valamennyit a Unix parancssorában kell begépelni. (A parancssor elejét a prompt jelzi- ez rendszerint % vagy $ jel a sor elején, de bármi más is lehet, gépenként változik!)
A parancsokat úgy hajtjuk végre, hogy begépeljük a nevüket a parancssorba. A parancs neve után szóközökkel elválasztva kell megadni a paramétereket: ezek határozzák meg közelebbrol, hogy a parancs mit is csináljon. A paraméterek közül azokat amelyek mínusz jellel kezdodnek, ezentúl kapcsolóknak fogjuk hívni, mivel ezekkel lehet bekapcsolni egy parancs különféle üzemmódjait. A kapcsolókból rendszerint egyszerre több is megadható, ilyenkor általában elegendo egy mínusz jelet kiírni és felsorolni utána a kapcsolókat (ezt nem minden rendszer teszi lehetové!). Például az ls -l -a -r parancs megadható így is: ls -alr
Elsosorban PC-n nevelkedett felhasználóknak okozhat kellemetlen meglepetést a Unix szukszavúsága. Mindig csak annyi üzenetet kapunk, amennyit a rendszer elengedhetetlenül szükségesnek tart. Ezért ne lepodjünk meg, ha egy parancs végrehajtása után semmi sem jelenik meg a képernyon: ez azt jelenti hogy a parancs hibátlanul végrehajtódott. A Unix programok sikeres végrehajtás esetén soha nem jeleznek vissza, csak hiba esetén.
A Unix törekszik az egységességre, ennek szellemében minden interaktív parancsból ugyanúgy kell kilépni. (Interaktívnak nevezzük azokat a parancsokat, amelyek futás közben elvárják, hogy begépeljünk nekik valamit.) Tehát ha ki akarunk lépni egy ilyen programból, üssük le a <Ctrl-d> billentyukombinációt.
Ha a parancssorban ütjük le a <Ctrl-d>-t, akkor kijelentkezünk a rendszerbol (néhány gépen ez le van tiltva, helyette a logout parancsot kell használnunk). Ez összhangban van az elozo alapelvvel, mert amikor be vagyunk jelentkezve, valójában egy programot futtatunk (ez a parancsértelmezo, amit shell-nek vagy buroknak hívnak): kijelentkezéskor ebbol a programból lépünk ki.
Ugyancsak alapelv, hogy a kis- és a nagybetuk különbözonek számítanak. Ügyeljünk erre, és lehetoleg semmit ne gépeljük csupa nagybetuvel!
A Unix legfontosabb alapfogalma a fájl. Nem csak programokat és adatokat tárolunk a fájlokban, de a parancsok is futtatható fájlok, sot még a terminálokra is ugyanúgy írunk, mint egy közönséges adatfájlba. Röviden: a Unixban minden fájl.
A fájlnevek maximális hossza általában 255 karakter, és szinte bármilyen karakterbol állhat(nak). Néhány karakternek azonban különleges szerepe van, ezért célszeru a névadáshoz csak az angol ábécé betuit, a számokat, a pontot, valamint a mínusz és az aláhúzás jelet használni. A kis és nagybetuk a fájlnevekben különbözonek számítanak, csakúgy mint a parancsokban. Lehetoleg ne használjuk a nevekben csillagot (*) és elso karakterként pontot.
Az ls (list) parancs megmutatja az aktuális könyvtárban található fájlok neveit. (Az aktuális alkönyvtárunk bejelentkezés után a munkakönyvtár, az un. "home directory". Ide tehetjük a saját dolgainkat, például leveleinket, programjainkat, adatainkat, stb.) A lista alapértelmezés szerint ábécé sorrendben sorolja fel a neveket, de alkalmas kapcsolók segítségével más sorrendet is eloírhatunk. Például az
ls -t
parancs az utolsó módosítás dátuma szerint rendezve listázza ki a fájlok neveit úgy, hogy az utoljára módosított fájl lesz az elso a listán. A -l kapcsoló un. hosszú (long) listát ad:
ls -l -rw-r--r-- 1 owner user 14649 Sep 6 09:54 nevek.txt
A dátum és az ido megadja hogy a nevek.txt nevu fájl mikor volt utoljára módosítva. Az 14649-as szám a fájlban található karakterek számát jelenti. A user a csoport neve, amelyikbe a felhasználó tartozik. Az owner a fájl "tulajdonosát", vagyis annak a felhasználónak az username-jét, aki a fájlt létrehozta. A "-rw-r--r--" kódsorozat a fájl elérési jogát mutatja: ezt a fájlt bárki elolvashatja, de csak a tulajdonos (owner) írhatja. Az elérési jogokról részletesen a második leckében lesz szó.
A kapcsolókból egyszerre több is megadható: például az ls -al parancs kilistázza valamennyi fájlt (all) beleértve azokat is, amelyek neve ponttal kezdodik, hosszú (long) formában.
Azt is eloírhatjuk, hogy csak bizonyos fájlokat listázzon, például az
ls -l *c
kilistázza valamennyi c beture végzodo nevu fájlt. (A * karakter jelentése: "ezen a helyen bármilyen karakter(ek) állhatnak, tetszoleges számban; ez a szám akár nulla is lehet"). Jegyezzük meg, hogy mindig a kapcsolókat (-l) kell elso helyen megadni, és a fájlnevet a másodikon.
A csillaghoz hasonló metakarakter a kérdojel, jelentése "ezen a helyen bármilyen karakter állhat". Így tehát az
ls a???
parancs az összes a betuvel kezdodo, négy karakter hosszúságú fájlt fogja kilistázni.
Az ls parancs alapértelmezésben nem mutatja meg azokat a fájlokat amelyeknek ponttal (.) kezdodik a nevük. Ha ezeket is látni szeretnénk, használjuk a -a kapcsolót:
ls -a
Az mv parancs átnevez (move = mozgat) egy fájlt egy másik névre. Tehát az
mv régi_név új_név
parancs megszünteti a régi_név fájlt és létrehoz helyette egy új_név nevut. Ha az új_név nevu fájl már létezik, akkor felülírja azt a régi_név fájl tartalmával, rendszerint anélkül, hogy megkérdezne minket; komolyan felül akarjuk-e írni az új_név fájlt.
Ha másolatot akarunk készíteni egy fájlról, akkor ezt a cp paranccsal tehetjük meg.
cp eredeti másolat
Ekkor létrejön egy másolat nevu fájl, amely méretben és tartalomban megegyezik az eredeti fájllal.
Ha egy fájlra már nincs szükségünk, letörölhetjük az rm (remove) paranccsal.
rm fájl1 fájl2 fájl3
Ez a parancs letörli a fájl1, fájl2 és fájl3 nevu fájlokat az aktuális alkönyvtárból.
Ha egy fájlt letörlünk vagy felülírunk, akkor az megsemmisül és semmilyen eszközzel sem lehet visszaállítani!
A UNIX hierarchikus felépítésu, ami azt jelenti, hogy a fájlokat könyvtárakban tárolja. Egy könyvtárból alkönyvtárak nyílhatnak, amelyek ugyancsak tartalmazhatnak további fájlokat és alkönyvtárakat, és így tovább. Mindig van egy aktuális könyvtár, ahol éppen dolgozunk (working directory) - ez azt jelenti, hogy a fájlokra vonatkozó parancsok (ls, cp, mv, cat, stb.) az aktuális könyvtárban lévo fájlokra fognak vonatkozni.
Bejelentkezéskor a munkakönyvtárba kerülünk (home directory), de szabadon mozogtatunk az ebbol nyíló alkönyvtárakban sot, esetenként még más felhasználók alkönyvtáraiba is átmehetünk.
Alkönyvtárat az mkdir paranccsal tudunk létrehozni, belelépni pedig a chdir vagy cd paranccsal tudunk. Tehát az alábbi két parancs
mkdir alkonyvtar cd alkonyvtar
létrehoz egy, az aktuális könyvtárból nyíló alkönyvtárat, és bele is lép. Ha paraméterek nélkül adjuk ki a cd parancsot, akkor visszajutunk a home könyvtárba. Ha most kiadjuk az ls -l parancsot, a fájlok listájában az imént létrehozott alkönyvtár is szerepelni fog:
drwxr-xr-x 2 owner group 32 Nov 22 24:32 alkonyvtar
A sor elején szereplo d betu jelzi, hogy alkönyvtárról van szó. A paraméterek nélküli ls parancs által eloállított listáról sajnos nem tudjuk megállapítani, hogy melyik név jelent alkönyvtárat és melyik jelent fájlt.
Az rmdir parancs kitöröl egy alkönyvtárat, ha az üres. Ha a törölni kívánt alkönyvtárban fájlok vannak, azokat az rm paranccsal törölhetjük le. Az
rm -r könyvtár_név
parancs nemcsak a kijelölt könyvtárat törli le, hanem belole nyíló valamennyi könyvtárat és alkönyvtárat is. Így egy mozdulattal eltakaríthatunk egy egész könyvtárstruktúrát, ezért hát legyünk óvatosak!
A gyökér könyvtárnak nincs neve és szülo könyvtára. A / jel jelenti a gyökeret (root), alkönyvtárai pedig az usr, home, stb. a /usr, /home, /stb. hivatkozással érhetok el. Ezt a hivatkozást elérési útvonalnak (pathname) hívják. Ez független attól az alkönyvtártól, amelyikben éppen tartózkodunk. A /usr alkönyvtárnak további alkönyvtárai vannak, például bin, etc, stb. Ezek elérési útvonala /usr/bin, /usr/etc és így tovább.
Ha egy fájlt az aktuális könyvtárból egy másik könyvtárba akarunk másolni vagy mozgatni, meg kell adnunk a cél könyvtár nevét is. Ha a muvelet tárgyát képzo fájl nincs az aktuális alkönyvtárban, akkor arról is meg kell adni, hogy melyik könyvtárban találjuk meg. Az alábbi parancs az aktuális könyvtárban lévo level1 fájlt átmásolja az (aktuális könyvtárból nyíló) mail könyvtárba:
cp level1 mail
A következo példa feltételezi, hogy éppen nem tudjuk, melyik könyvtárban vagyunk, és a gyökérbol nyíló public/news alkönyvtárból szeretnénk "hazamásolni" (a "home directory"-nkba) a last-news nevu fájlt. Íme:
cp /public/news/last-news $HOME
A $HOME jel a munkakönyvtárunk rövid neve, így nem kell kiírnunk az általában tekintélyes hosszúságú (/public/users/dept/staff/.......) munka-könyvtár nevét. Egyes rendszerekben (az un. csh-ban) a $HOME jelnek van egy még rövidebb neve is: a ~ jel. Errol a Shellrol szóló fejezetben lesz szó.
Az aktuális könyvtárnak is van egy rövidített neve, mégpedig a pont (.). A következo parancs a /usr/news/legujabb nevu fájt másolja át oda, ahol éppen tartózkodunk -- vagyis az aktuális alkönyvtárba.
cp /usr/news/legujabb .
Végül két hasznos parancs: ha elfelejtettük hogy éppen melyik alkönyvtárban vagyunk, akkor a pwd (print working directory) paranccsal megtudakolhatjuk, a paraméterek nélküli cd parancs pedig hazavisz minket a munkakönyvtárunkba (home directory).
A legegyszerubb dolog, amit egy szövegfájllal csinálni lehet, hogy tartalmát megjelenítjük a képernyon. Ezt a cat paranccsal érhetjük el.
cat fájl_név
Erre a fájl tartalma megjelenik a képernyon. A cat parancsnak több fájlnevet is átadhatunk, ilyenkor egymás után jeleníti meg a fájlok tartalmát. Ha a szöveg több, mint amennyi egy képernyon elfér, akkor leszalad a képrol. Ilyenkor használjuk a more parancsot.
more fájl_név
A szövegbol most egy képernyonyi rész jelenik meg, a szóköz (space) billentyu lenyomására megmutatja a következo oldalt. Ha nem akarjuk végignézni az egész fájlt, üssük le a q betut vagy a <Ctrl-c>-t.
Egy fájl elso sorait a head programmal lehet megjeleníteni:
head -15 fájl_név
A fájl elso tizenöt sorát listázza ki. Idonként szükséges, hogy ne a fájl elejét, hanem a végét tanulmányozzuk. Ezt a tail paranccsal tehetjük meg, ez a példa a szövegfájl utolsó három sorát mutatja meg:
tail -3 fájl_név
A wc (word count) parancs megszámolja a szövegfájl sorainak, szavainak és karaktereinek számát: eredményül e három számot írja ki a képernyore.
wc fájl_név
A -l kapcsolót megadva csak a sorok számát írja ki, -w esetén csak a szavak számát, -c-re pedig csak a karakterek számát.
A feladatokat lehetoleg mindenki egyénileg oldja meg, és
igyekezzen a felmerülo problémákat a lecke újraolvasásával
és gondolkodással megoldani! Ha nem sikerül, írja meg a
problémát az orlando@mars.sztaki.hu címre!
[Ez a cím már nem létezik! -- a szerk.]
Mindenki saját belátása szerint gyakoroljon, és csak akkor írjon, ha segítségre van szüksége. A gyakran feltett kérdésekre a választ mindenkinek el fogjuk küldeni egy FAQ fájlban.
Elso lépésként hozzunk létre egy egyszeru szövegfájlt! Ezt úgy tehetjük meg, hogy cat bemenetét nem egy fájlból, hanem a terminálról vesszük; kimenetét pedig nem a terminálra küldjük, hanem egy fájlba. (Minthogy a Unix a terminált is fájlnak nézi, ez nem jelent neki különösebb nehézséget.) Az átirányításról egy késobbi leckében lesz szó; most elégedjünk meg annyival, hogy a "proba1" nevu fájl létrehozásához a következot kell begépelnünk a parancssorba:
cat >proba1
Ezután kezdjünk el gépelni; a sor végén üssük le az Entert, írjunk újabb sorokat, stb. Ha meguntuk a gépelést és a fájl létrehozását be akarjuk fejezni, akkor lépjünk ki a parancsból, azaz üssük le a <Ctrl-d> billentyukombinációt.
Most pedig...
************************************************************************* *= =* *= SZERZOI JOGOK =* *= =* *= Ez a dokumentum a Unix operacios rendszer es a szamitogepes =* *= halozatok elterjedeset kivanja elosegiteni, ezert dijmentesen =* *= terjesztheto. Nem szabad azonban a terjesztes soran a szoveget =* *= megvaltoztatni, barmilyen modon megcsonkitani es a szerzoi =* *= jogokra vonatkozo megjegyzest eltavolitani! Sem a dokumentum, =* *= sem annak barmely resze nem hasznalhato fel segedanyagkent vagy =* *= tankonyvkent profitorientalt intezmenyekben vagy tanfolyamokon, =* *= a szerzok elozetes irasbeli engedelye nelkul! =* *= =* *= (C) Csaky Istvan es Mork Peter Miskolc, 1994. januar 19 =* *= =* *************************************************************************