2017. június 1., csütörtök

UNIX parancsok


                          Elso lecke
                          **********

A legfontosabb fajl- es konyvtarkezelo parancsok

Ebben a leckeben az alabbi parancsokrol lesz szo: cd, ls, cp, mv, rm,
mkdir, rmdir, pwd, cat, more, head, tail, wc


A parancsok altalanos szintaxisa
--------------------------------

A Unix rengeteg parancsot es kisebb-nagyobb hasznos segedprogramot
tartalmaz; ezek kozos jellemzoje, hogy nevuk -jollehet neha nehezen
felderitheto modon- utal feladatukra, es valamennyit a Unix parancssoraban
kell begepelni. (A parancssor elejet a prompt jelzi- ez rendszerint % vagy
$ jel a sor elejen, de barmi mas is lehet, gepenkent valtozik!)

A parancsokat ugy hajtjuk vegre, hogy begepeljuk a nevuket a parancssorba.
A parancs neve utan szokozokkel elvalasztva kell megadni a parametereket:
ezek hatarozzak meg kozelebbrol, hogy a parancs mit is csinaljon. A
parameterek kozul azokat amelyek minusz jellel kezdodnek, ezentul
kapcsoloknak fogjuk hivni, mivel ezekkel lehet bekapcsolni egy parancs
kulonfele uzemmodjait. A kapcsolokbol rendszerint egyszerre tobb is
megadhato, ilyenkor altalaban elegendo egy minusz jelet kiirni es
felsorolni utana a kapcsolokat (ezt nem minden rendszer teszi lehetove!).
Peldaul az ls -l -a -r parancs megadhato igy is: ls -alr.

Elsosorban PC-n nevelkedett felhasznaloknak okozhat kellemetlen
meglepetest a Unix szukszavusaga. Mindig csak annyi uzenetet kapunk,
amennyit a rendszer elengedhetetlenul szuksegesnek tart. Ezert ne
lepodjunk meg, ha egy parancs vegrehajtasa utan semmi sem jelenik meg a
kepernyon: ez azt jelenti hogy a parancs hibatlanul vegrehajtodott. A Unix
programok sikeres vegrehajtas eseten soha nem jeleznek vissza, csak hiba
eseten.

A Unix torekszik az egysegessegre, ennek szellemeben minden interaktiv
parancsbol ugyanugy kell kilepni.  (Interaktivnak nevezzuk azokat a
parancsokat, amelyek futas kozben elvarjak, hogy begepeljunk nekik
valamit.) Tehat ha ki akarunk lepni egy ilyen programbol, ussuk le a
Ctrl+D billentyukombinaciot.

Ha a parancssorban utjuk le a Ctlr+D-t, akkor kijelentkezunk a rendszerbol
(nehany gepen ez le van tiltva, helyette a logout parancsot kell
hasznalnunk). Ez osszhangban van az elozo alapelvvel, mert amikor be
vagyunk jelentkezve, valojaban egy programot futtatunk (ez a
parancsertelmezo, amit shell-nek vagy buroknak hivnak): kijelentkezeskor
ebbol a programbol lepunk ki.

Ugyancsak alapelv, hogy a kis- es a nagybetuk kulonbozonek szamitanak.
Ugyeljunk erre, es lehetoleg semmit ne gepeljuk csupa nagybetuvel!

Fajlok
------

A Unix legfontosabb alapfogalma a fajl. Nem csak programokat es adatokat
tarolunk a fajlokban, de a parancsok is futtathato fajlok, sot meg a
terminalokra is ugyanugy irunk, mint egy kozonseges adatfajlba. Roviden: a
Unixban minden fajl.

A fajlnevek maximalis hossza altalaban 255 karakter, es szinte barmilyen
karakterbol allhatnak. Nehany karakternek azonban kulonleges szerepe van,
ezert celszeru a nevadashoz csak az angol abece betuit, a szamokat, a
pontot, valamint a minusz es az alahuzas jelet hasznalni. A kis es
nagybetuk a fajlnevekben kulonbozonek szamitanak, csakugy mint a
parancsokban. Lehetoleg ne hasznaljuk a nevekben csillagot (*) es elso
karakterkent pontot.

Listazas
--------

Az ls (list) parancs megmutatja az aktualis konyvtarban talalhato fajlok
neveit. (Az aktualis alkonyvtarunk bejelentkezes utan a munkakonyvtar, az
un. "home directory". Ide tehetjuk a sajat dolgainkat, peldaul
leveleinket, programjainkat, adatainkat, stb.) A lista alapertelmezes
szerint abece sorrendben sorolja fel a neveket, de alkalmas kapcsolok
segitsegevel mas sorrendet is eloirhatunk. Peldaul az

ls -t

parancs az utolso modositas datuma szerint rendezve listazza ki a fajlok
neveit ugy, hogy az utoljara modositott fajl lesz az elso a listan. A -l
kapcsolo un. hosszu (long) listat ad:

ls -l

-rw-r--r--   1 owner     user       14649 Sep  6 09:54 nevek.txt

A datum es az ido megadja hogy a nevek.txt nevu fajl mikor volt utoljara
modositva. Az 14649-as szam a fajlban talalhato karakterek szamat jelenti.
A user a csoport neve, amelyikbe a felhasznalo tartozik. Az owner a fajl
"tulajdonosat", vagyis annak a felhasznalonak az username-jet, aki a fajlt
letrehozta. A "-rw-r--r--" kodsorozat a fajl eleresi jogat mutatja: ezt a
fajlt barki elolvashatja, de csak a tulajdonos (owner) irhatja. Az eleresi
jogokrol reszletesen a masodik leckeben lesz szo.

A kapcsolokbol egyszerre tobb is megadhato: peldaul az ls -al parancs
kilistazza valamennyi fajlt (all) beleertve azokat is, amelyek neve
ponttal kezdodik, hosszu (long) formaban.

Azt is eloirhatjuk, hogy csak bizonyos fajlokat listazzon, peldaul az

ls -l *c

