Parancssori operátorok

Parancssori operátorok
Parancssori operátorok
A Linuxos parancssor használatával elég sokat foglalkoztam, hiszen az egyik kedvencem. Szeretnék pár olyan egyszerű megoldást bemutatni, amivel különféle parancsokat összekötünk, egyiket a másikba átirányíthatjuk. Bár érdekes lehet csak olvasni ezt a bejegyzést, illetve meghallgatni majd a videót, de gyakorlatilag én mindenkinek azt tanácsolom, hogy érdemes megnyitni egy terminált és ezeket a parancsokat elvégezni.
Ezek a parancsok alapvetően nem okozhatnak problémát, bemutatásra kiválóan alkalmasak. Ezek elvén, ezeknek a gondolatok mentén különböző egyéb valódi, életszerű parancsokat is össze tudunk fűzni. Kis gyakorlás után már tudjuk használni azokat a lehetőségeket, amiket bemutatok.
De előtte nézzük is meg, hogy a "mesterséges" intelligencia szerint miért kellene. illetve miért érdemes használni a linuxos parancssort? Megkérdeztem és adott egy választ, amit érdemes elolvasni. 

Miért érdemes használni a parancssort?

A Linux parancssor használatának számos előnye van. Itt néhány fontos előnye:

  1. Rugalmasság: A Linux parancssor lehetővé teszi, hogy közvetlenül kommunikálj a rendszerrel, és a parancsokkal pontosan azt tedd meg, amit szeretnél. Ez rendkívül rugalmas és erőteljes lehetőségeket nyújt az operációs rendszer kezelésére és testreszabására.

  2. Automatizálás: A parancssor lehetővé teszi a feladatok automatizálását. A parancssorban egyszerű szkripteket készíthetsz, amelyek sorban végrehajtják a kívánt műveleteket. Ez hatékonyan automatizálhatja a feladatokat, csökkentve a manuális beavatkozásra fordított időt.

  3. Rendszerellenőrzés és hibakeresés: A parancssor alapvető eszköz a rendszer állapotának ellenőrzésére és hibakeresésére. Parancsokkal megnézheted a folyamatokat, lekérdezheted a rendszer erőforrásait, naplófájlokat olvashatsz és manipulálhatsz, valamint diagnosztizálhatsz és javíthatsz problémákat.

  4. Távoli kapcsolat: A parancssor segítségével távoli gépekre is csatlakozhatsz és irányíthatod azokat. A SSH (Secure Shell) protokollt használva távoli parancsokat adhatsz ki és fájlokat másolhatsz át a hálózaton keresztül, így nem kell fizikailag a gép előtt lenned a műveletek végrehajtásához.

  5. Fejlesztési lehetőségek: A Linux parancssor ideális fejlesztési környezetet kínál programozók számára. A parancssorban könnyen kezelheted a fájlokat és mappákat, futtathatod a fordítót és a fordított programokat, valamint teszteket és hibakeresést végezhetsz.

Ezek csak néhány példa az előnyökre, amelyeket a Linux parancssor használata nyújthat. A parancssorban való jártasság nagyobb rugalmasságot és hatékonyságot eredményezhet a Linux rendszerek kezelésében és az elvégzendő feladatok végrehajtásában.
Én ezt az utolsó mondatot emelném ki. Rugalmas, hatékony.

Első gyakorlat: tömeges könyvtár készítés

Első lépésben hozzunk létre egy könyvtárat, ennek akármilyen nevet lehet adni. Az én könyvtáram neve hagyományosan teszt lesz. Beírjuk, hogy mkdir teszt. Ezzel azonnal létre is jött a könyvtár. Ha szeretnénk megnézni a munkánk eredményét akkor gépeljük be ls és kilistázza az adott könyvtárban lévő összes állományt, majd miután meggyőződtünk róla, hogy a teszt könyvtárunk létrejött, a cd teszt paranccsal lépjünk is be. 

Így létrehoztunk egy olyan egy szeparált környezetet, illetve könyvtárat, amelyben, hogyha törlünk vagy létrehozunk valamit, akkor az nem szemeteli össze a többi könyvtárat, majd a végén nemes egyszerűséggel a teszt könyvtárunkat ki tudjuk törölni, ha szeretnénk. Ahogy lehetett látni, a könyvtár létrehozása nem okoz gondot. Létrehoztunk egy teszt elnevezésű könyvtárat. A probléma akkor jön, hogyha nem egy vagy két könyvtárat szeretnénk létrehozni, hanem mondjuk harmincat. Ilyen lehet ha egy hónap ősszes napjára szeretnénk egy alkönyvtárat létrehozni, például mivel most július van, szeretném a július összes napjára elkészíteni a könyvtárat. A könyvtárnév legyen olyan kinézetű, hogy július_napszáma. 

Ezt már az mkdir paranccsal nehézkesen lehet a hagyományos módon megtenni, de a Linux parancssor készítője erre felkészült. Látta, hogy ilyen feladatokra rendszergazdáknak szüksége van és kitalálta, hogy tömegesen is lehessen könyvtárat (vagy más állományt) készíteni, hogyha valamilyen minta mentén készítjük el a könyvtárakat.

A parancs:

mkdir június_{01..31}

Amikor lefut a parancs az ls segítségével ellenőrizzük az eredményt.
Fontos, hogy a megfelelő {} zárójel párost használjuk és a kezdő és vég érték közt két pont legyen.

Most hozz létre ugyanilyen nevű, üres txt állományt minden napra, a formátum: jelentés-július-napszáma.

touch jelentés-július_{01..30}.txt

Parancsok egymás után

