************************************************************************* *= =* *= 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. =* *= =* ************************************************************************* Verzio: 1.2 "Szerintem a Unix olyan, mint a noi lelek: bonyolult es csodalatos. (Az igazi buheratorok szerint csodalatosabb :-)" /Csaky Istvan/ 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 csoko gyufa izzok woland> Megjegyzes: a 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 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 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 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 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 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 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 ; 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'