kilistazza valamennyi c beture vegzodo nevu fajlt. (A * karakter
jelentese: "ezen a helyen barmilyen karakter(ek) allhatnak, tetszoleges
szamban; ez a szam akar nulla is lehet"). Jegyezzuk meg, hogy mindig a
kapcsolokat (-l) kell elso helyen megadni, es a fajlnevet a masodikon.

A csillaghoz hasonlo metakarakter a kerdojel, jelentese "ezen a helyen
barmilyen karakter allhat". Igy tehat az

ls a???

Parancs az osszes a betuvel kezdodo, negy karakter hosszusagu fajlt fogja
kilistazni.

Az ls parancs alapertelmezesben nem mutatja meg azokat a fajlokat
amelyeknek ponttal (.) kezdodik a nevuk. Ha ezeket is latni szeretnenk,
hasznaljuk a -a kapcsolot:

ls -a

Masolas, torles es atnevezes
----------------------------

Az mv parancs atnevez (move = mozgat) egy fajlt egy masik nevre. Tehat az

mv regi_nev uj_nev

parancs megszunteti a regi_nev fajlt es letrehoz helyette egy uj_nev
nevut. Ha az uj_nev nevu fajl mar letezik, akkor felulirja azt a regi_nev
fajl tartalmaval, rendszerint anelkul, hogy megkerdezne minket; komolyan
felul akarjuk-e irni az uj_nev fajlt.

Ha masolatot akarunk kesziteni egy fajlrol, akkor ezt a cp paranccsal
tehetjuk meg.

cp eredeti masolat

Ekkor letrejon egy masolat nevu fajl, amely meretben es tartalomban
megegyezik az eredeti fajllal.

Ha egy fajlra mar nincs szuksegunk, letorolhetjuk az rm (remove)
paranccsal.

rm fajl1 fajl2 fajl3

Ez a parancs letorli a fajl1, fajl2 es fajl3 nevu fajlokat az aktualis
alkonyvtarbol.

+-------------------------------------------------------------------------+
| FONTOS! Ha egy fajlt letorlunk vagy felulirunk, akkor az megsemmisul es |
| semmilyen eszkozzel sem lehet visszaallitani!                           |
+-------------------------------------------------------------------------+

Konyvtarak
----------

A UNIX hierarchikus felepitesu, ami azt jelenti, hogy a fajlokat
konyvtarakban tarolja. Egy konyvtarbol alkonyvtarak nyilhatnak, amelyek
ugyancsak tartalmazhatnak tovabbi fajlokat es alkonyvtarakat, es igy
tovabb.  Mindig van egy aktualis konyvtar, ahol eppen dolgozunk (working
directory) - ez azt jelenti, hogy a fajlokra vonatkozo parancsok (ls, cp,
mv, cat, stb.) az aktualis konyvtarban levo fajlokra fognak vonatkozni.

Bejelentkezeskor a munkakonyvtarba kerulunk (home directory), de szabadon
mozogtatunk az ebbol nyilo alkonyvtarakban sot, esetenkent meg mas
felhasznalok alkonyvtaraiba is atmehetunk.

Alkonyvtarat az mkdir paranccsal tudunk letrehozni, belelepni pedig a
chdir vagy cd paranccsal tudunk. Tehat az alabbi ket parancs

mkdir alkonyvtar
cd alkonyvtar

letrehoz egy, az aktualis konyvtarbol nyilo alkonyvtarat, es bele is lep.
Ha parameterek nelkul adjuk ki a cd parancsot, akkor visszajutunk a home
konyvtarba. Ha most kiadjuk az ls -l parancsot, a fajlok listajaban az
iment letrehozott alkonyvtar is szerepelni fog:

drwxr-xr-x  2  owner  group  32  Nov 22 24:32  alkonyvtar

A sor elejen szereplo d betu jelzi, hogy alkonyvtarrol van szo. A
parameterek nelkuli ls parancs altal eloallitott listarol sajnos nem
tudjuk megallapitani, hogy melyik nev jelent alkonyvtarat es melyik jelent
fajlt.

Az rmdir parancs kitorol egy alkonyvtarat, ha az ures. Ha a torolni kivant
alkonyvtarban fajlok vannak, azokat az rm paranccsal torolhetjuk le. Az rm
-r konyvtar_nev parancs nemcsak a kijelolt konyvtarat torli le, hanem
belole nyilo valamennyi konyvtarat es alkonyvtarat is. Igy egy mozdulattal
eltakarithatunk egy egesz konyvtarstrukturat, ezert hat legyunk ovatosak!

A gyoker konyvtarnak nincs neve es szulo konyvtara. A / jel jelenti a
gyokeret (root), alkonyvtarai pedig az usr, home, stb. a /usr, /home /stb.
hivatkozassal erhetok el. Ezt a hivatkozast eleresi utvonalnak (pathname)
hivjak. Ez fuggetlen attol az alkonyvtartol, amelyikben eppen
tartozkodunk. A /usr alkonyvtarnak tovabbi alkonyvtarai vannak, peldaul
bin, etc, stb. Ezek eleresi utvonala /usr/bin, /usr/etc es igy tovabb.

Ha egy fajlt az aktualis konyvtarbol egy masik konyvtarba akarunk masolni
vagy mozgatni, meg kell adnunk a cel konyvtar nevet is. Ha a muvelet
targyat kepzo fajl nincs az aktualis alkonyvtarban, akkor arrol is meg
kell adni, hogy melyik konyvtarban talaljuk meg. Az alabbi parancs az
aktualis konyvtarban levo level1 fajlt atmasolja az (aktualis konyvtarbol
nyilo) mail konyvtarba:

cp level1 mail

A kovetkezo pelda feltetelezi, hogy eppen nem tudjuk, melyik konyvtarban
vagyunk, es a gyokerbol nyilo public/news alkonyvtarbol szeretnenk
"hazamasolni" (a "home directory"-nkba) a last-news nevu fajlt. Ime:

cp /public/news/last-news $HOME

A $HOME jel a munkakonyvtarunk rovid neve, igy nem kell kiirnunk az
altalaban tekintelyes hosszusagu (/public/users/dept/staff/.......) munka-
konyvtar nevet. Egyes rendszerekben (az un. csh-ban) a $HOME jelnek van
egy meg rovidebb neve is: a ~ jel. Errol a shellrol szolo fejezetben lesz
szo.

Az aktualis konyvtarnak is van egy roviditett neve, megpedig a pont (.).
A kovetkezo parancs a /usr/news/legujabb nevu fajt masolja at oda, ahol
eppen tartozkodunk -- vagyis az aktualis alkonyvtarba.

cp /usr/news/legujabb .

Vegul ket hasznos parancs: ha elfelejtettuk hogy eppen melyik
alkonyvtarban vagyunk, akkor a pwd (print working directory) paranccsal
megtudakolhatjuk, a parameterek nelkuli cd parancs pedig hazavisz minket a
munkakonyvtarunkba (home directory).

Muveletek szovegfajlokkal
-------------------------

A legegyszerubb dolog, amit egy szovegfajllal csinalni lehet, hogy
tartalmat megjelenitjuk a kepernyon. Ezt a cat paranccsal erhetjuk el.

cat fajl_nev

Erre a fajl tartalma megjelenik a kepernyon. A cat parancsnak tobb
fajlnevet is atadhatunk, ilyenkor egymas utan jeleniti meg a fajlok
tartalmat. Ha a szoveg tobb, mint amennyi egy kepernyon elfer, akkor
leszalad a keprol. Ilyenkor hasznaljuk a more parancsot.

more fajl_nev

A szovegbol most egy kepernyonyi resz jelenik meg, a szokoz (space)
billentyu lenyomasara megmutatja a kovetkezo oldalt. Ha nem akarjuk
vegignezni az egesz fajlt, ussuk le a q betut vagy a Ctrl+C-t.

Egy fajl elso sorait a head programmal lehet megjeleniteni:

head -15 fajl_nev

A fajl elso tizenot sorat listazza ki. Idonkent szukseges, hogy ne a fajl
elejet, hanem a veget tanulmanyozzuk. Ezt a tail paranccsal tehetjuk meg,
ez a pelda a szovegfajl utolso harom sorat mutatja meg:

tail -3 fajl_nev

A wc (word count) parancs megszamolja a szovegfajl sorainak, szavainak es
karaktereinek szamat: eredmenyul e harom szamot irja ki a kepernyore.

wc fajl_nev

A -l kapcsolot megadva csak a sorok szamat irja ki, -w eseten csak a
szavak szamat, -c -re pedig csak a karakterek szamat.

Feladatok
---------

A feladatokat lehetoleg mindenki egyenileg oldja meg, es igyekezzen a
felmerulo problemakat a lecke ujraolvasasaval es gondolkodassal megoldani!
Ha nem sikerul, irja meg a problemat az orlando@mars.sztaki.hu cimre!

* A FELADATOK MEGOLDASAT NEM KELL BEKULDENI!!!!

Mindenki sajat belatasa szerint gyakoroljon, es csak akkor irjon, ha
segitsegre van szuksege. A gyakran feltett kerdesekre a valaszt
mindenkinek el fogjuk kuldeni egy FAQ fajlban.

Elso lepeskent hozzunk letre egy egyszeru szovegfajlt! Ezt ugy tehetjuk
meg, hogy cat bemenetet nem egy fajlbol, hanem a terminalrol vesszuk;
kimenetet pedig nem a terminalra kuldjuk, hanem egy fajlba. (Minthogy a
Unix a terminalt is fajlnak nezi, ez nem jelent neki kulonosebb
nehezseget.) Az atiranyitasrol egy kesobbi leckeben lesz szo; most
elegedjunk meg annyival, hogy a "proba1" nevu fajl letrehozasahoz a
kovetkezot kell begepelnunk a parancssorba:

 cat >proba1

Ezutan kezdjunk el gepelni; a sor vegen ussuk le az Entert, irjunk ujabb
sorokat, stb. Ha meguntuk a gepelest es a fajl letrehozasat be akarjuk
fejezni, akkor lepjunk ki a parancsbol, azaz ussuk le a Ctrl+D
billentyukombinaciot.

Most pedig...

1. Hozzunk letre a "proba1" fajlbol egy-egy masolatot "proba2" es
   "probalkozas" neven!

2. Hozzunk letre egy "masik1" nevu fajlt a fent ismertetett modon!
   (Azaz a cat paranccsal.) Irjunk bele valami mast, mint amit
   a proba1-be irtunk!

3. A "masik1" fajlbol keszitsunk masolatot "masik-file" neven!

4. Listazzuk ki proba1 es masik1 fajlt, egyetlen cat paranccsal!

5. Ismeteljuk meg az elozo parancsot ugy, hogy kimenetet atiranyitjuk egy
   nagy_file nevu fajlba, a > jel segitsegevel! Hany sort, hany karaktert
   es hany szot tartalmaz az igy letrejott fajl? (Meg a nagyon-nagyon
   kezdok se manualisan szamoljak meg!)

6. Nezzuk meg, hogy most milyen fajlok vannak az alkonyvtarunkban!

7. Ellenorizzuk le, hogy csakugyan a "home directory"-ban vagyunk-e?
   Ha nem, akkor terjunk vissza oda!

8. Hozzunk letre egy "proba" es egy "masik" nevu alkonyvtarat a
   munkakonyvtarunkbol nyiloan!

9. Valamennyi "proba"-val kezdodo fajlt mozgassunk a "proba" alkonyvtarba,
   a "masik"-kal kezdodoeket pedig a "masik" alkonyvtarba (hasznaljuk a *
   karaktert)!

10. Lepjunk vissza a munkakonyvtarunkba (home directory) es adjuk ki
    az ls -R (nagy R betuvel!) parancsot!  Mit tapasztalunk?

11. Lepjunk be valamelyik altalunk letrehozott alkonyvtarba (proba vagy
    masik) es listazzuk ki az ott talalhato fajlok tartalmat a kepernyon!
    Hogyan lehet egyetlen paranccsal valamennyi fajl tartalmat kilistazni?

Kellemes buheralast kivan mindenkinek:

                            Csaky Istvan & Mork Peter





                            Masodik lecke
                            *************

Verzioszam: 1.1

Ebben a leckeben a kovetkezo parancsokrol lesz szo: chmod, file, ln, du

Mi van meg a fajlrendszerben ?
------------------------------

Az elso lecken valo atvergodes utan mindenki verbeli Unix buheratornak
kepzelheti magat, de sajnos ez nem igy van. A Unix fontos tulajdonsaga,
hogy tobbfelhasznalos (multiuser), tehat biztositania kell, hogy a
felhasznalok egymas fajljaihoz ne nyulhassanak hozza. Ennek elerese
erdekeben talaltak ki a Unix alkotoi a fajleleresi jogokat (file
permissions). Ennek az a lenyege, hogy a tulajdonos (user vagy owner)
kontrollalja azt, hogy ki ferhet hozza az altala a gepen elhelyezett
fajlokhoz, konyvtarakhoz.

A Unix lehetoseget biztosit arra is, hogy felhasznaloi csoportok tagjai
fajlokat megosszanak egymas kozott, es a kozos fajlok lehetnek a csoport
(es nem egyetlen felhasznalo) tulajdonaban.

Harom fele fajleleresi jog letezik: olvasasi (read), irasi (write) es
futtatasi (execute).

Ezeket a jogokat harom osztalyba osztva adhatjuk meg: magunkra (user,
owner), a csoportunkra (group) es mindenki masra (world, others) nezve.

* Az olvasasi jog lehetove teszi, hogy a felhasznalo a fajl tartalmat
  megnezhesse, konyvtarak eseten pedig, hogy azt kilistazhassa (ls parancs).

* Az irasi jog a felhasznalo szamara engedelyezi a fajlok irasat,
  modositasat, konyvtarak eseteben pedig uj fajlok letrehozasat es a regiek
  torleset.

* Vegul a futtatasi jog lehetove teszi a programok, burokprogramok (shell
  script-ek - amennyiben a fajl egy program) - futtatasat; konyvtarak eseten
  az oda valo belepest (cd parancs).

Hogy is nez ez ki a valosagban?

Itt az ideje, hogy ezt konkretan is lassuk: listazzuk ki a konyvtarunkat
(ls parancs; a "-l" es a "-g" kapcsolokkal, igy kilistazzuk a fajleleresi
engedelyeket es a felhasznalo csoportjat is):

woland> ls -lg
-rw-r--r-- 1 csaky student 6242 Aug 28 1992 applied.rtf
woland>

Megjegyzes: Egyes Unix valtozatoknal (System V alapuak) elegendo csak a -l
kapcsolo hasznalata.

A legelso mezo mutatja a fajleleresi jogokat. (Mezokon egymastol
szokozokkel elvalasztott karaktersorozatokat ertunk.) A harmadik a fajl
tulajdonosat, a negyedik pedig azt, hogy a felhasznalo milyen csoportba
tartozik. Az utolso mezo pedig a fajlnev.

Tehat a fajl tulajdonosa egy csaky nevu felhasznalo, aki a student
csoportba tartozik, a "-rw-r--r--" pedig a jogokat jelenti a tulajdonos, a
csoport, vegul pedig mindenki mas szamara.

Az elso karakter ("-") a fajl tipusat jeloli. A "-" azt jelenti, hogy ez
egy "sima" fajl (nem konyvtar, stb.). A kovetkezo harom karakter "rw-"
jelentese, hogy a tulajdonos (jelen esetben csaky) olvashatja es irhatja a
fajlt, de nem futtathatja. Ez igy van jol, mivel ez a fajl nem program,
igy nincs is nagyon ertelme futtatni.

A kovetkezo harom karakter, "r--", a csoportra vonatkozo jogokat
definialja. E szerint a student csoportba tartozo felhasznalok olvashatjak
a fajlt, amint ezt a kis "r" betu mutatja.

Az utolso harom karakter "r--" jelentese pedig az, hogy az elobbiekben
felsoroltakon (owner, group) kivul esok is olvashatjak a fajlt.

Fontos itt megjegyezni, hogy az egyes fajleleresi jogok fuggnek annak a
konyvtarnak az eleresi jogatol is, amelyben megtalalhatoak. Peldaul, meg
ha egy fajl eleresi joga -rwxrwxrwx (tehat mindenki mindent csinalhat
vele), masok nem ferhetnek hozza, ha a konyvtar amiben van, tiltja az
olvasasi es futtatasi jogokat. Tehat a legegyszerubb modja annak, hogy
fajljainkat masok szamara hozzaferhetetlenne tegyuk az, hogy a
munkakonyvtarunk hozzaferesi jogait "-rwx------"-ra allitjuk: igy senkinek
sem lesz hozzaferese se a munkakonyvtarunkhoz, se pedig ahhoz ami benne
van.

Az eleresi jogok megvaltoztatasa
--------------------------------

Az eleresi jogok megvaltoztatasa a chmod paranccsal lehetseges a
tulajdonos szamara. Szintaxisa pedig:

chmod [augo][+-][rwx] fajlnev...

Lassuk, hogyan kell ertelmezni egy ilyen szintaxis leirast! Az elso szo
(chmod) nyilvan a parancs neve. Utana kovetkeznek a kapcsolok (lasd: elso
lecke!). A szintaxisban egyszerre felsoroljak az osszes lehetseges
kapcsolot; a zarojelben levo kapcsolok kozul meg lehet adni egyszerre
egyet vagy tobbet is. A fajlnev utani harom pont azt jelenti, hogy egy
sorban tobb fajlnevet is megadhatunk, ilyenkor a Unix mindegyik megadott
fajlra vegrehajtja a parancsot.

Az [augo] kapcsolokkal irjuk elo, hogy kinek adjuk a jogot. Adhatunk
jogokat a tulajdonosnak (u - user), a csoportnak (g - group), masoknak (o
- others) vagy pedig mindenkinek egyszerre (a - all). A [+-] azt jelenti,
hogy adhatunk (+) vagy elvehetunk (-) jogokat. Vegul pedig, hogy olvasasi
(r - Read), irasi (w - Write) vagy futtatasi (eXecute) jogot adunk. Nehany
pelda:

chmod a+r applied.rtf      - olvasasi jog mindenki szamara
chmod +r applied.rtf       - ugyanaz, mivel az alapertelmezes az "all"
chmod go-rwx applied.rtf   - a tulajdonoson kivul senkinek semmi

Termeszetesen az igazi Unix buheratorok nem igy valtoztatjak meg az
elerese jogokat, hanem egy szam megadasaval. Peldaul:

chmod 644 applied.rtf

Ennek a parancsnak a hatasara az applied.rtf nevu fajl eleresi joga
"-rw-r--r--"-ra valtozik.

Ez a megadasi mod sem bonyolult: az olvasasi jog szama 4, az irase 2, a
futtatase pedig 1. Ha ezeket osszeadjuk, akkor megkapjuk a szamot, amit be
kell irnunk. Termeszetesen ez csak egyetlen szam, a jogokat pedig a
parancsnak ennek a valtozataban mind harom osztaly szamara be kell
allitanunk. Tehat "rw-" a tulajdonosnak az 4+2 = 6, "r--" a csoportnak az
4 es "r--" mindenki masnak az 4; egyutt 644.

Tovabbi fontos parancsok
------------------------

Mint lathattuk, egy fajlra be lehet allitani a futtatasi jogot is, de
elofordulhat olyan eset, amikor nem tudjuk, hogy egy fajl program-e vagy
sem. Ilyenkor segit a file parancs, ami megprobalja megallapitani egy
fajlrol, hogy az milyen tipusu (vajtfuluek szamara altalaban a gep tipusat
is elarulja). Ezt ugy teszi, hogy a fajl elso parszaz karakteret beolvassa
es az alapjan a fajlt megprobalja besorolni az altala ismert kategoriakba.
Az en gepem (NeXT) peldaul a kovetkezo altalanos kategoriakat ismeri:
adat, ASCII szoveg, C nyelvu forraskod, FORTRAN forraskod, assembler
forraskod, troff kimeneti fajl, shell script (ejtese: szkript), C-shell
script, futtathato program.

Lassunk egy peldat:

woland> file *
d2u.c: c program text
keybind.c: c program text
life: Mach-O executable
life.c: c program text
life.dat: ascii text
life1.dat: ascii text
slice.c: c program text
trans.c: c program text
unarj: directory
woland>

Ezen a konyvtaron lathato, hogy egy programozo fajljait rejti, aki C-ben
vegzi munkait. A life program, ami a life.c c-program forditasa, adatait
valoszinuleg a life.dat es a life1.dat fajlokbol veszi, mivel ezek sima
szoveget tartalmaznak.

Linkek
------

Van olyan eset, amikor az ls -l parancs igencsak furcsa dolgot ir ki,
peldaul:

lrwxrwxrwx 1 root 18 Dec 14 02:27 LocalApps -> /HD/NextStuff/Apps/@

Ez az eddig szamunkra teljesen ismeretlen dolog a link. A link arra jo,
hogy egy fajlnak tobb neve legyen, esetenkent kulon konyvtarban. A fenti
peldaban azt, hogy a fajl (esetunkben konyvtar) link, onnan tudhato, hogy
a neveben egy kis nyil van es utana a hely, ahol a valodi fajl talalhato.
Tehat a LocalApps a /HD/NextStuff/Apps alteregoja. Ezt a fajta linket
szimbolikus (symbolic vagy soft) linknek nevezzuk. (Ha az ls paranccsal
nem hosszu listat kerunk, akkor csak a LocalApps nevet fogjuk latni).

A link masik fajtaja a hard link, aminek bar funkcioja ugyanaz, az
operacios rendszer maskepp kezeli. Ennel a fajtaju linknel nem lehet
kideriteni (illetve nagyon nehezen) azt, hogy melyik fajlra mutat, es az
eredeti fajl tulajdonosa lesz az uj fajl tulajdonosa is.

Linkeket az ln paranccsal hozhatunk letre (a forras- es celnev
termeszetesen konyvtar is lehet):

ln [ -s ] forrasnev celnev

Az ln kapcsolok nelkul hard linket keszit, ha pedig megadjuk az "-s"
kapcsolot, akkor szimbolikus linket.

Peldaul:

Hard link keszitese:

woland> ls -l egy
-rw-r--r-- 1 csaky student 12 Aug 5 14:20 egy
woland> ln egy ketto
woland> ls -lg egy ketto
-rw-r--r-- 2 csaky student 12 Aug 514:20 egy
-rw-r--r-- 2 csaky student 12 Aug 5 14:21 ketto

(Most mar ezt is elaruljuk: a masodik mezo jelenti a fajlra mutato hard
linkek szamat.)

Most az egy es a ketto ugyanaz a fajl - tehat, ha az egyiket modositjuk a
masik is modosul, mivel csak a nev mas, a fajl ugyanaz. Ugy is
felfoghatjuk, hogy egy fajlnak egyszerre ket neve is van.

Soft, avagy szimbolikus link keszitese:

woland> ln -s egy ketto
woland> ls -lg ketto
lrwxrwxrwx 1 csaky student 12 Aug 5 14:25 ketto -> egy@

Vegyuk eszre, hogy a fajleleresi jogok kezdo "-" jele most l beture
valtozott. Innen (is) latszik, hogy szimbolikus linkrol van szo.

A linkek torlese termeszetesen a szokasos fajltorles paranccsal (rm)
vegezheto. Torles szempontjabol donto kulonbseg van a hard linkek es a
soft linkek kozott. Ha letorlunk egy fajlt, amelyre link kapcsolatok
mutattak, akkor a hard linkkel letrehozott uj fajl tovabbra is megmarad es
tartalma megegyezik a letorolt fajleval. A soft linkkel letrehozott
fajlnev ugyan megmarad, de ha olvasni probalunk a fajlbol, akkor
hibauzenetet kapunk.

Mire jok a linkek? Peldaul szeretnenk, hogy ugyanaz a fajl egyszerre tobb
helyen is lathato legyen, de megse kelljen belole annyi darab masolatot
kesziteni, ahany helyen szukseg van ra. Egy egeszen egyszeru alkalmazas: e
tanfolyam szervezese soran a jelentkezok e-mail cimeit egy .addressbook
nevu fajlban tartjuk. Ez a nev (egy Unix buherator szamara) meglehetosen
hosszu, de nem valtoztathatjuk meg, mert akkor nem talalna meg a
levelezoprogram. Mivel eleg gyakran kell nezelodnunk ebben a fajlban, egy
szimbolikus link segitsegevel letrehoztunk egy cim nevu linket; ezutan
valamennyi parancsban a cim nevet is hasznalhatjuk a .addressbook helyett.

Mennyi helyet foglalunk a lemezen?
----------------------------------

Nagyon hasznos dolog ha tudjuk, hogy mennyi a fajljaink altal elfoglalt
diszkterulet. A Unixban termeszetesen mindenre van parancs, ez esetunkben
a du.

Szintaxisa:

du [ -a ] [ -s ] konyvtarnev

Pelda:

woland> du $HOME
10  /Users/student/csaky/.NeXT/services
2   /Users/student/csaky/.NeXT/Colors
1   /Users/student/csaky/.NeXT/.NextTrash
..
..
..
2    /Users/student/csaky/mail
6003 /Users/student/csaky/pin-ups
6798 /Users/student/csaky
woland>

Az eredmeny szerint csaky felhasznalo eleg sok helyet foglal: 6798
kilobajtot (a du kilobajtban adja az eredmenyt) azaz majdnem 7 megabajtot.
Ennek nagyreszet azonban a pin-up alkonyvtarban talalhato izleses aktfotok
teszik ki (ami nem feltetlenul resze programozoi munkajanak).

Az "a" kapcsoloval azt lehet beallitani, hogy a du minden fajlunkrol adjon
informaciot, ne csak a konyvtarakrol. Az "s" kapcsolo pedig arra valo,
hogy du csak egyetlen szamot irjon ki, a teljes helyfoglalast.

woland> du -s $HOME
6798
woland>

Melyik konyvtarban mi van?
-------------------------

A Unixban igencsak szerteagazo es kiterjedt konyvtarszerkezetet talalunk.
Van nehany konyvtar, amelyet hagyomanyosan ugyanugy hivnak minden Unix
valtozatban, es a bennuk talalhato programok es adatfajlok is ugyanahhoz a
temahoz kapcsolodnak. Peldaul:

/          A konyvtarstruktura gyokere (root directory), minden mas konyvtar
           innen nyilik, illetve itt talalhato a vmunix (vagy unix) nevu
           futtathato program, ami nem mas, mint az operacios rendszer magja
           (kernel).

/bin       Binaris programok konyvtara, itt vannak a legfontosabb vegrehajthato
           programok (binaris formaban).

/dev       Itt vannak az eszkozfajlok (terminalok, diszkek,
           CD ROM olvasok, stb.)

/etc       Egyeb rendszerfajlok, rendszerint a rendszeradminisztracios fajlok.
           A legtobb esetben itt van a jelszavakat tarolo fajl is.

/lib       Fontosabb fuggvenykonyvtarak - ezeket csak a programozok hasznaljak.

/tmp       Atmeneti tarolasra szolgalo alkonyvtar. Ezt az alkonyvtarat
           rendszeres idokozonkent torlik, ezert soha ne taroljunk itt semmi
           ertekeset!

/usr       A felhasznaloi fajlrendszer: munkakonyvtarak, stb.

/usr/adm   Rendszeradminisztracios fajlok.

/usr/bin   A felhasznalok altal hasznalatos futtathato binaris fajlok.

/usr/man   Az online dokumentacio, amelyet a man paranccsal tudunk
           megjeleniteni.

/usr/local Egyeb nyilvanos dolgok (hirek, stb.).

/usr/spool Kommunikacios programok munkakonyvtarai.

/usr/spool/mail
           Itt van valamennyi felhasznalo postaladaja (mailbox).
           Elolvasni termeszetesen nem tudjuk mas leveleit, de azt
           megnezhetjuk, hogy valakinek van-e level a postaladajaban.


Feladatok
---------

Ha mar van valamilyen fajlunk -remelhetoleg igen, hiszen az elozo leckebol
tudjuk, hogy hogyan kell csinalni egyet- elkezdhetjuk a munkat. Vigyazat!
A feladatokban tobb izben is szerepel a fajl torlese, ezert keressunk
valami ertektelen fajlt gyakorlatozasaink celjara!

1.  Allitsuk be a munkakonyvtarunk hozzaferesenek jogat egy biztonsagos
    ertekre; (rwxr-xr-x) az ajanlott.

2.  Valtoztassuk meg a kiszemelt fajlunk hozzaferesi jogat "rwxrwxrwx"-re,
    profibbak hasznaljak a jogok szammal torteno megadasat. A beallitott
    jogokat ellenorizzuk le (ls parancs) !

3.  Most valtoztassuk meg a jogokat ugy, hogy csak mi tudjuk olvasni, irni
    es futtatni a fajlt! Ellenorizzuk le a beallitast!

4.  Most valtoztassuk meg a jogokat "-r--------"-ra, azaz olyanra, hogy meg
    mi se tudjuk irni! Most probaljuk meg letorolni a fajlt! Sikerul-e vagy
    sem? Ha igen miert, ha nem miert nem?

5.  Nezzuk meg a fajl tipusat!

6.  Nezzuk meg a /bin/sh fajl tipusat.

7.  Hozzunk letre egy egyszeru szovegfajlt az elso leckeben leirt modon. Az
    igy elkeszitett fajlra csinaljunk egy hard linket "kemeny" neven, es egy
    soft linket "puha" neven! Nezzuk meg (a cat vagy a more segitsegevel),
    hogy csakugyan azonos-e a tartalmuk!

8.  Csinaljuk egy teljes listat, es a listabol allapitsuk meg, hogy a
    "kemeny" es a "puha" fajlok kozul melyik keszult hard linkkel es melyik
    soft linkkel!

9.  Toroljuk most le azt a fajlt, amelyikrol a linket keszitettuk!

10. Nezzuk meg, hogy leteznek-e meg a "kemeny" es a "puha" nevu fajlok! Ha
    igen, probaljuk meg kilistazni tartalmukat a cat paranccsal! Mi tortenik
    es miert?

11. Nezzuk meg, hogy eddigi munkankkal mennyi helyet foglalunk!

  *************************************************************************
  *=                                                                     =*
  *=                           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   =*
  *=                                                                     =*
  *************************************************************************




A Unix mail programja
---------------------

A bejelentkezeskor talalkozhatunk a kovetkezo uzenettel: You have mail.
Ez azt jelzi, hogy valakitol levelet kaptunk. A level elolvasasahoz
gepeljuk be a kovetkezo parancsot:

 mail

Ez megmutatja a postafiokunkban (mailbox) levo leveleket, hogy honnan
erkeztek, mirol szolnak, mikor adtak fel, es a level sorszamat.

* (A mail egyik regebbi valtozataban, a levelek fejlece helyett a program
* kilistazza az osszes levelet. Ez nagyon kellemetlen szokas, mert ha
* hosszu levelunk van, akkor a szoveg eleje lefut a kepernyorol. Ha ilyen a
* mail programunk, akkor hasznaljuk a h parancsot (lasd kesobb), vagy a
* mail helyett a Mail (nagy kezdobetuvel!) nevu programot inditsuk el.

Ezutan megjelenik egy & prompt, ahol az alabbi parancsokat adhatjuk ki:

?           Kilistazza a hasznalhato parancsokat.
nnn         Megmutatja a kepernyon az nnn-dik szamu levelet.
h           Ismet megmutatja beerkezett leveleink fejlec-listajat.
p           Kilistazza az aktualis levelet, vagyis azt, amelyik neve
            elott egy > jel all a felsorolasban. Egy levelet a
            legegyszerubben ugy tehetunk aktualissa, hogy beirjuk a
            sorszamat. Miutan elolvastuk az aktualis levelet, az alabbi
            parancsok egyiket hasznalhatjuk az level kezelesere:

d           Kitorli az aktualis levelet.
s           Elmenti az aktualis levelet az mbox nevu file-ba.
            (Ha a file mar letezik, akkor hozzafuzi.)
s filenev   A levelet a filenev nevu fajlba menti, vagy hozzafuzi, ha
            a fajl mar letezik.
r           Valaszol az aktualis levelre (reply).
q           Kilep a mail programbol es visszater a % prompthoz.

Hogyan kuldjunk levelet valakinek? Tegyuk fel, hogy az illeto username-je
egy_ismeros. Ekkor a legegyszerubb modszer:

mail egy_ismeros

A program megkerdezi hogy mi legyen a level temaja (Subject). Irjunk be
nehany jellemzo szot es ussuk le az enter billentyut. Ezutan irjuk be az
uzenetet; minden sor vegen ussuk le az Enter-t.

Ha befejeztuk a levelet, ussuk le a Ctrl+D billentyukombinaciot. Erre a
program elkuldi a levelet es visszater a prompthoz (%).

Megjegyzes: Hacsak nem vagyunk mazochistak, hasznaljuk valamilyen rendes
levelezoprogramot a mail helyett. Ilyenbol sokfele van (pine, elm, zmlite,
stb.), kerdezzuk meg a rendszeradminisztratort, hogy a gepunkon melyiket
lehet hasznalni.



                          Harmadik lecke
                          --------------

                    "Termeszetes parhuzam el a nok es a Unix shellek kozott.
                     Mindket csoportban vannak egyszeru, csunyacska tipusok
                     (sh) es erettebb, minden igenyt kielegito tipusok (tcsh).
                     (-: Egy igazi buherator termeszetesen az sh-val es az
                     sh-tipusu nokkel is megtalalja a nyelvet! :-)"

                                                                Csaky Istvan

Verzio: 1.0

                           A Unix shell
                           ------------

A cim rem rovid, de e nelkul a program nelkul (a shell valojaban csak egy
program Unix alatt, de a funkcioja kiemeli a tobbi program kozul) a munka
elkepzelhetetlen. Ugyanis ez a program az amelyik elindul amikor beszallunk
egy Unixos rendszerbe, ennek adjuk ki a parancsokat es ez valaszol nekunk.
(Funkcioja hasonlo a DOS command.com-jaehoz). Minden shell egy un.
prompttal jelzi, hogy kesz a parancsok fogadasara (a promptot esetunkben a
"woland>" karaktersorozat jelzi). Shellbol tobb fajta letezik, mivel a
Unix lehetoseget ad belso erzuletunk kifejezesere es nem kot egy megadott
shellhez. Ket fo kategoria van: az un. "Bourne shell" es a "C shell", ezek
neve sh es csh. Nevukon kivul szintaxisukban kulonboznek: a csh a C
programoknal hasznalatos szintaktikat koveti. (En a csh egy kibovitett
valtozatat a tcsh-t hasznalom, termeszetesen az sh-nak is vannak bovitett
valtozatai: a ksh, a bash es a zsh). Hogy ki mit hasznal az teljesen vallas
kerdese - a kulonfele shellek szolgaltatasaikban egyenranguak!

Mint mar korabban olvashattuk, a Unix parancsok nem, vagy nagyon ritkan
jelzik, ha jol mukodnek.  Termeszetesen ez elso latasra furcsan hat,
azonban nagyon is ertelmes magyarazata van. (Sokan szidjak a Unixot
bonyolultsaga miatt, azonban Unixban minden az osszehangoltsagon alapul).
Az, hogy a Unix nem jelzi a hiba nelkuli futast, azert van, hogy a
parancsok be- es kimenetei mas parancsoknak atadhatoak legyenek. A legtobb
program a bemenetrol (standard input - stdin) veszi az adatait es a
kimenetre (standard output - stdout) kuldi az eredmenyt. Azonban
elofordulhat, hogy hiba lep fel es azt a programnak jeleznie kell.
Ilyenkor a hiba leirasat egy mas helyen, a hibacsatornan kapjuk (stderr).
Rendszerint a bemenet a billentyuzet, a kimenet es a hibacsatorna pedig a
kepernyo.

Peldaul: a sort program rendezi a bemenetrol beerkezo sorokat:

woland> sort
gyufa
izzok
csoko
<ctrl-d>
csoko
gyufa
izzok
woland>

Megjegyzes: a <ctrl-d> a control (Ctrl) es a d billentyuk egyuttes
leuteset jelenti!

Igy maris abc-sorrendbe raktuk a bevasarlolistat. Az elet kis dolgaiban is
nyugodtan szamithatunk a Unixra.

A bemenet es a kimenet atiranyitasa
-----------------------------------

Mi tortenik azonban akkor, ha mindig csak ezt a par dolgot vesszuk, ezert
szeretnenk megtartani a listankat? A shell lehetoseget ad arra, hogy a
kimenetet atiranyitsuk (redirection), es ehhez csupan a ">" jelet kell
hogy hasznaljuk. Nezzuk, hogy is mukodik ez.

woland> sort  > mit_vegyek
gyufa
izzok
csoko
<ctrl-d>
woland>

Ugyanezzel a modszerrel - atiranyitas - hoztunk letre fajlt az elso
leckeben (ott a cat parancs kimenetet iranyitottuk at). Az eredmeny nem
lathato, hanem a mit_vegyek nevu fajlba kerult. Nezzuk meg, hogy valoban
ez tortent-e?

woland> cat mit_vegyek
csoko
gyufa
izzok
woland>

A kimenet atiranyitasa csupan ennyi munkankba kerul. Ugyanez vonatkozik a
bemenet atiranyitasara is, ennek jele "<".

Peldaul: csinaljunk egy aruk nevu fajlt, aminek tartalmat rendezzuk:

woland> cat > aruk
izzok
gyufa
csoko
<ctrl-d>
woland>
woland> sort < aruk
csoko
gyufa
izzok
woland>

Fontos jel meg a ">>", ami szinten a kimenet atiranyitasat jelenti;
kulonbseg kozte es a szimpla atiranyitojel kozott annyi, hogy ha ezt
hasznaljuk, a fajl amibe a kimenetet atiranyitjuk, nem irodik felul. Ezzel
a jellel a fajl tartalmahoz tudunk hozzafuzni.

Megjegyzes: Termeszetesen a hibacsatornat is at lehet iranyitani, errol
            bovebben az otodik leckeben olvashatunk majd!

Csovek
------

Arrol mar tudunk, hogy egy-egy program eredmenyet hogy lehet fajlba
iranyitani, azonban lehetoseg van arra, hogy egy program bemenetet egy
masik programtol vegye. Erre talaltak ki Unixban a cso (pipe) fogalmat.
Azt, hogy egy program kimenetet egy masik bemenetere szeretnenk
atiranyitani a "|" jellel jelezzuk.

Vegyunk egy konkret peldat - szeretnenk a munkakonyvtarunkat forditott
abc-sorrendben kinyomtatni. Eddigi tudasunkkal hogyan tudjuk ezt
megvalositani?

woland> ls -l > file_list

(Az igazi buherator csak "bo" konyvtarlistat szeret olvasni.)

Woland> cat file_list
total 8
drwxr-xr-x  2 csaky       1024 Jul 21  1992 Apps
drwxr-xr-x  8 csaky       1024 Oct 19 13:35 Library
drwxr-xr-x  3 csaky       1024 Jul 25  1992 Mailboxes
drwxr-xr-x  2 csaky       1024 Nov  9 19:05 NewFolder
-rw-------  1 csaky          5 Dec  6 16:46 dead.letter
drwx------  2 csaky       1024 Jan 12 11:39 mail
drwxr-xr-x  2 csaky       1024 Jan 17 17:23 pin-ups
drwxr-xr-x  2 csaky       1024 Oct  5 09:02 tabla.draw~
woland> sort +7r < file_list

total 8
drwxr-xr-x  2 csaky       1024 Oct  5 09:02 tabla.draw~
drwxr-xr-x  2 csaky       1024 Jan 17 17:23 pin-ups
drwx------  2 csaky       1024 Jan 12 11:39 mail
-rw-------  1 csaky          5 Dec  6 16:46 dead.letter
drwxr-xr-x  2 csaky       1024 Nov  9 19:05 NewFolder
drwxr-xr-x  3 csaky       1024 Jul 25  1992 Mailboxes
drwxr-xr-x  8 csaky       1024 Oct 19 13:35 Library
drwxr-xr-x  2 csaky       1024 Jul 21  1992 Apps
woland>

A sort kapcsoloi csak azt jelentik, hogy a 8. mezotol kezdjen rendezni
(egyet ki kell vonni a mezo sorszamabol!), es hogy forditva (r - reverse).
A mezo definiciojat a masodik leckeben talalhatjuk meg!

Ezt a cso hasznalataval egy sorban is el lehet intezni, es az eredmeny
ugyanaz:

woland> ls -l | sort +7r

Nagyon jo szolgalatot tesznek a csovek a hosszu konyvtarlistak
nezegetesenel is. Az ls -l | more paranccsal oldalankent nezegethetjuk a
listat, igy az nem fut le a kepernyorol.

Processzek
----------

A Unix egyik fo jellemzoje amellett, hogy tobbfelhasznalos, az, hogy
egyszerre tobb program futtatasara kepes (multitasking). Ezt a lehetoseget
mar a shell hasznalata soran is elvegezhetjuk, tehat, az igazi Unix
buherator nem eli at azt a lealacsonyito erzest, hogy varnia kell egy
program lefutasara ahhoz, hogy egy masikat indithasson.  (Haho MS-DOS!).

A ps paranccsal meg tudjuk nezni, hogy milyen processzeink (programjaink)
futnak.

woland> ps
  PID TT STAT  TIME COMMAND
 3902 p0 S     0:01 -tcsh (tcsh)
woland>

Amint latjuk, most a felhasznalonak csak egy processze fut, megpedig a
shell (tcsh). A listan meg egy nagyon fontos dolog szerepel, a processz
egyedi azonositoja (PID - process ID), esetunkben 3902.

A futo processzt a shell job neven ismeri (a processz es a job ugyanazt
jelentik!). A shell lehetoseget ad a jobok manipulalasara, ezt job
controlnak hivjuk; ami azt jelenti, hogy egyszerre tobb egymastol
kulonbozo dolgot csinalhatunk, es valtogathatjuk, hogy eppen melyik
futasat akarjuk figyelemmel kiserni. Peldaul eppen szerkesztunk egy
programot, de eszunkbe jut, hogy mar meg kellett volna irni egy E-mailt;
erre kinal megoldast a job control.

Eloterben (foreground) es hatterben (background) valo futtatas

A jobok futhatnak eloterben es hatterben, eloterben azonban egyszerre csak
egy job lehet. Az eloterben levo job kapja a bemenetet a billentyuzetrol
es kuldi a kimenetet a kepernyore (hacsak at nem iranyitottuk). A
hatterben futo jobok azonban semmilyen billentyozetrol jovo bemenetet sem
kapnak meg (Vigyazat, mert a kepernyore attol meg irhatnak!)

A hatterben futtatas nagyon jol hasznalhato abban az esetben ha egy olyan
programot futtatunk ami sokaig fut es semmi erdekeset nem produkal (pl.
nagy fajlok tomoritese ez eloterben - csak megrogzott DOS felhasznaloknak
ajanlott). Ebben az esetben nincs ertelme arra varni, hogy a job lefusson,
mikor kozben valami mast is tudnank csinalni (a szamitogeppel). Futtassuk
a hatterben!

A jobok lehetnek felfuggesztett allapotban (suspended); ez azt jelenti,
hogy a jobot egy kis idore megallitjuk. Az ilyen job se az eloterben sem
pedig a hatterben nem fut. Miutan felfuggesztettunk egy jobot, a
futtatasat lehet folytatni tetszes szerint az eloterben, vagy akar a
hatterben. A job ott folytatja a munkat, ahol elozoleg abbahagyta.

Figyelem! Egy job felfuggesztese nem ugyanaz, mint a megszakitasa; ugyanis
megszakitas eseten (ctrl-c) a job mar nem tudja a munkajat folytatni!

Vegyunk egy peldat:

(A yes parancs y karakterek vegtelen sorozatat kuldi a kimenetere.)

woland> yes
y
y
y
y
y

Ez igy menne a vegtelensegig, ha meg nem szakitanank. Ha csak nem az y-ok
vegtelen sorat akarjuk latni (marpedig mi mast szeretnenk csinalni)
iranyitsuk at a kimenetet egy alkalmas helyre: /dev/null - egy un. fekete
lyuk: a beleiranyitott osszes informaciot elnyeli.

woland> yes > /dev/null

Megy ez, de a job meg mindig az eloterben fut. Hogy a hatterbe tegyuk, a
"&" jelet kell alkalmaznunk, ugyanis ez jelzi a Unix szamara azt a
vagyunkat, hogy a jobot a hatterben akarjuk futtani.

woland> yes > /dev/null &
[1] 3954
woland>

Amint latjuk, a shell promptjat visszakaptuk, ket furcsa szammal egyutt.
Mik ezek, es a yes fut-e egyaltalan?

Az [1] a yes processz job szamat jelenti a shell szamara. A shell minden
futo jobhoz rendel egy szamot. Mivel meg csak a yes-t futtatjuk, ezert
annak szama 1. A masik szam a processz azonositoja (PID mezo a ps-ben) - a
processzre mindket szammal utalhatunk.

Nezzuk meg, hogy valoban fut-e a processzunk?

woland> jobs
[1]  + Running              yes > /dev/null
woland>

Igen, a processzunk fut. A ps paranccsal is megbizonyosodhatunk efelol.

woland> ps
  PID TT STAT  TIME COMMAND
 3902 p0 S     0:01 -tcsh (tcsh)
 3954 p0 R     6:00 yes
woland>

Most mar tudunk jobot a hatterbe tenni, de valahogy le is kene allitani,
ha esetleg magatol nem all le (a yes-nel ez nagyon valoszinu). Erre valo a
kill parancs, parametere lehet a job szama vagy pedig a processz
azonositoja.  Hasznaljuk:

woland> kill %1

vagy

woland> kill 3954

A % jellel jelezzuk azt, hogy job szamot adunk meg. Ha processz azonositot
adunk, akkor nincs szukseg masra csak a processz azonositojara. Lassuk, mi
tortent.

woland> jobs
[1]  + Terminated           yes > /dev/null
woland>

Mint lathato, a jobot kilottuk, a kovetkezo job listaban mar nem is fog
szerepelni.

Megjegyzes: Elofordulhat, hogy egy hatterben futo processzt sehogyan sem
tudunk megallitani. Hasznaljuk ilyenkor a "kill -KILL processz szama (vagy
job szama)" , vagy "kill -9 processz szama (vagy job szama)" parancsot (a
ket parancs ekvivalens)! Ez a Unix szamara azt jelenti, hogy mindenkepp
loje ki a processzt.

