Parancssor használata Linux rendszereken I.

Anno a Szoftverteszt.hu oldal linux szekciójába készítettem egy leírást a linux shell parancsokról. Az írás némiképpen hiányos volt, valamint nem üti meg a jelenlegi minőségi mércémet. Ezért úgy döntöttem újraírom az egészet. Mivel igencsak hosszú írás lenne, ezért több részletben fogom közölni. Az első részben a shell alapvető használatáról lesz szó, valamint az alapvető fájlkezelő parancsokról.

Sorozat bevezető

Az alap parancsok mellet lesz szó itt egzotikusabb programokról is, amelyek nem mindegyike van előre telepítve bármilyen tetszőleges Linux disztribúción. Ezen parancsokat nagy valószínűséggel külön kell telepíteni vagy forráskódból, vagy a disztribúció csomag kezelőjének segítségével.

Csomag kezelők közül csak egyetlen egy van részletesen ismertetve a leírásban. Ez a csomagkezelő a dpkg/apt páros. Ezen csomagkezelő megtalálható minden Debian/Ubuntu alapú rendszerben.

Mivel több írás várható, ezért a többi cikk megírásánál azt veszem alapul, hogy a sorozat előző részeit olvastad.

Általános tudnivalók

Parancssoros rendszerek esetén az általános felépítése egy parancsnak a következő:

parancs neve kapcsolók fájlok.

A kapcsolók olyan paraméterek, amelyek kötőjellel (-), vagy dupla kötőjellel (–) kezdődnek. A – jeles kapcsolókat rövid nevű kapcsolóknak nevezik, mivel ezek általában 1-2 karakterből állnak. A — jeles kapcsolók hosszú nevűek. Ezen kódolási konvenció nem minden programra jellemző, nincs univerzális szabvány. Ezért egy új parancs használata előtt érdemes áttekinteni a használati utasítását.

Az összes Linuxos parancsértelmező kis és nagybetű érzékeny. Tehát a hello.txt és Hello.txt két különböző fájlt jelent az operációs rendszer számára.

Elektronikus használati utasítás minden parancssoros programhoz elérhető. Erre a man parancs szolgál, amely megjeleníti az argumentumnak megadott program dokumentációját. A dokumentum megjelenítőből a q gomb megnyomásával lehet kilépni.

Elérési útvonalakban használhatóak speciális rövidítések is. Ezek:

  • ~
    A bejelentkezett felhasználó saját mappáját jelenti
  • ..
    Aktuális könyvtártól egyel feljebb lévő könyvtárat jelenti
  • .
    Aktuális könyvtár amiben vagyunk.

A Parancsértelmező

linux rendszerek esetén sok parancsértelmező közül választhatunk, azonban az általánosan elterjedt értelmező, amit rengeteg rendszer alapértelmezetten kínál az a BASH. Mint minden parancsértelmező ez is kínál programozási lehetőségeket. A programozási nyelve nem éppen egyszerű, de azt szokták mondani, hogy aki jártas a programozásában, az csak nagyon ritkán nyúl C nyelvhez egy feladat megoldásához.

A BASH-hez kapcsolódó programozási ismeretekből a legfontosabbak az operátorok, mivel ezek használata elkerülhetetlen, ha az ember valami komolyabb dolgot akar tenni.

Ki és bemenet fájlba/fájlból átirányító operátorok

Mint ahogy a név is mutatja, ezen operátorok arra jók, hogy egy a lemezen lévő fájlt bemenetképpen szolgáltassunk parancsnak, vagy a parancs kimenetét fájlba írjuk. Ezen célra a < és > jelek használhatóak. Használatuk:

  • parancs > kimenet
    A parancs által a képernyőre írandó szöveget nem jeleníti meg, helyette beleírja a kimenet fájlba.
  • parancs >> kimenet
    Hasonlóképpen működik a sima > operátorhoz, azonban ha a kimenet fájl már létezik, akkor nem írja felül azt, hanem a fájl végére fűzi a kimenetet.
  • parancs < bemenet
    Olyan programok esetén használható, amelyek billentyűzetről várnának bemenetet. Ezen operátor segítségével a bemenet szolgáltatható egy fájlból.

Parancsok kimenetének összekapcsolása

Unix rendszerek alatt is lehetőség van egy parancs kimenetének közvetlen beadagolására egy másik programba. Ezen technikát Pipe-oknak nevezik, amely magyarul csővezetéket jelent. A Pipe lényegében úgy működik, mintha a kimenetbe átirányító fájl a memóriában helyezkedne el. A másik program, amibe meg átirányítunk ezen „fájlt” olvassa. Ezen fájl csak a PIPE-on keresztül összekapcsolt programok számára látható. Valamint csak az összekapcsolás ideje alatt létezik. Valamint nem az egész fájl helyezkedik el a memóriában, hanem mindig csak egy fix méretű részlete, hiszen csak előre lehet haladni a fájlban.

