Tartalomjegyzék
Kivonat
Manapság sok ember használ számítógépet valamilyen (például GNOME vagy KDE) grafikus felülettel. Bár ezek számtalan funkciót kínálnak, automatikus feladatok végrehajtásához használatuk korlátozott. A parancsértelmezők remek kiegészítői a grafikus felületnek és ez a fejezet áttekintést nyújt a parancsértelmezők, jelen esetben a Bash vonatkozásában.
Hagyományosan a parancsértelmező a Bash (Bourne again Shell). Amikor a fejezetben „a parancsértelmező” kerül említésre, akkor ez a Bash parancsértelmezőt jelenti. A Bash parancsértelmező mellett több parancsértelmező is elérhető (ash, csh, ksh, zsh, …), mindegyik különböző funkcióval és karakterisztikával rendelkezik. Amennyiben további információra van szüksége a többi parancsértelmezővel kapcsolatban, keressen rá a shell kifejezésre a YaST szoftverkezelő moduljában.
A parancsértelmező az alábbi módokon hívható meg:
Interaktív bejelentkezési parancsértelmező. Ennek használata akkor történik, ha a Bash a --login paraméterrel indul vagy egy távoli gépre jelentkezik be SSH-n keresztül.
„Szokásos” interaktív parancsértelmező. Ennek használata az xterm, konsole, gnome-terminal vagy hasonló eszközök indításakor történik.
Nem interaktív parancsértelmező. Ez akkor kerül felhasználásra, ha a parancsértelmező parancssorból indul.
Attól függően, hogy milyen típusú parancsértelmezőt használ, különböző konfigurációs fájlok kerülnek beolvasásra. Az alábbi táblázat a bejelentkező és nem-bejelentkező parancsértelmező konfigurációs fájljait mutatja.
20.1. táblázat - Bash konfigurációs fájlok a bejelentkező parancsértelemzőhöz¶
|
Fájl |
Leírás |
|---|---|
|
|
Ne módosítsa ezt a fájlt, mert a következő frissítéskor a módosítások elveszhetnek. |
|
|
Használja ezt a fájlt az |
|
|
Rendszerszintű konfigurációs fájlok különböző programokhoz |
|
|
Itt lehet felhasználó specifikus beállításokat megadni |
20.2. táblázat - Bash konfigurációs fájlok a nem bejelentkező parancsértelmezőkhöz¶
|
|
Ne módosítsa ezt a fájlt, mert a következő frissítéskor a módosítások elveszhetnek. |
|
|
Használja ezt a fájlt a Bash rendszerszintű módosításainak beállításához. |
|
|
Itt adja meg a felhasználóspecifikus módosításokat. |
Ezen túlmenően a Bash használ még néhány fájlt:
20.3. táblázat - Különleges fájlok a Bash parancsértelmezőhöz
|
Fájl |
Leírás |
|---|---|
|
|
A begépelt parancsok listáját tartalmazza |
|
|
Kilépéskor kerül lefuttatásra |
A következő táblázat egy rövid áttekintést nyújt a Linux rendszereken található legfontosabb könyvtárakról. További részletes információ a könyvtárakról és az alkönyvtárakról a táblázatot követő listában található.
20.4. táblázat - Egy szokásos könyvtárfa áttekintése
|
Könyvtár |
tartalom |
|---|---|
|
gyökérkönyvtár, a könyvtárfa kiindulópontja. | |
|
Alapvető bináris fájlok, mint például a parancsok, amelyekre mind a rendszer-adminisztrátoroknak, mind a felhasználóknak szükségük van. Általában tartalmazzák a parancsértelmezőket, mint például a Bash-t. | |
|
A rendszertöltő statikus fájljai. | |
|
Fájlok, amelyekre a gépspecifikus eszközöknek van szüksége. | |
|
Gépspecifikus konfigurációs fájlok. | |
|
A rendszeren található felhasználók saját könyvtárai. A | |
|
Alapvető osztott programkönyvtárak és kernelmodulok. | |
|
Csatolási pontok a cserélhető adathordozókhoz. | |
|
Csatolási pontok az átmenetileg felcsatolt fájlrendszerekhez. | |
|
Kiegészítő alkalmazások csomagjai. | |
|
A | |
|
Alapvető bináris rendszerfájlok. | |
|
Adatok a rendszer által biztosított szolgáltatásokhoz. | |
|
Ideiglenes fájlok. | |
|
| |
|
Változó adatok, például naplófájlok. | |
|
Az alkönyvtár csak akkor jelenik meg, ha a Linux mellett a Microsoft Windows is telepítve van rendszerén. Windows partíció adatait tartalmazza. |
A következő lista részletesebb információval és példákkal szolgál arról, hogy milyen fájlok és alkönyvtárak találhatók a fájlrendszerben:
/bin
Tartalmazza azokat a parancsokat, amelyeket a root és a többi felhasználónak is használnia kell. Ilyen parancsok a következők: ls, mkdir, cp, mv, rm és rmdir. A /bin tartalmazza a Bash-t is, amely az openSUSE alapértelmezett parancsértelmezője.
/boot
Tartalmazza a rendszerindításhoz szükséges adatokat, mint a rendszertöltőt, a kernelt és olyan adatokat, amelyekre akkor van szükség, mielőtt a kernel felhasználó módú programokat kezdene futtatni.
/dev
Olyan eszközfájlokat tartalmaz, amelyek a hardverkomponenseket reprezentálják.
/etc
Tartalmazza a helyi konfigurációs fájlokat, amelyek olyan programok beállításait tartalmazzák, mint amilyen az X Window System. Az /etc/init.d alkönyvtár tartalmazza azokat a parancsfájlokat, amelyek a rendszerindítás során kerülnek végrehajtásra.
/home/felhasználónév
tartalmazza azon felhasználók magánjellegű adatait, akik fiókkal rendelkeznek a rendszerben. Az itt található fájlokat csak azok tulajdonosa vagy a rendszergazda módosíthatja. Alapértelmezés szerint, az e-mail könyvtár és az asztali környezet személyes beállításait tartalmazza rejtett fájlokban és könyvtárakban. Saját beállításaikat a A KDE-felhasználók a .kde4, a GNOME-felhasználók pedig a .gconf könyvtárban találhatják. A rejtett könyvtárakkal kapcsolatos további információ a Section “Key Features” (Chapter 6, Basic Concepts, ↑Start-Up) fejezetben található.
![]() | Saját könyvtár (home) egy hálózati környezetben |
|---|---|
Hálózati környezetben a saját könyvtár esetleg nem a | |
/lib
Tartalmazza az alapvető osztott programkönyvtárakat, amelyek a rendszer betöltéséhez és a parancsok futtatásához szükségesek a root fájlrendszeren. A Windows rendszereken ezek az osztott programkönyvtárak a DLL-fájlok.
/media
Csatolási pontokat tartalmaz az olyan cserélhető adathordozókhoz, mint amilyenek a CD-ROM-ok, pendrive-ok, digitális kamerák (ha USB-t használnak). A /media könyvtár alatt általánosságban bármelyik meghajtó megjelenhet a merevlemez kivételével. A cserélhető adathordozó behelyezése vagy csatlakoztatása után, ha fel van csatolva, akkor itt érhető el egy beszédes nevű alkönyvtárban.
/mnt
Ez a könyvtár tartalmazza az ideiglenesen felcsatolt fájlrendszerek csatolási pontjait. A root felhasználó általában ide csatolja fel a fájlrendszereket.
/opt
Más gyártók szoftvereinek telepítésére fenntartott hely. További programok és nagyobb kiegészítő programcsomagok találhatók itt.
/root
Saját könyvtár a root felhasználó számára. A root felhasználó személyes adatai találhatók itt.
/sbin
Amint azt az s is jelzi, itt a root felhasználó (superuser) segédprogramjai találhatók. Az /sbin tartalmazza a rendszerindításhoz, visszatöltéshez és szükség esetén a /bin helyreállításhoz szükséges bináris állományokat.
/srv
A rendszer által biztosított szolgáltatásokhoz – mint amilyen az FTP vagy a HTTP –, tartozó adatokat tartalmazza.
/tmp
Ezt a könyvtárat olyan programok használják, amelyeknek szüksége van átmeneti fájltárolásra.
![]() | A /tmp könyvtár kiürítése rendszerindításkor |
|---|---|
A | |
/usr
A /usr könyvtárnak semmi köze a felhasználókhoz, mert a UNIX system resources rövidítése. A /usr könyvtárban található adatok statikus, csak olvasható adatok, amelyek megoszthatók olyan rendszerek között, amelyek követik a Filesystem Hierarchy Standard (FHS) szabványt. Ez a könyvtár tartalmazza az összes alkalmazást és egy másodlagos hierarchiát hoz létre a fájlrendszerben. Itt található a KDE4 és a GNOME. A /usr könyvtár számos alkönyvtárat tartalmaz: /usr/bin, /usr/sbin, /usr/local és /usr/share/doc.
/usr/bin
Általánosan elérhető programokat tartalmaz.
/usr/sbin
Azokat a démonokat és programokat tartalmazza, amelyek nem feltétlenül szükségesek a rendszer indulásához.
/usr/local
A rendszergazda ebbe a könyvtárba telepíthet helyi, disztribúciófüggetlen kiterjesztéseket.
/usr/share/doc
Különböző, a rendszerrel kapcsolatos dokumentációkat és kiadási megjegyzéseket tartalmaz. A manual alkönyvtárban található ennek a könyvnek az online változata. Ha egynél több nyelv van telepítve, akkor esetleg a dokumentáció itt különböző nyelveken is elérhető itt.
A packages könyvtárban találhatók azok a dokumentumok, amelyek a rendszeren telepített szoftvercsomagok részei. Minden csomaghoz egy alkönyvtár jön létre /usr/share/doc/packages/, amely gyakran tartalmazza a README fájlokat és néha példaprogramokat, konfigurációs fájlokat és további parancsfájlokat.
csomagnév
Ha a howto csomag telepítve van a rendszeren, akkor az /usr/share/doc alatt található egy howto alkönyvtár is, ahol további dokumentumok találhatók a Linux-szoftverek telepítésének és üzemeltetésének számos feladatáról.
/var
Mivel a /usr csak olvasható, statikus adatokat tartalmaz, így a /var tartalmazza a működés során kiírt adatokat, mint például a napló fájlok vagy feldolgozásra váró adatok. A /var/log/ könyvtár alatt található legfontosabb naplófájlokról a következő helyen található áttekintés: Table “Log Files” (↑Start-Up).
/windows
A /windows alkönyvtár csak akkor jelenik meg, ha a Linux mellett Microsoft Windows is telepítve van rendszerén. A számítógépen található Windows partíció adatait tartalmazza. A Windows által használt fájlrendszertől függően akár szerkeszteni is lehet az itt található adatokat. Ha a Windows FAT32 fájlrendszert használ, akkor a rajta található fájlok megnyithatók és szerkeszthetők. Az NTFS fájlrendszer az openSUSE rendszeren szintén írható. Azonban az NTFS-3g fájlrendszer illesztőprogramja korlátozott funkcionalitással bír. Erről további információ a 34.4. - Fájlok elérése különböző operációs rendszereken, ugyanazon a gépen fejezetben található.
A parancsfájlok segítségével bizonyos feladatok kényelmesen elvégezhetők: adatgyűjtés, szó- vagy kifejezéskeresés szövegfájlokban stb. Az alábbi példában egy rövid parancsfájl egy szöveget jelenít meg:
20.1. példa - Parancsfájl szöveg megjelenítésére
#!/bin/sh# Output the following line:
echo "Hello World"
A parancs futtatásának néhány előfeltétele van:
Minden parancsfájlnak tartalmaznia kell Shebang sort (ebben a példában ez szerepel). Ellenkező esetben a fordítót kézzel kell meghívni.
A parancsfájl bármilyen módon elmenthető. Azonban célszerű egy olyan könyvtárba elmenteni, ahol azt a parancsértelmező megtalálja. A keresési útvonal a parancsértelmezőben a PATH környezeti változón keresztül kerül meghatározásra. Általában egy felhasználónak nincs írási joga az /usr/bin könyvtárhoz. Ezert javasolt a parancsfájlokat a felhasználók ~/bin/ könyvtárába menteni. A fenti példa neve hello.sh legyen.
A parancsfájlnak futási jogra van szüksége. A jog beállítása az alábbi paranccsal lehetséges:
chmod +x ~/bin/hello.sh
Ha minden fenti előfeltétel teljesül, akkor a parancs a következő módokon futtatható:
Abszolút útvonalként. Ez a parancsfájl abszolút útvonalként futtatható. Ebben az esetben ez ~/bin/hello.sh.
Bárhonnan.
Amennyiben a PATH környezeti változó olyan könyvtárat is tartalmaz, ahol a parancsfájl található, akkor a parancsfájl egyszerűen futtatható a hello.sh parancs begépelésével.
Minden parancs három csatornát használhat a bemenethez vagy a kimenethez.
Szabványos kimenet. Ez az alapértelmezett kimeneti csatorna. Amikor egy parancs kinyomtat valamit, akkor a szabványos kimeneti csatornát használja.
Szabványos bemenet. Amennyiben a parancsnak szüksége van a felhasználó részéről valamilyen bemenetre, akkor ezt a csatornát használja.
Szabványos hiba. A parancs ezt a csatornát használja a hibajelentésekhez.
Ezen csatornák átirányításához a következő lehetőségek vannak:
Parancs > Fájl
A parancs kimenetét fájlba menti. Amennyiben ez egy létező fájl, akkor az törlésre kerül. Például az ls parancs a kimenetét a listing.txt fájlba menti:
ls > listing.txt
Parancs >> Fájl
A parancs kimenetét a fájlhoz fűzi. Például az ls parancs fájl kimenetét a listing.txt fájlhoz fűzi:
ls >> listing.txt
Parancs < Fájl
A fájlt a parancs beviteleként értelmezi. Például a read parancs beolvassa a fájl tartalmát az a változóba:
read a < foo
Parancs1 | Parancs2
A bal parancs kimenetét átirányítja a jobb parancs bemenetére. Például a cat parancs kimenete a /proc/cpuinfo fájl tartalma. Ezt a kimenetet használja a grep, hogy kiszűrje azokat a sorokat, amelyekben a cpu szerepel:
cat /proc/cpuinfo | grep cpu
Minden csatorna rendelkezik fájlleíróval: 0 (nulla) a szabványos bemenet, 1 a szabványos kimenet, a 2 pedig a szabványos hiba. Lehetőség van a fájlleírót a < vagy > karakterek elé tenni. Például a következő parancssor a foo kezdetű fájlokban keres, de a hibákkal nem foglalkozik, mivel azokat átirányítja a /dev/null-ba, a szemetesbe:
find / -name "foo*" 2>/dev/null
Az álnév egy vagy több parancs más néven történő hivatkozása. Ez hasznos lehet, ha a használt parancs nehezen megjegyezhető vagy sok paraméterrel rendelkezik. Egy álnév szintaxisa a következő:
aliasNAME=DEFINITION
Például, a következő sor egy lt álnevet állít be, amely a hosszú formátumú kimenetet állít elő (az -l kapcsoló használatával), a módosítás dátuma szerint rendezi azokat (-t) és a listát fordított sorrendben jeleníti meg (-r):
alias lt='ls -ltr'
Az összes beállított álnevet az alias parancs segítségével lehet megjeleníteni. Az álnév eltávolításához az unalias parancsot lehet használni.
A parancsértelmezőben egy változó lehet globális és lokális. A globális értékeket vagy a környezeti változókat az összes parancsértelmező eléri. Ezzel ellentétben a helyi változókat csak az aktuális parancsértelmező látja.
A környezeti változók megtekintéséhez a printenv parancsot kell használni. Amennyiben egy adott változó értékére kíváncsi, akkor azt paraméterként kell megadni:
printenv PATH
Mind a globális, mind a helyi változókat az echo paranccsal lehet kiíratni:
echo $PATH
Helyi változó megadásakor a változónév után egyenlőség jelnek, majd a változó értékének kell állnia:
PROJECT="SLED"
Az egyenlőség jel egyik oldalán se használjon szóközt, mert ez hibát okoz. Környezeti változó megadásakor az export parancsot kell használni:
export NAME="tux"
Változó eltávolításához az unset parancsot kell használni:
unset NAME
Az alábbi táblázat tartalmaz néhány általános környezeti változót, amelyet parancsfájlokban lehet használni:
20.5. táblázat - Hasznos környezeti változók¶
|
|
az aktuális felhasználó saját (home) könyvtára |
|
|
az aktuális gép neve |
|
|
amennyiben a használt eszköz vagy program több nyelven is elérhető, akkor ezt a változót használja a gépen használt nyelv megállapítására. Az angol |
|
|
a parancsértelmező keresési útvonalainak könyvtárlistája kettősponttal elválasztva |
|
|
meghatározza a parancsok előtt megjelenő promptot |
|
|
meghatározza a másodlagos promptot többsoros parancsok futtatásakor |
|
|
aktuális munkakönyvtár |
|
|
aktuális felhasználó |
Például, ha van egy foo.sh nevű parancsfájl, akkor az így is futtatható:
foo.sh "Tux Penguin" 2000
Ahhoz, hogy minden paraméter átadásra kerüljön a parancsfájl részére, megfelelően sorrendben kell megadni azokat. Ezek $1 az első paraméter esetén, $2 a másodiknál, és így tovább. Összesen kilenc paramétert lehet használni. A parancsfájl nevéhez a $0 paramétert kell használni.
Az alábbi foo.sh parancsfájl kiírja az összes paramétert 1-től 4-ig:
#!/bin/sh echo \"$1\" \"$2\" \"$3\" \"$4\"
A parancsfájl futtatásakor a fenti paraméterek figyelembevételével a következő eredményt kapjuk:
"Tux Penguin" "2000" "" ""
Változó behelyettesítéséhez a változó jobb vagy bal oldalán egy mintát kell használni. Az alábbi lista a lehetséges szintaxist tartalmazza:
${VAR#minta}
eltávolítja a legrövidebb lehetséges egyezést a bal oldalról:
file=/home/tux/book/book.tar.bz2
echo ${file#*/}
home/tux/book/book.tar.bz2${VAR##minta}
eltávolítja a leghosszabb lehetséges egyezést a bal oldalról:
file=/home/tux/book/book.tar.bz2
echo ${file##*/}
book.tar.bz2${VAR%minta}
eltávolítja a legrövidebb lehetséges egyezést a jobb oldalról:
file=/home/tux/book/book.tar.bz2
echo ${file%.*}
/home/tux/book/book.tar${VAR%%minta}
eltávolítja a leghosszabb lehetséges egyezést a jobb oldalról:
file=/home/tux/book/book.tar.bz2
echo ${file%%.*}
/home/tux/book/book${VAR/minta_1/minta_2}
behelyettesíti a VAR tartalmát a minta_1-ből, a minta_2-be:
file=/home/tux/book/book.tar.bz2
echo ${file/tux/wilber}
/home/wilber/book/book.tar.bz2A parancsok feltételes végrehajtásához a parancsértelmező lehetőséget biztosít a parancsok összefűzésére és csoportosítására. Minden parancs egy kimeneti kóddal tér vissza, amely meghatározza, hogy a művelet sikeres vagy sikertelen volt. Amennyiben ez 0 (nulla), akkor a parancs végrehajtása sikeres volt, minden más esetben a parancsra jellemző hibát jelzi.
A parancsok a következőképpen csoportosíthatók:
Parancs1 ; Parancs2
a parancsokat egymást követően futtatja. A kimeneti kód nem kerül ellenőrzésre. A következő parancs megjeleníti a fájl tartalmát a cat parancs segítségével és kiírja a tulajdonságait az ls parancs használatával, függetlenül annak kimeneti kódjára:
cat filelist.txt ; ls -l filelist.txt
Parancs1 && Parancs2
a jobb oldali parancsot csak akkor futtatja, ha a baloldali sikeres volt (logikai ÉS). Az alábbi sor megjeleníti a fájl tartalmát és csak abban az esetben írja ki a fájl tulajdonságait, amennyiben az előző parancs sikeres volt (összehasonlítva az előző példával):
cat filelist.txt && ls -l filelist.txt
Parancs1 || Parancs2
a jobb oldali parancsot futtatja, ha a bal oldali parancs futtatása sikertelen (logikai VAGY). A következő sor csak akkor hoz létre a /home/wilber/bar könyvtárat, ha a /home/tux/foo könyvtár létrehozása sikertelen:
mkdir /home/tux/foo || mkdir /home/wilber/bar
függvénynév(){ ... }
parancsértelmező függvényt hoz létre. A pozicionált paramétereket lehet használni saját paramétereinek eléréséhez. Az alábbi sor egy hello függvényt definiál egy rövid üzenet kiírásához:
hello() { echo "Hello $1"; }Ezt a függvényt a következőképpen lehet meghívni:
hello Tux
amely az alábbit fogja kiírni:
Hello Tux
A parancsfájl futásának szabályozására a parancsértelmező a while, if, for és case vezérlőkkel rendelkezik.
Az if parancs kifejezések vizsgálatára használható. Például a következő kód ellenőrzi, hogy a tux-e az aktuális felhasználó:
if test $USER = "tux" ;then echo "Hello Tux." else echo "You are not Tux." fi
A vizsgált kifejezés lehet rendkívül komplex és egyszerű is. Az alábbi kifejezés ellenőrzi, hogy létezik-e foo.txt fájl:
if test -e /tmp/foo.txt ; then echo "Found foo.txt" fi
A vizsgált kifejezés rövidíthető szögletes zárójelbe is:
if [ -e /tmp/foo.txt ] ; then echo "Found foo.txt" fi
További hasznos kifejezések a http://www.cyberciti.biz/nixcraft/linux/docs/uniqlinuxfeatures/lsst/ch03sec02.html weboldalon találhatók.
A for segítségével parancsok futtathatók egy lista elemein. Például, a következő kód az aktuális könyvtárban található PNG fájlokról jelenít meg információkat:
for i in *.png; do ls -l $i done
A Bash parancsértelmezővel kapcsolatos fontos információk a man oldalakon találhatók: man sh. A témával kapcsolatban további információ a következő helyeken található:
http://tldp.org/LDP/Bash-Beginners-Guide/html/index.html– Bash útmutató kezdőknek (angol nyelvű)
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html– Bash programozás - bevezetés (angol nyelvű)
http://tldp.org/LDP/abs/html/index.html– Bash útmutató haladóknak (angol nyelvű)
http://www.grymoire.com/Unix/Sh.html– Sh - a Bourne parancsértelmező (angol nyelvű)