Van egy masik lehetoseg is arra, hogy egy jobot a hatterben futtassunk,
megpedig az, hogy futasat felfuggesztjuk, majd a hatterbe teve futtatjuk
tovabb.

Inditsuk el:

woland> yes > /dev/null

Majd nyomjuk meg a ctrl-z -t, amivel a job futasat felfuggesztjuk.

woland> yes > /dev/null
<ctrl-z>
Stopped
woland>

A program futasat ezutan mind az eloterben, mind a hatterben
folytathatjuk. Az eloterben valo folytatasra az fg parancs szolgal, a
hatterben futtatasra pedig a bg.

woland> fg
yes > /dev/null
<ctrl-c>
woland> bg
[1]    yes > /dev/null &
woland>

Termeszetesen mind az fg mind a bg parancsnak is megadhatunk job szamot es
igy akar hatterben futo jobokat is vissza lehet hozni az eloterbe es
forditva.

woland> fg %2

vagy az egyszerubb format is hasznalhatjuk:

woland> %2

Egyeb job vezerlo (control) parancsok

Meg ket parancsrol kell ebben a fejezetben beszelnunk: ezek a nohup es az
at. A nohup (jelentese no-hangup) arra szolgal, hogy egy processz azutan
is fusson, miutan mi kiszalltunk a rendszerbol; kulonben a hatterben futo
processzek megallnak.