Egy másik fajta Pipe a névvel rendelkező pipe. Erről a későbbiek folyamán lesz szó.
Pipe-on keresztüli összekapcsolásra a Pipe jel ( | ) operátor használható. Ezen operátor magyar billentyűzet kiosztás mellet az ALTGR+W gombok megnyomásával csalogatható elő. Használata:

program1 | program2

Parancs kimenetének argumentumként való felhasználása

Egy parancs kimenete használható parancssori kapcsolóként, vagy argumentumként. Erre a célra a „beszúró idézőjel” karakter ( ` ) használható. Magyar billentyűzet kiosztás mellet a karakter az ALTGR+7 gomb megnyomásával hozható elő. Használata:

program1 `program2`

Folyamatok kezelése

Folyamatnak a futó programokat, parancsokat szokás nevezni. A shell-en keresztül futó folyamatok kezeléséhez a bash rendelkezik egy pár billentyű kombinációval, amit érdemes megjegyezni:

  • CTRL+C:
    Aktuálisan futó folyamat megszakítása, majd a vezérlés visszaadása a parancsértelmezőnek.
  • CTRL+K:
    Az éppen futtatott folyamatot megállítva a háttérbe küldi. A folyamat ekkor nem ér véget, csupán felfüggesztésre kerül. A felfüggesztett parancs az fg parancs segítségével hozható ismételten előtérbe

Továbbá amennyiben egy parancsot & karakterrel zárva indítunk el, akkor az a program a háttérben fog futni. Így eközben a terminálon tudunk mást csinálni. Példa:

program &

Gyorsbillentyűk

Alapvetően egy parancssoros rendszert kezelni nem annyira kényelmes, mint mondjuk kattintgatni egy grafikus felületen. Ezért a bash alkotói igyekeztek mindent megtenni, hogy kézen fekvő, kényelmes legyen a shell használata. Ez azt jeleni, hogy számos gyorsbillentyű van beépítve a rendszerbe:

  • TAB gomb:
    Fájl és mappa név automatikus kiegészítés
  • CTRL+A:
    Az aktuálisan gépelt parancssor elejére teszi a kurzort.
  • CTRL+E:
    Az aktuálisan gépelt parancssor végére teszi a kurzort.
  • CTRL+L:
    Képernyő törlés, hasonlóan működik, mint a clear parancs.
  • CTRL+H:
    Ugyan azt az eredményt produkálja, mint a Backspace gomb.
  • CTRL+R:
    Az előzőleg begépelt parancsok közötti keresést teszi lehetővé
  • CTRL+W:
    A kurzor után álló szó törlése
  • CTRL+T:
    Kurzor előtt álló utolsó két karakter cseréje
  • ESC+T:
    Kurzor előtt álló utolsó két szó cseréje
  • ALT+F:
    Aktuális sorban a következő szóra mozgatja a kurzort.
  • ALT+B:
    Aktuális sorban az előző szóra mozgatja a kurzort.

Fájl és könyvtár kezelő parancsok

Az itt megtalálható parancsok ismertetése nem teljes körű. Csupán csak a fontosabb, vagy általam fontosabbnak ítélt paraméterek. A teljes dokumentáció, tudás érdekében érdemes olvasni az elektronikus dokumentációt is

cd

Könyvtárváltás. Paraméterek nélkül nem csinál semmit. A könyvtár elérési útvonal lehet relatív az aktuális mappához képest, vagy abszolút útvonal is a / könyvárhoz képest. Példák:

cd ~
cd /
cd ..

mkdir

Könyvtár létrehozás. Paraméterezett használata megegyezik a cd parancséval.

rmdir

Üres könyvtár törlése. Amennyiben a könyvtár nem üres és a teljes tartalmát törölni akarjuk, akkor az rm parancs használható.

ls

Könyvtár tartalmának listázása. Alapértelmezetten csak a fájl és könyvtár neveket jeleníti meg.

Kapcsolói:

  • -l
    Hosszú listát készít, amiben a fájl/mappa jogosultságai, tulajdonos neve, a fájl mérete és utolsó módosítási dátuma is látszik a fájlnév előtt.
  • -a
    Rejtett fájlokat is megjeleníti. Unix rendszerek alatt rejtett fájl az, amely neve . karakterrel kezdődik.
  • -A
    Hasonlóan működik a -a kapcsolóhoz, azonban ekkor nem jeleníti meg a . és .. bejegyzéseket, amelyek az adott mappára és a felette lévő mappára vonatkoznak.
  • -h
    A -l kapcsolóval együtt használható. Ekkor a fájl méretét emberileg is olvasható formátumban írja ki.
  • -R
    Az alkönyvtárak tartalmait is kilistázza
  • -S
    A listát fájlméret szerint rendezi
  • -t
    A listát a fájlok utolsó módosítási dátuma szerint rendezi

cp

Fájlok másolása. Első argumentuma a forrásfájl, második argumentuma a célfájl.

Kapcsolói:

  • -R vagy -r
    Ha a forrásfájl egy mappa, akkor ezen kapcsolóval a mappa összes almappáját is másolja a célra.
  • -l
    A forrásfájlt nem másolja, helyette hard linket készít a célon, amely a forrásra mutat.
  •  -s
    A forrásfájlt nem másolja, helyette soft linket készít a célon, amely a forrásra mutat.
  • -i
    Amennyiben a célfájl létezik, akkor megerősítést kér a felülírás előtt.
  • -n
    Amennyiben a célfájl létezik, akkor nem írja felül

mv

Fájlok áthelyezése, átnevezése. Szintén első argumentum a forrásfájl, második meg a célfájl.

Kapcsolói:

  • -i
    Amennyiben a célfájl létezik, akkor megerősítést kér a felülírás előtt.
  • -n
    Amennyiben a célfájl létezik, akkor nem írja felül

chmod

Fájl / mappa jogosultságainak módosítása. A jogokat vagy számok megadásával, vagy betűjelek megadásával változtathatjuk meg. A betűjeles megadást én túlzottan sosem szerettem, így csak a numerikus megadásról lesz szó.
A következő jogok adhatóak ki:

  • Olvasás, betűjele r, száma: 4
  • Írás, betűjele w, száma: 2
  • Futtatás, betűjeleke x, száma 1

A jogokat tulajdonos, tulajdonos csoportja és az egyéb felhasználóknak is meg kell adni. Numerikus jogosultság beállítás esetén a megfelelő jogok számát össze kell adni. Amennyiben semmilyen jogot nem adunk a számunk nulla lesz.

Példaképpen Nézzük azt az esetet, hogy a tulajdonosnak minden jogot meg szeretnénk adni, csoportjának csak az olvasás és futtatás jogot akarjuk megadni, és mindenki másnak csak olvasási jogot akarunk adni. Ekkor, amennyiben a fájlunk neve zene.mp3, akkor a chmod parancsunk így fog kinézni:

chmod 754 zene.mp3

A parancs esetén egyetlen fontos kapcsolóról beszélhetünk, ez a -R. Ennek segítségével, ha mappán futtatjuk a parancsot akkor az összes almappa és fájl ugyan azokat a jogokat kapja meg.

chown

Fájl / mappa tulajdonosának beállítása. Ezen parancs segítségével egy másik felhasználó tulajdonába helyezhetjük át a fájljainkat. Használata:

chown felhasznalonev fajl

A felhasználónév az új tulajdonos bejelentkezési neve. A -R paraméterrel mappán futtatva a parancsot a hatása az az összes almappát és fájlt érinti

chgrp

Fájl / mappa csoportjának beállítása. Használata megegyezik a chown paranccsal. Kapcsolói:

  • -R
    Rekurzív végrehajtás. Mappa esetén összes almappa és fájlra alkalmazza a változásokat.
  • -h
    Szimbolikus linkek esetén csak magát a linket érinti a változás, a fájlt, amire a link mutat nem.

df

Szabad helyet listázza ki a meghajtókon. Alapértelmezetten byte-ban írja ki az információkat, ezért a -h paraméterrel érdemes használni, amely emberileg is olvasható formában írja ki az információkat.

ln

Egy fájlra, mappára mutató linket hoz létre. A link egy virtuális fájl, felfogható úgy, mint egy parancsikon, azzal a különbséggel, hogy a linkelt fájl mérete megegyezik az eredetivel. Linux és Unix rendszerek alatt két típusú link létezik. Hard és soft link. Különbség a kettő között az, hogy a Hard link a fájl tényleges fizikai elhelyezkedése alapján mutat a fájlra, míg a soft link a fájl neve alapján. A parancs használata:

ln célfájl forrásfájl

Használható kapcsolók:

  • -n
    Amennyiben a célfájl létezik nem írja felül
  • -s
    Soft linket hoz létre hard link helyett

find

Fájlok, mappák keresése töredék fájlnév alapján. Kapcsolói:

  • -ls
    ls -l parancs szerűen írja ki a találatokat

file

A paraméterként megadott fájl típusát azonosítja be a tartalma alapján. A Unix rendszerek a fájlok típusait nem kiterjesztés alapján azonosítják, hanem tartalom alapján.

Kapcsolói:

  • -h
    Nem követi a linkeket

Végszó

Egyenlőre ennyit a linux parancssor rejtelmeiről, valamint az alapvető fájlkezelésről. A következő részben egzotikusabb parancsok kerülnek terítékre. Folytatás hamarosan :)