A FreeBSD-ben hétköznapi munkánk legnagyobb
részét a parancsértelmezőknek (shell)
nevezett parancssoros felületen tudjuk elvégezni. A
parancsértelmező fő feladata a
beérkező parancsok elfogadása és
végrehajtatása. Sok parancsértelmező
ezenfelül rendelkezik beépített
funkciókkal is, amelyek olyan hétköznapi
feladatokban igyekeznek segíteni, mint
például az állományok kezelése
és tömeges elérése reguláris
kifejezések használatával, a parancssor
szerkesztése, parancsok makrózása és a
környezeti változók használata. A FreeBSD
alapból tartalmaz néhány
parancsértelmezőt, ilyen például az
sh
, a Bourne Shell, és a
tcsh
, a továbbfejlesztett C-shell. Sok
más parancsértelmező, mint
például a zsh
és
bash
is elérhető a FreeBSD
Portgyűjteményéből.
De melyik parancsértelmezőt is válasszuk?
Ez igazából ízlés kérdése.
Ha inkább C programozók vagyunk, akkor
valószínűleg egy olyan C-szerű shelllel
tudunk kényelmesen dolgozni, amilyen például
a tcsh
. Ha viszont egy linuxos rendszert
használtunk korábban vagy éppen még
soha nem használtunk volna a UNIX(R) parancssorát,
érdemes a bash
-sel
megpróbálkoznunk. A lényeg az, hogy minden
parancsértelmezőnek vannak olyan egyedi
jellemezői, amiért használatóak vagy
éppen nem használatóak a munkánkban,
ezért magunknak kell kiválasztani a nekünk
megfelelőt.
A shellek egyik legáltalánosabb jellemzője
az állományok neveinek
kiegészítése. Miután
begépeljük egy parancs vagy
állománynév első néhány
karakterét, a Tab billentyű
lenyomásával megkérhetjük a
parancsértelmezőt, hogy magától
egészítse ki ("találja ki") a
fennmaradó részt. Nézzük erre egy
példát. Tegyük fel, hogy van két
állományunk, izemize
és
ize.mize
, és szeretnénk
letörölni az ize.mize
nevűt.
Ehhez a következőt kell begépelnünk:
rm
iz[Tab].[Tab]
.
Erre a parancsértelmező a következő
parancsot írja ki: rm
ize[SIPOLÁS].mize
.
A [SIPOLÁS] itt a konzol sípjára
vonatkozik, amellyel jelzi, hogy nem tudta teljesen
kiegészíteni az állomány nevét,
mivel egynél több is megfelel a megadott alaknak. Az
izemize
és az
ize.mize
is egyaránt az
iz
előtaggal kezdődik, azonban
ebből a parancsértelmező csak az
ize
előtagot tudta kikövetkeztetni.
Ha most begépelünk még egy .
karaktert és újra megnyomjuk a Tab
billentyűt, a parancsértelmező ezúttal
képes lesz az állomány teljes nevét
megállapítani.
A parancsértelmezők másik általános jellemzője a környezeti változók használata. A környezeti változók lényegében a parancsértelmező környezetéhez tárolt név-érték párok. Ezt a környezetet látja minden olyan program, amit a parancsértelmezőből meghívunk, és ezért tartalmazni is szokott sok ilyen beállítást. Íme a leggyakoribb környezeti változók felsorolása és rövid leírása:
Változó | Leírás |
---|---|
USER | A bejelentkezett felhasználó neve. |
PATH | Vesszővel elválasztott könyvtárak, ahol a parancsértelmező a végrehajtható állományokat keresi. |
DISPLAY | Az aktuálisan használt X11 megjelenítő hálózati neve, amennyiben létezik ilyen. |
SHELL | A használt parancsértelmező. |
TERM | A felhasználó által használt terminál típusa. Ebből a terminál képességeit lehet megállapítani. |
TERMCAP | A terminálok adatbázisából származó, különböző terminálfunkciókhoz tartozó helyettesítő (escape) kódok. |
OSTYPE | Az operációs rendszer típusa, például FreeBSD. |
MACHTYPE | A rendszer alatt futó gép architektúrája. |
EDITOR | A felhasználó által használt szövegszerkesztő. |
PAGER | A felhasználó által lapozásra használt program. |
MANPATH | Vesszővel elválasztott könyvtárak, ahol a parancsértelmező a man oldalakat keresi. |
A környezeti változók
beállítása
parancsértelmezőnként valamennyire eltér.
Például egy C stílusú
parancsértelmező, mint például a
tcsh
vagy a csh
, a
setenv
paranccsal állítja a
környezeti változókat. A Bourne-féle
parancsértelmezők, mint például az
sh
vagy a bash
, az
export
parancsot használják a
környezeti változók
beállítására. Például a
csh
vagy a tcsh
használata során a következőképpen
tudjuk be- vagy átállítani az
EDITOR
környezeti változó
értékét
/usr/local/bin/emacs
-re:
%
setenv EDITOR /usr/local/bin/emacs
Ugyanez a Bourne-féle parancsértelmezőkben:
%
export EDITOR="/usr/local/bin/emacs"
A legtöbb parancsértelmezőben a nevük
előtt szerepeltetett $
jel
segítségével kérhetjük a
környezeti változók
értékének
behelyettesítését a parancssorba. Ennek
megfelelően az echo $TERM
parancs
kiíratja a TERM
változó
aktuális értékét, mivel ebbe a
parancsértelmező már az echo
meghívása előtt behelyettesíti a
TERM
értékét.
A parancsértelmezők számos speciális
karaktert, ún. metakaraktert az adatok különleges
reprezentációjaként kezelnek.
Köztük a leggyakrabban használt a
*
, amely tetszőleges számú
karaktert helyettesít egy állomány
nevében. Az ilyen metakarakterek
segítségével tudunk egyszerre több
állományt is megnevezni. Például ha
begépeljük az echo *
parancsot,
akkor majdnem ugyanazt kapjuk eredményül, mintha az
ls
parancsot adtuk volna ki, hiszen a
parancsértelmező ilyenkor veszi az összes
*
metakarakterre illeszkedő
állományt, és a kiíratásukhoz
pedig rendre behelyettesíti ezeket a parancssorba az
echo
paramétereként.
Ha nem szeretnénk, hogy a parancsértelmező
értelmezze a speciális karaktereket, akkor egy
"backslash" (visszaper) (\
)
karaktert eléjük téve mindezt
megakadályozhatjuk. Az echo $TERM
parancs ugyebár kiíratja a terminálra
vonatkozó környezeti változó
beállítását, azonban a echo
\$TERM
változatlanul kiírja a
$TERM
szöveget.
A parancsértelmezőnk legegyszerűbben a
chsh
parancs használatával
változtatható meg. A chsh
kiadása után elindítja az
EDITOR
környezeti változónak
megfelelő szövegszerkesztőt, ha nem lenne ilyen,
akkor alapértelmezés szerint a
vi
hívódik meg. Az így
megnyitott állományban változtassuk meg
kedvünk szerint a "Shell: " kezdetű
sort.
A chsh
parancsnak megadhatjuk az
-s
opciót is, amin keresztül
szövegszerkesztő használata nélkül
be tudjuk állítani a
parancsértelmezőt. Például ha a
parancsértelmezőnket a bash
-re
akarjuk lecserélni, akkor ezt írjuk be:
%
chsh -s /usr/local/bin/bash
A használni kívánt
parancsértelmezőnek szerepelnie
kell az /etc/shells
állományban. Ha a kiválasztott
parancsértelmezőt a Portgyűjteményből
telepítettük fel, akkor az már minden
bizonnyal bekerült oda. Ha viszont saját magunk
raktuk volna fel, akkor ide is fel kell vennünk.
Például ha a bash
-t
manuálisan telepítettük és
másoltuk a /usr/local/bin
könyvtárba, akkor így kell
eljárnunk:
#
echo "/usr/local/bin/bash" >> /etc/shells
Majd próbálkozzunk újra a
chsh
paranccsal.
Ha kérdése van a FreeBSD-vel kapcsolatban, a
következő címre írhat (angolul):
<questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon:
<gabor@FreeBSD.org>.