szintaxisa: nohup <parancs>

Peldaul:

nohup compress nagyon_nagy_program &

Ezutan nyugodtan hazamehetunk, a processz le fog futni es mire masnap
bejovunk, az eredmeny lathato lesz.

Megjegyzes: egyes Unix valtozatokban nincs nohup; az &-el inditott
processzek akkor is tovabb futnak, ha kilepunk.

Az at paranccsal egy programot egy meghatarozott idopontban futtathatunk
(igazi Unix buheratorok nem hasznaljak; ugyis mindig ott vannak a gep
mellett, ugyhogy a kello idoben ok maguk tudjak futtatni az ilyen
programokat). Az at parancsot ugy hasznaljuk, hogy megadjuk az idopontot,
amikor el akarjuk inditani a kerdeses programot, majd leutjuk az entert.
Erre (a legtobb gepen) megjelenik az at> prompt, ahova be kell gepelnunk
az elinditando programok neveit. A listat a ctrl+d leutesevel zarjuk. Ha a
program(ok) futtatasakor nem vagyunk bejelentkezve, akkor a program altal
generalt kimenetet a rendszer E-mailben elkuldi nekunk.

Peldaul:

at 8:00am jan 24
at> csenget
<ctrl+d>

Ennek eredmenyekepp a gep januar 24.-en reggel 8-kor csengetni fog
(felteve ha a csenget program valojaban csenget, nem pedig perverz
leveleket kuld a bejelentkezve levo felhasznaloknak).

