Linux alapok 12. rész - Terminál használat alapfokon

Linux alapok 12. rész - Terminál használat alapfokon

Szerző: razoli

Itt az idő, hogy kicsit elszakadjunk az egér-orientált világtól és betekintsünk a Linux rendszerek egyik legfontosabb eszközének használatába: a parancssorba.

Ez a téma is megérdemelne egy külön sorozatot, hiszen a parancssor mint eszköz a Linux/Unix rendszereken egy nagyon érzékeny, nagyon jól használható eszköz, nem túlzás állítani, hogy egy külön programnyelv, mégha annak kicsit szegényes is. Megpróbáljuk az alapismeretek kategóriába beszorítani a lényeges tudnivalókat, mely az ismerkedés szinten mindenképp szükséges és elégséges.

Mint az már korábban elhangzott, a Linux grafikus felület nélkül is teljes értékű rendszer, gyakorlatilag minden megoldható parancssorból. Ebben az esetben viszont kizárólag konzolon keresztül adhatunk utasítást és olvashatjuk le az eredményt. A konzolon egy parancsértelmező (shell) fut, ami feldolgozza az általunk kiadott parancsokat. A mostani shellek őse a Bourne-shell volt, mely tudásában a mostani parancsértelmezőkhöz képest kis tudású volt - de egyáltalán nem elhanyagolható. A fejlesztések természetesen több irányba elindultak, a Linux rendszereken azonban nagyjából egységesen alapértelmezettben a bash (Bourne again shell) parancsértelmezővel találkozhatunk. Egyesek szerint kőkorszaki dolog, mások szerint még mindig a leghatékonyabb eszköz - ízlések és pofonok. Nem célunk egyik oldalra sem állni, egyszerűen megpróbáljuk bemutatni mit kezdhetünk magunkkal ha parancssor elé kerülünk.

Általános terminál ismertető

Mindjárt az elején tisztáznánk a "terminológiát". a parancsértelmezőt szokták konzolnak, terminálnak stb. nevezni. Ez régebbi időkből maradt meg, jelen cikkben nem tennénk különbséget a grafikus felületen található "virtuális terminál" és a grafikus felület nélküli "mélyterminálról". Általában a legtöbb Linux rendszer hat mélyterminált futtat alapértelmezetten, tehát mindenféle grafikus felület indítása nélkül ennyit elérünk. Ezeket a rendszer felállása után az alt+control+f1-f6 billentyűk lenyomásával érhetjük el. Amennyiben van grafikus felület, a 7-es terminálon indul (F7), illetve lehetőségünk van a rendszer által küldött üzeneteket külön, általában a 8-as terminálra küldeni, így nem "szemeteli" tele az éppen futó alkalmazás eredményét (sokszor átláthatatlanná válik). Ehhez a /etc/syslog.conf "I like to have messages displayed on the console..." kezdetű sor alatti rész elől el kell távolítani a # jelet.

Ezeken túl, ha grafikus felületet használva szeretnénk parancssorból tevékenykedni, erre lett kitalálva a terminál-emulátor, amely egy virtuális konzol. Ezek ablakban futtatható terminálok, melynek több változata létezik, de a legegyszerűbb is tökéletesen ellátja a feladatát (illetve manapság már nagyjából mindegyik dizájnolható, finomhangolható a végtelenségig - átlátszó háttér, színek, menük, stb...). A legelterjedtebb és egyik legegyszerűbb terminál-emulátor az xterm, szinte mindegyik disztribúcióban megtalálható. Az asztali környezetek is rendelkeznek saját terminál emulátorral (KDE - Konsole, Gnome - Gnome-terminal, XFce - Xterminal, nem összekeverendő az xterm-mel), de ezek általában az adott munkakörnyezettől függenek.

Néhány alap parancs

(Aki használt már DOS-t, annak ismerős parancsok köszönhetnek vissza.)

