A PARANCSÉRTELMEZŐ
(BOURNE SHELL)
A parancsértelmező, a shell az, amely az általunk begépelt karaktereket értelmezi és futtatható parancsokká konvertálja. Az átlagos felhasználó számára messze ez a legfontosabb program a UNIX rendszerben, hiszen bejelentkezéstől kilépésig ezen keresztül kommunikál a rendszerrel, s számára az a UNIX, amit a shell-en keresztül lát. E fejezetben a legelterjedtebben használt parancsértelmező, a Bourne shell legfontosabb tulajdonságaival ismerkedünk meg, azokkal, amelyek nélkülözhetetlenek a rendszer hatékony és otthonos on-line használatához. A 10. fejezetben még mélyebb ismereteket szerezhetünk; az ott tárgyalt témák már a shell-programozás területét érintik, azt, hogy hogyan tudunk komplex feladatok ellátására shellscript-eket írni. A C shell használatát a 11., a Korn shell-ét pedig a 12. fejezetben vesszük.
Mivel külön fejezetben, részletesen és funkcióik szerint csoportosítva foglalkozunk a gyakrabban használt UNIX parancsokkal és segédprogramokkal, ezért e fejezetben csak a lehető legkevesebb programot szerepeltetjük shell mechanizmusaira fektetve, és nem a programok gazdagságára., a hangsúlyt tudatosan a
Speciális karakterek
Az alábbiakban arról a látszólag triviális problémával foglalkozunk, hogy hogyan kell begépelni parancsokat a UNIX shell alól, melyek azok a speciális karakterek, amiknek valamilyen speciális jelentése van.
A legtöbb billentyű, amelyet leütünk, "normális", azaz nyomtatható és megjeleníthető karakter, néhánynak azonban speciális jelentése van. Ezek közül a legfontosabb a RETURN billentyű, mely a más rendszerekben megszokott módon egy begépelt sor végét jelzi a rendszernek: a képernyőn ez úgy jelentkezik, hogy a kurzor a következő sor elejére áll.
A return vagy újsor (newline) karakter, melyet a RETURN billentyűvel generáltunk, az ún. vezérlőkarakterek (control character) közé tartozik, amelyek a begépelt illetve a képernyőn megjelenítendő adatok értelmezését szolgálják a rendszer számára. A return funkció minden esetben rendelkezik saját billentyűvel, a legtöbb vezérlőkarakter azonban a CONTROL (néha CTRL) billentyű és egy másik billentyű egyidejű lenyomásakor fejti ki hatását. A return funkció elérhető például a CTRL-M billentyűkombináció lenyomásával is. A fenti módon generálható vezérlőkarakter sorozatokat a továbbiakban a CTRL-X írásmóddal jelezzük.
A begépelt karaktereket a shell egy belső tárolóhelyen gyűjti mindaddig, amíg a RETURN karakter lenyomásával nem jelezzük, hogy a parancssor begépelésével végeztünk, s átadtuk feldolgozásra a shell-nek. Vannak azonban bizonyos karakterek, amelyeket speciális javító funkciókhoz vannak rendelve, ezeket rögtön feldolgozza a rendszer, az újsor karakter beérkezése előtt is. A legfontosabb ilyen karakterek a (karakter)törlés és a sortörlés.
A törlés (erase) funkcióhoz rendelt karakter leütésekor törlődik az a karakter, amelyiken a kurzor állt. Az "ős" UNIX-okban e funkciót a '#' karakter töltötte be, s mivel akkortájt csak teletype jellegű terminálok léteztek, a képernyőn nem is törlődött a szóban forgó karakter. Az alábbi példa egy ilyen esetet illusztrál:
$ pwc#d
/users/demo
$
A modern megjelenítők kialakulásával persze természetessé vált, hogy a törlő karakter leütésekor a képernyőn is törlődik a karakter. A konvenciók változásával a '#' karakter helyett a DEL billentyű használata lett általános, de sokan - kivált a személyi számítógépekről átszokva - a BS (backspace, <-) karaktert favorizálják. A választás teljes mértékben rajtunk múlik - a vezérlőkarakterek is, mint oly sok minden más, a UNIX alatt szabadon átkonfigurálhatóak.
A másik speciális karakter a sortörlés (kill) funkcióbillentyű: ennek hatására a shell az addig begépelt összes karaktert eldobja, s a továbbiakban begépelt karaktereket úgy kezeli a rendszer, mintha azokkal kezdtük volna a bevitelt az újsor karakter után. Megint csak termináltól függ, hogy e billentyű lenyomásakor törlődik-e a sor a képernyőn, vagy pedig a következő sor elejére áll-e a kurzor. E funkciót hagyományosan az '@' ("at") karakterhez szokták rendelni, ez azonban az elektronikus levelezésben okoz problémákat, ezért manapság inkább a CTRL-U karakter a használatosabb.
Gyakran szükségünk lehet arra is, hogy a fenti funkciókhoz rendelt karakterek speciális jelentését elnyomjuk, és igenis, egy backspace vagy CTRL-U karaktert akarunk leírni. Ilyenkor a "semlegesítendő" karakter előtt egy '\' (backslash) karaktert kell leütnünk. A backslash karakter bármelyik, eddig még nem tárgyalt karakter speciális jelentését is elnyomja. Ha magát a backslash karaktert kell valahol szerepeltetni, akkor duplázva kell beírni. Eléggé szerencsétlen és értelemzavaró módon "escape" mechanizmusnak is szokták nevezni ezt a funkciót; a név NEM az ESC karakterre utal!
A megszakítás (intr) funkcióhoz rendszerint a CTRL-C, néha a DEL, néha a BREAK gombot szokták rendelni; ennek lenyomására a futó program futása megszakad.
Háttérben futó programok megállítása
Számos UNIX rendszerben lehetőség van a háttérfolyamatként indított programok futásának felfüggesztésére. A CTRL-Z karakterhez rendelt susp funkcióbillentyű hatására a háttérben futó folyamatok futása ideiglenesen felfüggesztődik és lehetőség nyílik végleges lelövésükre, netán előtérben történő továbbfuttatásukra.
A legfontosabb egyéb funkciók egyike a fájlvége (eof), ami rendszerint a CTRL-D karakterhez van rendelve. E karakter azt jelzi a rendszernek, hogy nincs több adatbevitel (input). Ellentétben az eddig szerepeltetettekkel, e karakter speciális jelentése csak akkor érvényesül, ha egy sor elején, közvetlenül egy újsor karakter után szerepel.
A fájlvége karakterrel bármelyik, adatbevitelt váró programnak jelezhetjük a bevitel végét, ez programtól függően gyakran a programból történő kilépéssel egyenértékű. Legkézenfekvőbb példa a UNIX alóli kilépés, a logout: hacsak másképpen nincs konfigurálva rendszerünk, az eof karakter lenyomására kiléptet minket a UNIX alól. Ennek az a magyarázata, hogy bejelentkezésünkkor egy shell indul el, ami kilépésünkkor hal el, illetve fordítva is, a login shell elhalásakor kikerülünk a rendszerből. Mivel viszont egy shell-nek az a feladata, hogy a billentyűzetről érkező karaktereket feldolgozza és értelmezze, a "nincs több input" értelmű CTRL-D hatására login shell-ünk elhal, s így kiléptet a rendszerből.
Ha akkora adathalmazt listázunk ki, ami túlszalad a képernyőn, a stop, illetve a start funkcióbillentyűkkel lehet a listázást felfüggeszteni, illetve újraindítani. Rendszerint a CTRL-S a megállításhoz, és CTRL-Q az újraindításhoz rendelt karakter.