Feladatok
---------

1. Nezzuk meg milyen shellunk van (ps).
2. Probaljuk meg kiloni az aktualis shellunket (kill -KILL). Mi tortent?
   Miert?
3. Nezzuk meg az aktualis datumot es idot (date) es tegyuk fel az at
   varolistajara a kovetkezo parancsot: echo "Haho" | Mail -s "greeting"
   orlando@mars.sztaki.hu ugy, hogy az ot perc mulva induljon!

4. Nehez! Fuzzuk ossze a /etc konyvtarban levo fajlokat (cat) es ennek
   kimenetet adjuk at a szabvanyos Unix tomorito programnak (compress), az
   eredmenyt iranyitsuk egy fajlba (kulonben nagyon erdekes Unix elmenyben
   lesz reszunk, mindenfele absztrakt karakterek jelennek meg a kepernyon)!
   Nezzuk meg milyen tomoritesi aranyt sikerult elernunk. (A du es az ls -l
   parancsok segitenek ebben!)

   Most ismeteljuk meg a feladatot a hatterben. Nezzuk meg, hogy fut-e,
   es ha igen, akkor lojuk ki!

11. Nezzuk meg, hogy eddigi munkankkal mennyi helyet foglalunk!

  *************************************************************************
  *=                                                                     =*
  *=                           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   =*
  *=                                                                     =*
  *************************************************************************



                          Negyedik lecke

                                       "Ha mar minden kiserleted csodot mond,
                                        olvasd el a hasznalati utasitast"
                                                                     (Murphy)

Verzio: 1.0

                          Informaciok a Unixrol
                          ---------------------

Egy olyan bonyolult operacios rendszernel, mint amilyen a Unix, nagyon
nagy szerepe van az irasos dokumentacionak. Ez a lecke arrol szol, hogy
hogyan es honnan lehet valaszt kapni a kerdeseinkre.

Angol nyelvu konyvek
--------------------

Az informaciok legfontosabb forrasa a rendszerrel egyutt szallitott
dokumentacio. Minden valamire valo Unixhoz felelmetes mennyisegu es sulyu
dokumentacio erkezik (az irokat alighanem oldalszam szerint fizettek),
ugyhogy ahhoz is kell nemi jartassag, hogy mikor melyik konyvet nyissuk
ki. A "konyvek konyve" a Unix Reference Manual". Ezt tobbnyire az alabbi
fejezetekre osztjak:

1.      A shellbol kiadhato parancsok.
2.      Rendszerhivasok.
3.      A C nyelvu fuggvenykonyvtarak fuggvenyei.
4.      Eszkozkezelo programok (device drivers), adatatviteli formatumok.
5.      Fajlformatumok.
6.      Jatekok es demok.
7.      Barki szamara hozzaferheto fajlok, tablazatok, TROFF makrok.
8.      Rendszeradminisztracios es karbantarto programok.

E nyolc csoporton belul alcsoportokat is megkulonboztetunk. A parancsokra
valo hivatkozasnal zarojelben azt is megadjak, hogy a parancs leirasa
melyik kotetben talalhato: ls(1), stb.

Altalaban a SUN gepek dokumentacioit tartjak legjobbnak, ezert a SUN
dokumentaciot bizonyos esetekben - kihasznalva a Unix hordozhatosagat- mas
gepeknel is hasznalhatjuk.

A rendszer dokumentaciojan kivul a Unixrol szamtalan tovabbi hosszabb
-rovidebb, reszletes es kevesbe reszletes konyvet irtak mar, ezek minden
konyvtarban es konyvesboltban polcokat toltenek meg. Ha tudunk angolul,
biztosan megtalaljuk az izlesunknek, tudasunknak es penztarcanknak
megfelelo konyvet. A sok kozul egy nagyon alapfokut emlitunk meg:

Peter Norton - Harley Hahn: Peter Norton's Guide to Unix (Bantam Books)
(Ez a konyv ugy irodott, hogy a szamitastechnikai analfabetak is megertsek.)

Nagyar nyelvu konyvek
---------------------

Magyar nyelven is megjelent a Unix-biblianak szamito Kernighan-Pike konyv.
Cime:

Brian W. Kernigham - Rob Pike: A Unix operacios rendszer (Muszaki konyvkiado)
Eredeti cime: The Unix programming environment.

Jelenleg is (1994 januar) kaphato Magyarorszagon, ara 800 forint korul
van. Ha komolyan akarunk Unixal foglalkozni, akkor mindenkeppen erdemes
szert tennunk ra, mert hasznos es erdekes konyv, a hirdeteseket leszamitva
mind a 350 oldala fontos dolgokat mondd el a Unixrol. Ez a legjobb magyar
nyelven megjelent konyv a Unixrol, amivel eddig talalkoztunk.

Kepernyon megjelenitheto dokumentacio
-------------------------------------

Minden Unix rendszeren a Reference Manual elso fejezetet felviszik a gepre
is, ahol a man parancs segitsegevel lehet olvasgatni az egyes lapokat. Ha
peldaul kivancsiak vagyunk ra, hogy mit ir a dokumentacio az sh
programrol, adjuk ki a man sh parancsot. Valaszul elonti a kepernyonket az
sh program mindenre kiterjedo, reszletes, es hat-nyolc oldalas leirasa.
(Komoly feladat az ilyen informacioozonbol kikeresni azt az egy mondatot,
amire tortenetesen szuksegunk van.)

A man-ban minden parancs leirasaval egy "lap" (Page) foglalkozik, meg
akkor is, ha egy ilyen lap esetenkent tobb kepernyooldalt tesz ki. Nezzuk
meg egy peldan, hogy a man lapjai milyen cimszavakat tartalmaznak:

zeus% man sh

SH(1)                         Silicon Graphics                         SH(1)

NAME
     sh, rsh - shell, the standard/restricted command programming language

Ez alatt a cimszo alatt egy sorban leirjak, hogy a parancs mit csinal.
Gyakori, hogy a logikailag osszetartozo parancsokat egy lapon
szerepeltetik a dokumentacioban. (Mint peldaul itt is).

SYNOPSIS
     /bin/sh  -acefhiknrstuvx  [ args ]
     /bin/rsh -acefhiknrstuvx  [ args ]

Itt felsoroljak, hogy hogyan lehet parameterezi a a parancsot, milyen
kapcsolokat ismer, stb. (A szogletes zarojelek jelenteserol mar volt szo a
masodik leckeben).

DESCRIPTION
     sh is a command programming language that executes commands read from a
     terminal or a file. sh is a restricted version of the standard command
     interpreter sh; it is used to set up login names and execution

Itt reszletesen is ismertetik, hogy a parancs mit is csinal, hogyan es
mire lehet hasznalni, stb.

OPTIONS

Ez alatt a cimszo alatt talaljuk a parancs kapcsoloinak reszletes
ismerteteset. Probakeppen erdemes megnezni az ls parancs kapcsoloit.

FILES
     /etc/profile
     $HOME/.profile