parancs leírás/használat
cat A szabványos bemenet, egy fájl, stb. tartalmát átirányitja a szabványos kimenetre. Magyarul kiirja a képernyőre vagy a fájl tartalmát, vagy amit begépelünk. Mire jó ez? Például kiirathatjuk vele a konzolra egy fájl tartalmát. Vagy egy parancsnak, amely a szabványos bemenetről veszi az adatot, felolvashatunk egy szöveget. Csak a vicc kedvéért: cat /boot/vmlinuz > /dev/dsp - a rendszermagot irányitjuk át a hangkártyára, magyarán lejátsza azt, mint zenét...
cd Könytár váltás (change directory). A cd után az a könyvtár áll, ahova be akarunk lépni (akár több szinten is, azaz cd itport/cikkek/2006/marcius egy lépéssel lép bele a 4. alkönyvtárba). Felfele a cd .. paranccsal léphetünk (akár cd ../../..). önmagában kiadva a cd parancs a saját felhasználói home könyvtárunkba ugrik
cp Fájl másolás (Copy). cp forrásfájl célfájl, vagy cp itport/kepek/logo.jpg itport/cikkek/2006/kepek/
clear Konzol tartalmának törlése
date
Aktuális dátum lekérdezése
grep,
fgrep,
egrep
Szöveges állományban megadott mintára keres és kiirja azt a sort. fgrep minta állomány. Ha csak a sor eleji mintát akarunk keresni, akkor fgrep ^minta állomány.
find állomány keresése. find -name linux* kiir minden - az aktuális könyvtártól lefelé található - "linux"-al kezdődő állományt. Ahova nincs jogosultságunk belépni, az hibaüzit dob, ennek kiszűrésére toldjuk meg a 2>/dev/null paranccsal, mely hatására a hibaüzenet nem jelenik meg a képernyőn (átláthatóbb lesz az eredmény), vagyis find -name linux 2>/dev/null 
ls  Könyvtár tartalmának kilistázása (list). önmagában csak az állományok neveit irja ki, ls -l minden információt kiir, ls -a kilistázza a rejtett (ponttal kezdődő) állományokat is.
man  Parancsokhoz kézikönyv. man parancs
mkdir Könyvtár létrehozása mkdir újkönyvtár
more Fájl tartalmának kiirása oldalanként
mv Fájl mozgatása (move). mv forrásfájl célfájl, vagy mv itport/kepek/logo.jpg itport/cikkek/2006/kepek/
passwd Jelszavunk megváltoztatása
pwd Visszaadja az aktuális könyvtár elérési útvonalát (ha esetleg a promptból nem derülne ki hol is vagyunk épp)
rm Fájl törlése (remove). Vigyázat, mindent töröl, nem kérdez rá, ezért minden esetben toldjuk meg egy -i kapcsolóval: rm -i törlendő ‘fájl vagy rm -i *.jpg -> az -i hatására rákérdez minden egyes elemre.
rmdir Könyvtár törlése, de csak ha üres. Ha nem üres, akkor használjuk az rm -r célkönyvtár parancsot - de csak ésszel (rekurzivan törli a tartalmát és végül a könyvtárat)
who bejelentkezett felhasználók kilistázása
whoami saját login nevünk

Ezek alapvető, minden rendszerben megtalálható parancsok (a /bin könyvtárban találhatóak, illetve néhány a /sbin útvonalon). Ehhez jönnek a telepített programok, melyeket szintén nevük leírásával indíthatunk el, például a firefox parancs kiadásának hatására elindul a böngésző, viszont a terminál meg lesz fogva: a program futásáig nem tudunk parancsot kiadni - akkor célszerű programot így indítani, ha valami rendellenességet tapasztalunk működésében, akár ki is fagy, ugyanis a hiba oka 99,9%-ban olvasható lesz a terminál ablakban. Ha több programot is indítani akarunk, akkor lehetőség van a háttérben való futtatásra - ekkor a terminált továbbra is használhatjuk, hogy hogyan arra rögtön rátérünk.

Néhány fogás

Háttérben futtatáshoz használjuk a & jelet a parancs után: firefox & - ilyenkor csak egy szám jelenik meg, az elindított processz száma - mely a futó programot takarja - és visszakapjuk a promptot. (Ezzel a számal találhatjuk meg egy korábbi cikkünkben említett /proc könyvtárban, illetve ha le akarjuk "lőni", akkor a kill parancsot alkalmazva erre a számra kell hivatkozni, de erre létezik kényelmesebb megoldás is, lásd lentebb).
Joker karakterek itt is használhatóak. A csillag mindenre kiegészít - linux* minden linux-szal kezdődő állományt, sort kiír - a kérdőjel egy karaktert vált ki - így tehát a ?????.mp3 minden 5 karakterből álló mp3-at magában foglal.
Terminálon futtatott program minden esetben megszakítható a control+c billentyűkombinációval. Ha egy programmal problémánk akad, be akarjuk zárni, de nem megy grafikusan akkor használjuk az elöbb említett kill parancs példájára a killall parancsot, ám ebben az esetben nem kell felkutatnunk, hogy mi a processz száma (amit a ps axfv kilistáz), hanem egyszerűen megadjuk a program nevét, pld: killall firefox

Egy hasznos eszköz is a rendelkezésünkre áll ezen kívül: a parancs/fájlnév kiegészítés. Ez azt jelenti, hogy ha elkezdünk gépelni egy parancsot és megnyomjuk a TAB billentyűt, akkor kiegészíti, ameddig lehetséges, illetve ha egyértelmű, akkor teljesen. Ugyanez igaz az adott könyvtár állományaira és alkönyvtáraira. Hosszú nevek esetén nagyon meg tudja gyorsítani a munkát.
Ha esetleg nem működne ez a funkció, akkor rendszergazdaként nyissuk meg a /etc/bash.bashrc állományt valamely szövegszerkesztővel és az "enable bash completion in interactive shells" sort követő sorokból távolítsuk el a soreleji # jelet, majd mentsük el.

Billentyűkombinációk
Néhány hasznos billentyűkombináció, melyeket bash alatt kényelmesen használhatunk (a lista távolról sem teljes:

control + r: rekurzív keresés a korábban kiadott parancsok között. Leütése után be kell gépelni a keresett parancs valamely töredékét
control + c: futó alkalmazás megszakítása
control + u: kurzortól balra eső rész levágása
control + k: kurzortól jobbra eső rész levágása
control + a: sor elejére ugrás
control + e: sor végére ugrás
control + l: a konzol törlése/frissítése