Amíg egy vagy két parancsot szeretnénk egymás után futtatni, odáig szépen begépeljük, azaz begépelem az elsőt, megvárom az eredményt, majd begépelem a másodikat. De ha sokszor adott parancsokat egymás után elvégeztetni, akkor arra is van lehetőségünk. Gyakorlatilag két megoldás van. Az egyik egy kicsit összetettebb, legalábbis úgy néz ki első gondolatra készítünk egy szkriptet, amivel felsoroljuk a parancsokat és utána majd elvégzi így szépen a szkript futtatása után a gép a feladatot.
A másik gondolat: egymás után megadjuk a parancsokat ; elválasztással, azaz parancs1; parancs2; parancs3 és le fog futni a három parancs egymás után. 

touch jelentés-július_{01..30}.txt; touch Melléklet_{A..D}.txt; ls

Elkészíti a két minta szerint az állományokat és kilistázza.

Parancs átírányítása

Több esetben előfordul, és szerintem jogos elvárás, hogy egy parancs kimenete ne a képernyőn, a monitoron jelenjen meg, hanem egy archiválható, vagy később felhasználható formába. Kerüljön elmentésre - itt az elmentés a fontos - gyakorlatilag szeretnénk, hogy az előbbi ls` parancs eredménye, ami a monitorra kilistázza az állományokat bekerüljön egy szövegfájlba, hogy későbbiekben azzal valamilyen műveletet elvégezhessek, vagy megnézhessem. Ideális ez a megoldás akkor ha valami hosszabb hibajelet ad egy program és nem a terminálban akarom azt vizsgálni, hanem egy szövegfájlban.

ls > tartalom

bekerült az ls kimenete a tartalom állományba. Most töröljünk ki pár fájlt, és újra futtassuk le a parancsot. Látni fogjuk, hogy a tartalom csak az új listát tartalmazza. Ezt érdemes tudni: a > beirányítja amit előtte van a fájlba, ha nincs ilyen állomány létrehozza, ha van, akkor abba ír. Ha a célállományban van tartalom azt felülírja. Csak óvatosan!
Kis tipp: minimális biztonságot ad, ha az állományba beirányítunk így valamit, a tartalmát ezzel lecseréljük, az eredeti tartalom így elvész.

Az egy > jelenti az "írd felül" parancsot, és a két ">>" pedig a "fűzd hozzá" parancsot.

A pwd kiírja a könyvtárt, amiben vagyunk.

pwd > tartalom

Ha belenézel, látod, hogy a fájllista törölve lett és a pwd kimenete van benne.

Most olyan állományt generálunk, aminél az első sor a könyvtárt is mutatja:

ls >> ttartalom

Nézz bele, ás látod, hogy a ls nem írta felül az előző tartalmat.

A && parancs összefüzés

A fenti megoldással (parancs1; parancs2) egyetlen egy probléma van: egymás után, elvégzi a feladatokat, de nem fogja leellenőrizni, hogy az előző parancs az rendesen lefutott vagy éppen hibát adott, és valami probléma van, ha egymás után gépeik be a parancsokat. Akkor azonnal látjuk, hogy az adott parancs hibával szállt el. Az előző megoldás ezt nem kezeli.
A példa legyen ez:

cr ; pwd ; hostname

Mivel nincs ilyen cr parancs, jelzi nekünk a problémát, de kontroll nélkül lefuttatja a következőket. Jó lenne, ha ilyen esetben szabályozni tudnánk, hogy mit tegyen a program. Az egyik megoldás a && használata, aminek a jelentése egyszerű: ha az előző program lefutott hiba nélkül, akkor hajtsd végre a következőt. Ha nem hiba nélkül fut le, akkor nem hajtsd végre.

Előfordulhatnak olyan helyzetek, amiben fontos, hogy az első parancs lefutása után végezzen el valamit, de csak akkor, ha az hiba nélkül lefutott. Azaz legyen szíves megnézni, hogy az előző parancs hogyan futott le és legyen szíves, akkor nem elvégezni a munkát, hogy az előző paranccsal probléma van. Például a tárolókat frissítjük és utána frissíteni szeretnénk a rendszerünket, logikus ha a tárolókat nem tudjuk valami oknál fogva frissíteni, akkor a rendszerfrissítések sincs semmi értelme. Ez a klasszikus példa.
Én most ettől eltérek egyszerűbb, azonnal ellenőrizhető és átnézhető feladatot fogunk megcsinálni.

Mini példa pont jó lesz: ne folytassa a pwd paranccsal a munkát, ha az előző parancs (cat tartlom) hibát ad.

cat tartlom && pwd && hostname

A folyamat megszakadt, mert nem léphettünk tovább a kiba miatt. Nézzük meg, ha javítjuk az elsőt, akkor mit lép a gép:

cat tartalom && pwd && hostname

Tesztként rontsuk el a közepét, mert így látjuk: a parancslánc ott szakad meg, ahol az első hiba van.

cat tartalom && pw && hostname

A || parancs összefüzés

A cat tartalom paranccsal kiíratjuk a monitorra a tartalmát, mert szeretnénk megnézni a tartalmát.
De mi van akkor, ha nincs tartalom fájl? Töröljük ki, hogy biztosan nem legyen!

cat tartalom

Mi a logikus eljárás? Ha nincs, akkor készítsük el és írassuk ki:

cat tartalom || ls > tartalom && cat tartalom

Figyeljük meg a parancs kétszeri futtatásával, hogy a másodiknál kétszer írja ki a listát.
Miért? Mert az első lefut, kiírja, mert van ilyen állomány. Az ls távirányítást átugorjuk, mert hiba nélkül lefutott az első. Majd jön a harmadik rész, ami szintén lefut.

Kipróbálva: 2023, június, Linux Mint

A hozzátartozó videó