Itt felsoroljak azokat a fajlokat, amelyeknek valami kozuk van a
parancshoz. (Peldaul a program futas kozben olvas velamelyikbol, adatokat
ment bele, vagy eppen a program mukodeset lehet tartalmukkal befolyasolni.

SEE ALSO
     cd(1), dup(2), echo(1), env(1), exec(2), fork(2), getopts(1),
     getrlimit(2), intro(1), login(1), newgrp(1), pipe(2), profile(4)

Bar elso ranezesre nem latszik, de ez a legfontosabb cimszo. Itt vannak
felsorolva ugyanis azok a parancsok, amelyek kapcsolodnak a cimszoban
emlitett programhoz. Ha a fenti szobeveg atolvasasa utan sem talaltuk meg
azt amit keresunk, akkor nezzuk meg az itt felsorolt parancsokrol szolo
dokumentacio lapokat!

BUGS

Murphy szerint "Mindig marad egy huba" -- a mar felderitett, de ki meg ki
nem javitott hibakat itt soroljak fel.

Megjegyzes: Peter Norton szerint ha megkerdezunk egy Unix buheratort, hogy
            mit adjunk az edesanyanknak anyak napjara, ezt fogja valaszolni:
            "Nyomtasd ki neki az sh-rol szolo fejezetet a man-bol."

A man parnacs fajdalmas tulajdonsaga, hogy a benne tarolt adatok a "mi
mire valo" elv alapjan vannak szervezve, igy egy kezdo, aki arra kivancsi
hogy "mit hogy kell megcsinalni" nehezen boldogul vele. A Unix programozo-
barat es felhasznalo-ellenes szemlelete ketsegkivul a man parancsban
utkozik ki a legelesebben.

A dokumentacio lapjait altalaban a more parancs segitsegevel listazzak ki.
Ilyenkor kereshetunk is a szovegben, ha a --More-- felirathoz egy / jel
utan beirjuk a keresett szot. Ilyenkor a more parancs nem a kovetkezo
oldalt jeleniti meg, hanem elore ugrik a szovegben annyit, hogy a keresett
szot tartalmazo sor a kepernyo legalso soraba keruljon. Jegyezzuk meg
azonban, hogy ezzel a modszerrel csak elorefele lehet keresni!

A whatis parancs segitsegevel egymondatos leirast kaphatunk arrol, hogy a
parameterkent megadott parancs mire valo. A whatis program valojaban nem
csinal mast, mint kiirja a megadott parancs man lapjarol a NAME mezo
tartalmat. Peldaul:

zeus% whatis cat
cat (1)           - concatenate and print files
zeus% whatis love
No manual entries seem appropriate for love.

Mi tortenik olyankor, ha nem arra vagyunk kivancsiak, hogy egy parancs mit
csinal, hanem adva van egy feladat, es azt akarjuk tudni, hogy melyik
paranccsal lehet megoldani ? Nos, ilyenkor legjobb, ha megkerdezunk egy
buheratort. (Egy igazi buherator termeszetesen ezt fogja valaszolni:
"Barmelyikkel!") Nemi tampontot adhat az, hogy a man adatbazisban a -k
kapcsolo segitsegevel parancsnev helyett kereshetunk valamilyen kulcsszot
is:

zeus% man -k 'execution time'
profile(2)      - execution time profile
sprofile(2)     - execution time profile or disjoint text spaces

Ugyanerre valo az apropos parancs:

zeus% apropos close
ALcloseport (3A)        - releases an audio port's resources
endclosedline (3G)      - delimit the vertices of a closed line
CDclose (3)             - closes a CD-ROM device
close (2)               - close a file descriptor
closeobj (3G)           - closes an object definition



                     Otodik lecke

                           "...az igazi programozo szerint az 'azt kapod
                            amit latsz' elv eppen olyan hibas az editoroknal,
                            mint a noknel. Nem, az igazi programozo az
                            'ezt akartad, hat nesze' editort szereti -
                            bonyolultat, titokzatosat, veszelyeset..."

                            (Ed Post: Az Igazi Programozo...)

Verzio: 1.0

Szovegszerkesztes Unix alatt
----------------------------

Egy operacios rendszerben mindennapi feladat, hogy egy szovegfajl
tartalmat meg kell valtoztatnunk. Ezt a celt szolgaljak az editorok. A
Unix szabvanyos editora a vi, amelynek az az elonye, hogy minden rendszeren
megtalalhato. Az elonyok felsorolasat ezzel ki is meritettuk -- mai
szemmel nezve a vi rettenetesen elavult. A grafikus operacios rendszerek
alatt futo szovegszerkesztokkel (Word for Windows, Ami Pro, stb.)
elkenyeztetett felhasznalonak a vi editortol olyan erzese tamad, mintha
kessel es villaval probalna megenni egy tal levest. Ha csak tehetjuk, nagy
ivben keruljuk el a vi-t!

A vi hasznalatanak elkerulesere a kovetkezo strategiakat alkalmazhatjuk:

1. Tobb mas editor is letezik, peldaul emacs, pico, joe. Nezzuk meg a
   dokumentacioban, vagy kerdezzuk meg a rendszeradminisztratortol, hogy
   ezek kozul melyiket lehet hasznalni.

2. Ha valamilyen grafikus munkaallomason dolgozunk, akkor ott kell lennie
   ablakos editornak. A Silicon Graphics gepeken jot a neve, a Sun-okon
   textedit, de biztosan konnyen elerheto helyen van. Ezek azonban csak
   grafikus terminalon futtathatok.

3. Ha PC-rol jelentkezunk be, akkor nagyobb fajlok eseten erdemes un.
   "file transfer" muvelettel athozni a fajlt DOS ala, ott a DOS editorral
   vagy akar valamilyen szovegszerkesztovel elvegezni a szukseges
   muveleteket, a kesz fajlt pedig visszavinni a Unixra. A PC es a Unix
   kozotti fajlatvitelrol szinten az irasos dokumentaciobol, vagy a
   rendszeradminisztratortol szerezhetunk informaciokat. A leggyakrabban
   hasznalt program neve ftp (File Transfer Protocol), ennek hasznalatarol
   a halozatokrol szolo leckeben lesz szo.

Megis erdemes a vi kezeleset legalabb alapszinten elsajatitani: ha netan
kitennenek minket egy lakatlan szigetre, es a sziget Unixos gepen
tortenetesen csak vi van, akkor ne alljunk ott tehetetlenul.

A vi editor
-----------

Eloszor is meg kell ertenunk a vi alapelveit. Ket uzemmodja van: szoveges
mod es parancs mod. A parancs modban begepelt karaktereket parancskent
ertelmezi, peldaul 'karakter torles' vagy 'kurzor mozgatasa jobbra'.
Szoveges uzemmodban a bevitt karakterek bekerulnek a kurzor aktualis
poziciojaba. Parancs modbol ugy tudunk szoveges (text) uzemmodba valtani,
hogy kiadjuk az a,C,i,o,O vagy R parancsok valamelyiket. Text modbol az
ESC billentyuvel jutunk parancs modba. Nagyon vigyazzunk, mert a kepernyon
semmi sem utal ra, hogy eppen melyik uzemmodban vagyunk! Ez a fo ok, ami
miatt az emberek ellenseges erzelmeket taplalnak a vi editorral szemben.
Ne felejtsuk el azonban, hogy a vi-t sok-sok evvel ezelott irtak, amikor a
terminalok meg nem voltak olyan fejlettek mint napjainkban.

Vigyazat, a kis- es nagybetuk kulonbozonek szamitanak! Igyekezzunk fejbol
megtanulni a parancsokat; azt fogjuk tapasztalni, hogy minel tobb
parancsot tudunk fejbol, annal konnyebbe valik a vi kezelese. Egy
parancsot mindenkeppen tanuljunk meg, ez a :q! (a kettospont es a
felkialtojel itt a parancs resze).


Mozgas a szovegben
------------------

Ctrl u, Ctrl d  A kurzort a szovegben felfele (up) vagy
                lefele (down) viszi 12 sorral.
Ctrl f, Ctrl b  A kurzort a szovegben elore (forward) vagy
                hatra (back) viszi 12 sorral.
e               A kurzort a kovetkezo szo vegere viszi.
b               A kurzort az elozo szo elejere viszi.
Ctrl g          Kiirja a kurzort tartalmazo sor sorszamat.
G               A szerkesztett fajl vegere ugrik.
n G             A fajl n-dik sorara ugrik.
$               Ugras az aktualis sor vegere.
/keresett_szo   A keresett_szo elso elofordulasi helyere ugrik.
n               A keresett_szo kovetkezo elofordulasi helyere ugrik.


Szoveg beszuras
---------------

i               A begepelt szoveget beszurja (insert) a kurzor poziciojahoz.
                Ha befejeztuk a muveletet, ussuk le az ESC billentyut.
a               A begepelt szoveget a kurzor poziciojatol kezdve hozzafuzi
                (append) a szerkesztett dokumentumhoz. Ha befejeztuk a
                muveletet, ussuk le az ESC billentyut.
o               Egy ures sort hoz letre az aktualis sor alatt. Gepeljuk be
                a kivant szoveget, majd ussuk le az ESC billentyut.
O               Egy ures sort hoz letre az aktualis sor felett. Gepeljuk be
                a kivant szoveget, majd ussuk le az ESC billentyut.


Szoveg modositasa
-----------------

x               Kitorli a kurzor poziciojan allo karaktert.
rc              Kicsereli (replace) a kurzor poziciojan allo karaktert c-re.
R               Felulirasos uzemmodba kapcsol; Ussuk le az ESC billentyut
                ha vissza akarunk terni parancs modba.
dd              Kitorli az aktualis sort.
J               A kovetkezo sort osszefuzi az aktualis sorral.
C               Kijeloli az aktualis sor kurzortol jobbra eso reszet
                (egy $ jelet rak a sor vegere.) Amit ezutan begepelunk, az
                felulirja a megjelolt reszt.
u               Visszacsinalja az utolso muveletet
U               Visszacsinalja az eredeti allapotot az aktualis sorban.
:i,j m p        Az i. es j. sorok koze eso reszt (beleertve magat az i. es j.
                sort is) athelyezi a p. sor utan.


Kilepes a vi-bol
----------------

:w              Elmenti a szerkesztett szoveget.
:w nev          'nev' neven elmenti a szerkesztett szoveget.
:i,j w nev      'nev' neven elmenti az i. es j. sorok koze eso reszt
                (beleertve magat az i. es j. sort is)
:q              Kilep, ha nem valtoztattunk a szovegen az utolso mentes ota.
:q!             Mindenkeppen kilep, az esetleges valtoztatasok
                elmentese nelkul.
:wq             Elmenti a szerkesztett szoveget es kilep.


Egyeb
-----

.              Megismetli az utolso parancsot.



   Feladatok
   ---------

Keszitsunk magunknak "puskat" a vi legfontosabb parancsairol! Ehhez
eloszor mentsuk ki e lecke szoveget egy szovegfajlba. Ezt minden
levelezoprogrammal meg lehet tenni, altalaban az export parancs
segitsegevel. Ha sehogyan sem boldogulunk, akkor hasznaljuk a Unix mail
programjat. (Inditsuk el a mail programot, valasszuk ki ezt a levelet a
sorszamanak begepelesevel, majd az s vi-doc paranccsal mentsuk el a
szoveget egy vi-doc nevu fajlba.

Az igy letrehozott szovegfajlt toltsuk be a vi-ba! Toroljuk ki a parancsok
leirasa elotti bevezeto szoveget, es a feladatok leirasat. Mentsuk el a
valtoztatasokat! Most lapozzunk vissza a fajl elejere, es szurjunk be
egy-egy ures sort minden parancs leirasa ele!

Az elkeszult "puskat" ki is nyomtathatjuk, felteve, hogy van nyomtato a
rendszerben. A nyomtatasi lehetosegekrol es a nyomtato hasznalatarol (hogy
hivjak a PRINT parancsot ezen a heten), olvassuk el a dokumentaciot, vagy
kerdezzuk meg a rendszeradminisztratort!


11. Nezzuk meg, hogy eddigi munkankkal mennyi helyet foglalunk!

  *************************************************************************
  *=                                                                     =*
  *=                           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   =*
  *=                                                                     =*
  *************************************************************************



                        Hatodik lecke


                        "Az igazi Unix buherator muvesz. Mint minden muvesz,
                         o is onon lenyeget alkotja ujja az anyagban - ami
                         jelen esetben a shell, annak valtozoi es kornyezete."


                                                                Csaky Istvan

Verzio: 1.0

Bovebben az atiranyitasrol
--------------------------

A harmadik leckeben volt szo az atiranyitasrol. Ebben a leckeben par
hasznos peldat mutatunk az atiranyitas "haladobb" alkalmazasara.
Bonyolultabb atiranyitasokhoz az sh (vagy sh tipusu shell) alkalmazasa
javasolt, ezert a peldak is az sh alkalmazasaval keszultek. (Akinek csh az
alapertelmezes, az a Bourne shellt az sh beirasaval indithatja!)

Mit csinaljunk peldaul akkor, ha az stderr-t (a hibacsatornat) szeretnenk
egy fajlba iranyitani? Ehhez eloszor is tudnunk kell, hogy az
alapertelmezes szerinti csatornaknak (stdin, stdout, stderr), egy-egy szam
a megfelelojuk; az stdin-e a 0, az stdout-e az 1 es az stderr-e a 2.
Ezeknek a szamoknak a hasznalataval lehet bonyolultabb atiranyitasi
feladatok megoldasara kenyszeriteni a Unixot. Peldaul, ha a cat parancs
hibajelzeseit at szeretnenk iranyitani egy caterr nevu fajlba, a
kovetkezoket kell tennunk:

sindbad> sh
sindbad% cat level 2>caterr
sindbad% cat caterr
cat: cannot open level
sindbad%

Mivel a level nevu fajl nem letezik, a cat program hibajelzest ad, amit mi
a caterr nevu fajlba iranyitottunk at.

Masik nagyon gyakran elofordulo problema, hogy egy program kimenetet es
hibait szeretnenk egy fajlban latni, de mivel a Unix a hibakat a
kepernyore irja ki - abban az esetben is, ha a program a hatterben fut -
atiranyitasra van szukseg.

sindbad> sh
sindbad% program 1>errors 2>&1
sindbad%

A & jel azt jelenti, hogy nem egy fajlba iranyitunk at, hanem egy masik
csatornaba, jelen esetben az stdout-ra.


A shell valtozok es a kornyezet
-------------------------------

A shell reszben programozasi nyelv is, ezert tartalmaz valtozokat.

Figyelem! Az sh-ban (sh, ksh, bash, zsh) es a csh-ban (csh, tcsh) maskent
kell erteket adni a valtozoknak!

Az sh tipusu shellek az "=" jelet hasznaljak:

sindbad% a="hello sh"

mig a csh tipusuakban a set parnaccsal kell erteket adni a valtozoknak:

woland> set a="hello csh"

A kiiratast mindket shell eseteben az echo parancsau vegzi, a valtozo neve
elott pedig egy $ jelnek kell szerepelnie:

sindbad% echo $a
hello sh
sindbad%

Ezek a shell belso valtozoi - tehat csak az aktualis shellben ismertek,
lokalisak. A shell lehetove teszi a futtatando programok kornyezetenek
(environment) beallitasat is. A kornyezet azon valtozok csoportja, melyek
minden programbol elerhetoek, globalisak. A kornyezet beallitasanak
szempontjabol is kulonbozik az sh es a csh. A kornyezet beallitasa sh-ban:

Allitsunk be valami hasznosat. A PAGER kornyezeti valtozo, amelyet peldaul
a man parancs hasznal megjelenitoprogramkent, eppen megfelel erre a celra.

sindbad% PAGER="cat"
sindbad% export PAGER

Ennek kicsit kellemetlen az eredmenye, mivel ha man-t kerunk, csak elrohan
a szoveg a szemunk elott, de peldanak megteszi! Azonban, ha kepernyonkent
szeretnenk latni, akkor allitsuk be a more-t nezegeto programnak:

sindbad% PAGER="more"
sindbad% export PAGER

A kornyezeti valtozok beallitasanak csh beli megfeloje a setenv parancs. A
fenti pelda csh-s megfeleloje tehat:

woland> setenv PAGER cat

es

woland> setenv PAGER more

Amennyiben egy lokalis vagy kornyezeti valtozora nics szuksegunk,
eltuntethetjuk oket, mintha sosem lettek volna. Sh-ban unset valtozonev,
csh-ban a lokalis valtozokra unset valtozonev, a globalisokra pedig
unsetenv valtozonev. Azt hogy milyen valtozok vannak beallitva ugy
tudhatjuk meg, hogy a set es a setenv parancsok utan nem irunk
valtozonevet.


A PATH kornyezeti valtozo
-------------------------

Kiemelten kezeli a shell a PATH (csh-ban path) nevu valtozot, ugyanis ez a
valtozo jelzi a shell szamara, hogy hol kell keresnie a futtatando
programot. Peldaul:

sindbad% echo $PATH
/bin:/usr/bin:/usr/local/bin:.
sindbad%

A fenti pelda az sh -t mutatja, mindez csh-ban igy nez ki:

woland> echo $path
/bin /usr/bin /usr/local/bin .
woland>

A kulonbseg vilagosan lathato. Tehat a shell eloszor megnezi, hogy a
futtatando program a /bin-ben, a /usr/bin- ben, a /usr/local/bin-ben vegul
pedig az aktualis konyvtarban (a "." ezt jelzi) talalhato-e?

Automatikus inditasu shell scriptek
-----------------------------------

Minden shell kepes arra, hogy indulasakor egy adott nevu shell scriptet
elinditson, igy a felhasznaloknak lehetoseguk van arra, hogy kornyezetuket
szemelyisegukhoz igazitsak.

Ez a program az sh-nal a munkakonyvtarban (home dir) levo ".profile", csh
eseteben pedig a bejelentkezes eseten a ".login" es minden mas csh
inditasnal a munkakonyvtarban levo ".cshrc". Ki-ki ebbe teheti az altala
kedvelt valtozo es kornyezetbeallitasokat.

Egy minta cshrc fajl
--------------------

Lassuk miket lehet beallitani egy .cshrc fajlban.

woland> cat .cshrc
set history=100
alias h history
alias ls ls -F
alias ll 'ls -l | more'
set prompt="`hostname` > "
woland>

Lassuk mit csinal ez a kis "program". A set history arra szolgal, hogy a
begepelt parancsainkat a rendszer megorizze, hogy ha mar egyszer
begepeltunk valamit, ne kelljen ismet begepelni. A 100-as szam azt jelzi,
hogy 100 parancsot orizzen meg.

A h parancs most a history parancs ekvivalense - a history parancs az
eddig begepelt utasitasokat listazza ki.

A kovetkezo sorban az ls az ls -F -nek lesz az ekvivalense. Ezutan minden
ls parancs automatikusan ls -F lesz.  (Nezzuk meg a man-ban, hogy mit
csinal az ls F kapcsoloja).

Az ezutani sor meg erdekesebb, mivel arra pelda, hogy egy
utasitassorozatnak legyen egy rovid neve. Tehat egy bo lista kimenetet
atadjuk a more nezegeto programnak, hogy oldalankent lassuk a kimenetet.

Ezutan a prompt beallitasara lathatunk peldat. A gep eloszor lefuttatja a
hostname programot, ami kiirja a gep nevet es azt berakja a promptba. A `
(visszafele mutato egyes idezojel) jelentese, hogy a program futasanak
eredmenyet helyettesitse be a hostname szo helyett.

Az alias parancs arra szolgal, hogy egy hosszab utasitassorozatot egy
parancs begepelesevel indithassunk vagy hosszu parancsnev eseten a program
nevet Unixabbra alakitsuk (minel rovidebb annal jobb). A jelenleg
definialt aliasokat a parameterek nelkul hivott alias parancs mutatja meg;
egy-egy aliast pedig az unalias paranccsal tudunk megszuntetni.


Terminal beallitasok
--------------------

Az egyik leghasznosabb dolog, amit az automatikusan elindulo .cshrc vagy
.profie fajllal csinalhatunk, a terminalunk beallitasa. Bizonyara mindenki
talalkozott mar azzal a kellemetlen jelenseggel, hogy egy terminalrol valo
bejelentkezes utan bizonyos billentyuk varatlan dolgokat muvelnek. Ilyen
peldaul, hogy a visszatorles (backspace) az utolso karakter torlese
helyett ^?- ir ki, vagy torli a teljes sort.

A jelenseg magyarazata a terminalok mukodeseben keresendo. Amikor leutunk
egy billentyut, a terminalunk elkuld egy kodot a szamitogepnek. A Unix
ertelmezi ezt a kodot, es csinal valamit. Baj csak akkor van, ha a Unixunk
rosszul ertelmezi az altalunk kuldott kodokat: igy keletkeznek a ^H, ^?,
jelek es egyeb mellekhatasok.

A terminal beallitasait az stty paranccsal listazhatjuk ki. A -a
kapcsoloval teljes listat kapunk. (Nemely Unixoknal ezt a kapcsolot
maskepp hivjak - ilyenkor nezzuk meg a manualt!)

zeus% stty -a
speed 9600 baud; line = 1;
intr=^C; quit=^\; erase=DEL; kill=^U; eof=^D; eol <undef>; swtch=^Z
lnext=^V; werase=^W; rprnt=^R; flush=^O; stop=^S; start=^Q
-parenb -parodd cs8 -cstopb hupcl cread clocal -loblk -tostop
-ignbrk brkint ignpar -parmrk -inpck istrip -inlcr -igncr icrnl -iuclc
ixon -ixany -ixoff
isig icanon -xcase echo echoe echok -echonl -noflsh
opost -olcuc onlcr -ocrnl -onocr -onlret -ofill -ofdel tab3
zeus 5%

A listan funkciokat latunk (intr, quit, erase...) es az oket aktivalo
kodokat (^C, ^\, DEL, ...) Ezek kozul a legfontosabb az erase. Ez a
funkcio torli a kurzortol balra allo karaktert. A fenti peldan erteke DEL,
azaz a DEL billenyu leutesevel lehet vegrehajtani.

Ha a terminalunkon levo DEL feliratu gomb nem a megfelelo kodot kuldi,
akkor nem a kivant muvelet rortenik. Ezt ugy kuszobolhetjuk ki, hogy az
erase funkciora egy masik kodot definialunk, peldaul a ^H-t.  Ezutan a
ctrl-h -val lehet majd torolni. Masik (kenyelmesebb megoldas, ha az erase
funkciot ahhoz a kodhoz rendeljuk hozza, amit a DEL feliratu billentyunk
general. Az erase funkcio atdefinialasa ugyancsak az stty paranccsal
tortenik. Tetelezzuk fel, hogy a backspace billentyuvel szeretnenk
torolni, de ha leutjuk ezt a billentyut, akkor ^? jelenik meg a kepernyon.
Gepeljuk be, hogy:

stty erase "^?"

Ezutan nyugodtan torolhetunk a backspace billentyuvel is. A tobbi
funkcio beallitasa hasonloan mukodik.

Tovabbi fontos funkciok:

intr    Megszakitja a futo programot. Altalaban a ^C-vel lehet vegrehajtani.
kill    Kitorli a parancssorba eddig begepelt szoveget (ha meg nem utottuk le
        az Entert.)
eof     Ez a jol ismert fajlvege jel. Ez szine mindenhol ctr-d
stop    Felfuggeszti a kepernyore irast.
start   Folytatja a stoppal befagyasztott kepernyore irast.
swtch   Az aktualis program futasanak felfuggesztese (lasd harmadik lecke).

Termeszetesen nagyon faradtsagos, ha minden parameter legkedvezobb
beallitasat nekunk kell kikiserletezni.  Ezert definialtak nehany
beallitas-keszletet, amelyekere a nevukkel lehet hivatkozni. Ilyen peldaul
a dec terminal; gyakran segit, ha kiadjuk az stty dec parancsot.


Feladatok
---------

1. Listazzuk ki a .profile vagy .cshrc fajlunk tartalmat! Valoszinuleg
   talalunk benne nehany alias utasitast, amelyeket a rendszeradminisztrator
   helyezett el szamunkra. Probaljuk meg kitalalni, hogy melyik mire valo!

2. Talajuk ki, mit csinalnak az alabbi alias definiciok!
   A "\!*" jel a parameter helyettesitest jelenti, azaz mindent amit
   a cd utan beirunk. Probaljuk ki, es ha tetszik, epitsuk be a .cshrc
   vagy .profile fajlunkba!

   woland> cat .cshrc
   alias setprompt 'set prompt="$cwd > "
   alias cd "chdir \!*; setprompt"
   setprompt
   woland>

   Az sh-ban nincsenek aliasok, helyettesitesuk fuggvenyekkel lehetseges. A
   fenti pelda sh-ban:

   sindbad% cat .profile
   h() {history}
   ls() {ls -F}
   ll() {ls -l | more}
   sindbad%

  *************************************************************************
  *=                                                                     =*
  *=                           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   =*
  *=                                                                     =*
  *************************************************************************


                          Hetedik lecke


Verzio: 1.0

Az Internet halozat felepitese
------------------------------

A vilag szamitogepeit osszekoto halozatok vezetekei keresztul-kasul
atszelik az egesz foldgolyot. Tobb vilagmeretu halozat letezik, mi a
tovabbiakban az Internet halozattal fogunk foglalkozni, mivel az oktatasi
intezmenyekben ez a legelterjedtebb.

Minden halozatba kotott gepnek van egy neve; ez az un. node name, peldaul:
woland.iit.uni-miskolc.hu. A nevbol altalaban kovetkeztetni lehet a gepet
mukodteto intezetre es annak helyere (iit = Institute of Information
Technology, uni-miskolc = Miskolci Egyetem, hu = Magyarorszag). Minden
gepnek van egy telefonszam-szeru szama is, amit IP szamnak hivunk. Ez
valahogy igy nez ki: 193.6.4.30 (a pontokkal elvalasztott szamok nagyjabol
megfelelnek a node nev egyes elemeinek.) A halozat barmelyik gepere be
tudunk jelentkezni "fel tudjuk hivni" a telnet parancs segitsegevel
(dolgozni termeszetesen csak akkor tudunk rajta, ha van username-unk es
ervenyes jelszavunk.) A hivas fizikai szinten az IP szam segitsegevel
tortenik. Az egyszeruseg kedveert -es hogy ne kelljen megeroltetni a
szam-memoriankat- a telnet parancs node nev alapjan is fel tud hivni egy
gepet. Ilyenkor elobb kikeresi a "telefonkonyvbol" a hivott gep IP szamat;
ez a telefonkonyv az un.  "domain name server", roviditve DNS.

A gepek kozotti kapcsolat a TCP/IP protokoll segitsegevel tortenik. Errol
annyit kell tudnunk, hogy az adatokat nem egyszerre kuldik el, hanem kis
csomagokra (packet) bontjak, majd ezeket egymas utan elinditjak a
celallomas fele. Ha egy csomag utkozben elvesz, akkor eleg csak a hianyzo
csomagot ujra kuldeni. Ezert szoktak az Internetet "csomagkapcsolt
halozat" (packet switching network) neven is emlegetni.

Az Interneten belul a legkulonfelebb szolgaltatasok erhetok el, ezek kozul
a harom legfontosabb az elektronikus levelezes, a fajl atvitel es az
online kapcsolat (talk). Feltetelezzuk, hogy az elektronikus levelezest
mar mindenki ismeri, a fajl atvitelrol es a talk-rol pedig e fejezet
kesobbi reszeiben lesz szo.

Informaciok a halozat gepeirol es felhasznaloirol
-------------------------------------------------

Valamennyi parancs kozul talan a finger adja a legtobb informaciot.
Parameterek nelkul kiadva megmutatja hogy egy hoston rajtunk kivul ki van
meg bejelentkezve. Barmelyik hostot le lehet kerdezni a kovetkezo modon (a
host nev helyett irhatunk IP szamot is):

finger @host_nev

Ha valakinek nem ismerjuk az username-jet, de tudjuk a nevet, a finger
segitsegevel ki tudjuk deriteni. Irjuk be peldaul:

finger laszlo

Erre valami ilyen valaszt kapunk (legalabb is Miskolcon):

Login name: kovacs In real life: Kovacs Laszlo
Office: IIT
Directory: /usr/people/users/kovacs  Shell: /bin/tcsh
Never logged in.
No Plan.

Login name: cser In real life: Cser Laszlo
Office: IIT
Directory: /usr/people/users/cser Shell: /bin/tcsh
Never logged in.
No Plan.

Login name: szakal In real life: Szakal Laszlo
Office: IIT, x2106 Directory: /usr/people/users/szakal  Shell: /bin/tcsh
Last login at Tue Aug 31 10:05 on /dev/tty
Plan:
Don't marry, be happy!

Amint latjuk, egeszen sok informaciot kaptunk. A Login name: utan szerepel
az illeto bejelentkezesi neve (username). Az In real life: a felhasznalo
valodi nevet adja meg, az Office: a tanszeket, ahol dolgozik es a
telefonszamot. Megtudjuk azt is, hogy hol talalhato a felhasznalo
munkakonyvtara (Directory:), milyen parancsertelmezot (Shell:) hasznal,
mikor es melyik terminalrol volt utoljara bejelentkezve (Last login...).
Ha itt a "Never logged in" uzenet szerepel, az illeto meg soha nem volt
bejelentkezve. Ha azt latjuk hogy "On since..." akkor a felhasznalo
jelenleg is a rendszerben tartozkodik.

Megjegyzes: A Last login... azt mondja meg, hogy a felhasznalo az adott
hoston mikor jart utoljara. Ha tobb host van osszekapcsolva ugy, hogy a
jelszo mindegyikre ervenyes, akkor elofordulhat, hogy a felhasznalo egy
kesobbi idopontban egy masik hostra is bejelentkezett. Ezt csak ugy tudjuk
ellenorizni ha sorban valamennyi hostot vegignezzuk. A levelekrol adott
informaciokra ez nem vonatkozik, mivel az osszekapcsolt hostokon egy
usernek csak egyetlen postafiokja van.

Bizonyos rendszerek (peldaul a SUN) azt is elaruljak, hogy a felhasznalo
mikor kapott utoljara levelet es mikor olvasta utoljara a leveleit. No
unread mail - nincs elolvasatlan level, New mail received at...- uj level
erkezett...Mail last read at...- az utolso levelolvasas idopontja.

A finger egy tovabbi bajos tulajdonsaggal is rendelkezik: ha a kiindulasi
konyvtarunkban letrehozunk egy .plan es egy .project fajlt, akkor a finger
a Plan: es Project: cimszavak utan ezek tartalmat is megjeleniti.  Ha
valamit kozolni szeretnenk a rolunk erdeklodo felhasznalokkal, azt e ket
fajl valamelyikebe kell beirnunk. (A .plan fajl egy eletszagu alkalmazasat
lathatjuk az elozo peldan.)

A fingerhez hasonlo a who parancs; ez valamivel szukszavubb:

varga   ttyq0  Sep 3 21:32
szabo   ttyq1  Sep 6 09:49
kovacs  ttyq3  Sep 6 09:32
lengyel ttyq5  Sep 6 11:04

A w parancs viszont azt is megmutatja, hogy a felhasznalok eppen min
dolgoznak:

User   tty from    what
varga   q0 9:51am  -tcsh
kovacs  q2 9:17am  pine
lengyel q3 9:27am  xwsh -name winterm -na

A listabol megallapithato, hogy a varga username-u felhasznalo a q0 nevu
terminalrol jelentkezett be tiz ora elott kilenc perccel es jelenleg a
parancsertelmezo programot futtatja (command shell), azaz a monitoran a
UNIX prompt latszik (%). Kovacs a Pine levelezoprogramon dolgozik, lengyel
pedig a winterm nevu programot futtatja, ami nem mas mint egy grafikus
munkaallomason hasznalhato shell ablak. (A fenti lista nemileg
egyszerusitett, a valosagos nehany tovabbi adatot is tartalmaz.)

Az rusers nem csak a mi hostunkra bejelentkezett felhasznalo username-jet
mutatja meg, hanem a halozat azonos alegysegen (szegmensen) levo
valamennyi gepet vegignezi:

ind03.iit.uni-miskolc.hu cser
ind02.iit.uni-miskolc.hu toth toth toth
indvd.iit.uni-miskolc.hu wagner szakal vadasz
ind04.iit.uni-miskolc.hu stsmork
zeus.iit.uni-miskolc.hu  vadasz
indkl.iit.uni-miskolc.hu kovacs

Megjegyzes: A parancs termeszetesen nem a vilag osszes gepet nezi vegig,
hanem csak az azonos szegmensben levoket. Altalaban 5 - 20 gep van egy
szegmensben; ennel tobb gep eseten a muvelet akar percekig is eltarthat!
(Ilyenkor a Ctrl-C leutesevel tudjuk megallitani a parancsot.)

Amint latjuk, egy hostra tobb felhasznalo is bejelentkezhet egy idoben.
Sot, ugyanaz a felhasznalo bejelentkezhet ugyanarra a hostra tobb
terminalrol is.

Barmelyik hostrol at tudunk jelentkezni barmely masikra, az rlogin
paranccsal:

rlogin host_nev

A rendszer ekkor ismet megkerdezi a jelszonkat, majd atjelentkezik a
megadott hostra, amit a megvaltozott promptbol is lathatunk.

A last parancs megadja az utolso nehany szaz bejelentkezes tenyet. Ha csak
egy felhasznalo adataira vagyunk kivancsiak, akkor azt a kovetkezo modon
tudhatjuk meg (tegyuk fel, hogy a keresett felhasznalo username-je winnie):

last winnie


Bejelentkezes egy tavoli gepre
------------------------------

Erre szolgal a mar emlitett telnet parancs. A telnettel torteno
bejelentkezest hivjak "interaktiv login"-nak - erre utal a bizonyos
rendszereken belepeskor megjeleno "last interactive login" datum es
idopont. Ha peldaul a piglet.forest.edu gepet akarjuk felhivni, akkor
adjuk ki a

telnet piglet.forest.edu

Ha a parancs hibat jelez, akkor valoszinuleg nem talalja a telefonkonyvben
a hivott gep IP szamat. Ha tudjuk fejbol az IP szamot, azt is megadhatjuk
a node nev helyett. Ha minden jol megy, a vonal terheltsegetol fuggoen
hosszabb- rovidebb varakozas utan valami ilyesmi jelenik meg:

Trying piglet.forest.edu...
Connected to 19.54.285.892.
Escape character is '^]'.

login:

Megjegyzes: A piglet.forest.edu nevu gep a valosagban nem letezik, ezert
senki ne probalja felhivni. A lecke vegen talalunk nehany igazi nevet es
IP szamot, amelyeken nyugodtan gyakorolhatunk.

Az Escape character is '^]' annyi tesz, hogy a kapcsolatot barmikor
megszakithatjuk a Ctrl es ] billentyuk egyuttes lenyomasaval. Ilyenkor nem
a Unix prompthoz jutunk vissza, hanem a telnet parancs promtjahoz:

telnet>

Ha ujra be akarunk kapcsolodni, akkor irjuk be a connect parancsot,
egyebkent pedig a quit parancsot. A tovabbi lehetosegekrol a ? parancs ad
rovid felvilagositast.

Fajlok atvitele ket gep kozott
------------------------------

Ha az ftp parancs segitsegevel jelentkezunk be egy tavoli (remote) geprol,
akkor fajlokat tudunk mozgatni a tavoli es a helyi (local) gep kozott.
Jegyezzuk meg, hogy mindig az a helyi (local) gep, amelyiken elinditottuk
az ftp programot, es az a tavoli (remote) amelyikre bejelentkeztunk. Az
ftp bejelentkezest hivjak nem interaktiv logginnak (non interactive
login). A legtobb gepre be lehet jelentkezni nem interaktivan, felteve
hogy az adott gepre van jelszavunk. Egyes gepeken van egy kulonleges
username, az anonymous nevu, amelynek nincs jelszava es igy barki
bejelentkezhet ra. (Jelszo helyett felker minket, hogy adjuk meg az e-mail
cimunket: ezt illik megadni, de barmit beirhatunk.) Ha bejutottunk a
gepre, a get es put parancsok segitsegevel fajlokat hozhatunk el, illetve
vihetunk fel a tavoli gepre.

Tegyuk fel, hogy az elobb mar emlitett (fiktiv) piglet.forest.edu gepen
van anonymous ftp szolgaltatas. A bejelentkezes a kovetkezokeppen
tortenik:

orlando% ftp piglet.forest.edu
Connected to piglet.forest.edu.
220 cica FTP server (Version wu-2.1c(1) Mon Oct 18 10:56:22 EST 1993) ready.
Name (piglet.forest.edu:stsmork): anonymous
331 Guest login ok, send your complete e-mail address as password.
Password:
230-**
230-** You have reached piglet.forest.edu [123.789.290.287] at
230-** the Center for Innovative Computer Applications at
230-**




                ORLANDO UNIX-TANFOLYAM F.A.Q.-k


Q: Mi a kulonbseg a home directory es a working directory kozott?

A: WORKING DIRECTORY vagy current directory (aktualis konyvtar, elo
   konyvtar, kurrens konyvtar). Az a konyvtar, ahol "eppen vagyunk".
   Szemleletesen: ez az a konyvtar, amelyenek fajljait a parameterek
   nelkul kiadott ls paranccsal lehet kilistazni. Az aktualis
   alkonyvtarat a cd paranccsal tudjuk megvaltoztatni, a pwd (print
   working directory) pedig kiirja, hogy eppen melyik az aktualis
   alkonyvtar.

   HOME DIRECTORY (munkakonyvtar, sajat konyvtar, kiindulasi konyvtar)
   az a konyvtar, ahol a rendszer szemelyes dolgainkat (leveleinket,
   programjainkat, adatainkat) tarolja. Az altalunk letrehozott konyvtarak
   - kulonleges esetektol eltekintve - a munkakonyvtarunkbol nyilnak.

   Fontos tulajdonsag: bejelenkezes utan a munkakonyvtar lesz
   az aktualis konyvtar.

# A felreertest az okozza, hogy egyik fogalomnak sincs elfogadott magyar
# neve; mi is felvaltva hasznaljuk az angol, ill. a kulonfele magyar
# elnevezeseket. Ezert fontos, hogy megertsuk a ket fogalom kozotti
# kulonbseget, mert akkor mindig ki tudjuk talalni, hogy eppen
# melyikrol is van szo.

                        **********************


Q: Hogy toroljuk le az olyan fajlokat , amelyek neve "-" jellel kezdodik?

A: Legjobb az lenne, ha a fajlnev nem "-" jellel kezdodne. Ez ugy
   lehetseges, hogy eleresi utat is megadunk:

        rm ./-fajlnev

   (ha a -fajlnev az aktualis konyvtarban van.)

   Nagyon sok esetben hasznalhato az a megoldas is, hogy az rm-nek egy "-"-t
   vagy "--"-t adunk meg es utana a fajlnevet:

        rm - -fajlnev vagy rm -- -fajlnev

   A harmadik lehetoseg az, hogy interaktivan toroljuk a fajlokat - ilyen
   esetben az rm minden egyes fajlra megkerdezi, hogy torolje-e?

        rm -i * vagy rm -i .

                        **********************


Q: Azt szeretnem, hogy a ls parancs ezentul a ls -laF roviditese
   legyen es az lss legyen az EREDETI ls. Megoldhato ez valamilyen
   trukkel?

A: Semmi trukk sincs benne:

   alias lss /bin/ls
   alias ls 'ls -aFl'


Nincsenek megjegyzések:

Megjegyzés küldése