Vélemény: miért jó a script?

Vélemény cikk, nem kényszer!

Miért használok parancssoros megoldásokat? Ezt megbeszéltük, és aki úgy gondolja, hogy számára jónak tűnik a parancssor, és használni akarja, annak már csak egy lépés a scriptek használata. Ma arra térek ki, hogy én miért szeretem a scripteket és mik is ezek. Itt is, mint az előző részben egy véleményt fogalmazok meg. Amivel lehet egyetérteni, vagy nem. Ha kezdő vagy a Linux témába, akkor mindenképp fuss át cikke, alkoss saját véleményt. Még akkor is megéri, ha most még véletlenül sem gondolsz olyan kockáknak valóvoodoo varázslatokra, mint a scriptek. Tudd, hogy van ilyen, és ha majd ha hiányérzeted lesz az eszköztáradban, akkor már tudni fogod ezt a lehetőséget is.

Mi az a script?

Rövid, viszonylag egyszerű parancsok egymást követő sora, amit egy egyszerű szövegfájlba helyezünk el, és így futtatjuk. Ez kicsit más megfogalmazás, mint amit a számítógépes guru használnak, de így érthető és tartalmazza azt, ami nekünk fontos.

Miért használok ÉN scripteket?

Mert így egyszeri munkával, amivel összerakom a scriptet sokszor felhasználható eszközt kapok. Ha egy feladatra már összeszedtem a parancssori parancsot, akkor azt „lementem” egy scriptbe és bármikor fel lehet használni. Így egyszeri munkával, és pontosan egy perc ráfordításával sokszor használható „programot” kapok. Ezután már csak a script, az új programunk nevét kell begépelni. Ez az időmegtakarítás a parancs bonyolultságától függő, minél bonyolultabb, hosszabb egy parancssori megoldás, annál hatékonyabb ha azt scriptesítjük.

Az időmegtakarításon, a többszöri felhasználáson kívül az egyik nagy előny, hogy ha kész a script, és az működött, akkor már nem kell begépelni, és nem fogom egy elütés miatt a hibakereséssel tölteni az időmet.

Ami nekem nagyon fontos volt, amikor úgy döntöttem, hogy nem egy programozási nyelvet tanulok meg, hanem a scripteket használom, hogy egy scripthez minimális tanuláson kívül nem kell semmi új ismeret. A már ismert parancsokat, az amúgy is használt megoldásokat kell felhasználni. A scriptek gyakorlatilag egymás után beírogatott parancsok. Illetve pár nagyon egyszerű, átlátható egyéb szerkezetet használunk, aminek a megtanulása nem okoz gondot. Aki már használt parancssort, annak nem lesz gondja a scriptekkel. Bár egy komplett programozási nyelv sok esetben jóval több lehetőséget nyújt, de értelmes ember nem várhatja el, hogy mindenki megtanuljon egy-egy ilyen komplexebb programozást!

A szemléletemben a script egy lego, van pár jól bevált sablonom, félkész megoldásom, amiből összelegózom a kívánt „programot”.

Én nem értek a programozáshoz!

…és nem is akarom megtanulni! A megszokott ellenérv. Aki már zsigeri gyűlöletet érez a parancssori megoldások iránt, sok esetben emlegeti, hogy bizony neki sem ideje, sem kedve megtanulni ezt. Nem is kell. Gyakorlatilag semmi újat nem kell ismerni, csak azt használni, amit egy kicsit haladóbb Linuxozó már tud. Plusz mutatok két alapvető programszerkezetet, amit vagy használsz, vagy nem. A minimális, és a legegyszerűbb scriptek csak egy vagy két sor pluszt tartalmaznak a megszokott, a parancssorba begépeltekhez képest. Valóban, azaz sok feladatot valóban így meg lehet oldani.

Béna, nehezen lehet egy adatot megadni neki

Sokan azt gondolják, hogy egy parancssori script az valóban csak úgy tud valamit kiírni nekünk, vagy bekérni egy adatot, hogy begépeljük a terminálba. Ez igaz is, mert sok esetben egy-egy adatbekérés, kiírás valóban a terminálban történik. De már nem a kőkorszakban vagyunk, meg lehet oldani minimális (valóban minimális) ismerettel, hogy ablakba írja ki azt, amit kell, és ablakot dobjon fel, ha valami adatot kell begépelni.

Minek, mindenre van grafikus program…

Sok feladatra van grafikus felületen program, ez teljesen igaz, és erre még vissza fogok térni. De vannak olyan feladatok, akár egyszerűek, akár bonyolultabbak, amire nincsen kész grafikus program. Vagy, ami sok esetben előfordul, hogy azok messze többet tudnak, mint amire nekem szükségem van. Illetve hiába nagyon jó egy grafikus program, ha a beállítások, paraméterek megadása hosszabb idő a grafikus felületen, mint esetleg a parancssorban, egy kész scriptet lefuttatni. Kellemes a grafikus programoknál, hogy igyekeznek minden igényt kielégíteni, de ha három paramétert három fülön találsz meg, akkor már időrabló is lehet. De, és ezt kiemelem, ha az adott grafikus program tud sablonokat, beállításokat, profilokat menteni, akkor nem biztos, hogy lassabb a grafikus munka, hiszen a kész sablon, profil az gyorsítja a munkát.
Egy példa, mert így lehet, hogy homályos a fejtegetésem. Ha száz képet kell naponta egy adott méretre, és fájltípusra és felbontásra konvertálni és vízjelezni, akkor erre írhatunk egy scriptet. Nem egyszerű, de csak egyszer kell megtenni. Örökre használható.
Ha erre grafikus programot keresünk, és napi szinten kell a fájlokat kijelölni, megadni a méretet, a vízjelet, a kimeneti fájltípust, és a felbontást, és esetleg még a kimeneti fájlok nevét is, az macerás. De nem macerás, ha ezt a beállítást el tudod menteni…
Mindig mérlegelni kell, hogy mi a gyorsabb, hatékonyabb megoldás.

Jajjajjajjj, megint!

…. erőlteti a parancssort és a scriptet! Jajjaj, erőlteti, ájjájájj! Nem, valóban nem akarom erőltetni senkire. Akinek tetszik, az olvassa a következő cikkeket is, akinek meg nem, az nem. Minden cím, amit adok az annyira egyértelmű, hogy abból el tudja dönteni, hogy kell, vagy nem kell ez neki. Nem kell scriptet használni, én a 3.1-es Windows és a 7-es verzió közt sok éven keresztül nagyon jól elvoltam batch fájlok nélkül, és mindenféle parancssor nélkül. Linuxon is megoldható majdnem minden úgy, hogy nem is tudod, hogy scriptek is vannak a világon. Illetve az is igaz, hogy egyáltalán nem érdekel, hogy ki mit használ…

Mikor használjunk scriptetket?

  • Csak akkor ha ezzel időt, energiát, munkát takarítunk meg. Nincs nagy értelme scriptet írni arra, amire van grafikus program, amit gyorsabban használhatunk!
  • Akkor, ha olyan feladatot kell megoldani, ami többször is előfordul, és a kész script újra, és újra felhasználható. Vagy legalábbis kis átalakítással többször is használni fogjuk.
  • Ha nincs rá megfelelő kész program. Nincs túl nagy teteje annak, hogy a 101. programnak összeizzadunk, összekínlódunk egy scriptet, mert mi scriptet akarunk írni.

Azaz ne magáért a scriptekért írjunk meg valamit, hanem a feladat megoldására. A célt szolgálja, és ne az egónkat, hogy mi bizony annyira nagy guruk vagyunk, hogy…

Script vagy fájlkezelőbe rakott command?

Akinek a második rész idegen, annak érdemes ezt elolvasni. Bár kissé eltérhet egymástól egy-egy fájlkezelő ezen a téren, de kis fantáziával adaptálható mindre a bemutatott módszer.

Én azt követem, hogy ha van rá mód és sokszor használok valamit, akkor mindkét megoldásra elkészítem. Ez az esetek nagy részében nem jelent gondot, hiszen csak a scriptet illesztem be a fájlkezelőbe. Ha pedig ez nem ennyire egyszerű, akkor átírom azt a pár részt, ami fájlkezelő specifikus. Ilyen lehet az, hogy egy scriptnél meg kell adni azt a fájlt, amivel dolgozzon, akkora megoldás: script.sh fájlneveamiveldolgozzon begépelve a parancssorba, de a fájlkezelőnél megadhatjuk (pld.: %f) azt, hogy a kijelölt fájlon végezze el a műveletet.

Én egy sorrendet követek a scriptek írásakor. Ha van valami, amit meg kell oldani, és arra nincs ismert programom, akkor rákeresek a google-ben, hogy mely program oldja meg. Az esetek nagy részében van olyan grafikus program, ami teljesen megfelel nekem.
Ha nincs, akkor már kiterjesztem a keresés a parancssori megoldásokra, kap egy bash, script, command stb. kiegészítést a keresés. Így már majdnem minden esetben találok egy olyan scriptet, parancsot ami azt, vagy nagyon hasonló feladatot látja el. A legtöbb esetben nem nulláról indulok, hanem vagy egy parancsot és a megfelelő kapcsolókat, beállításokat készen kapom. De nagyon sokszor kész scripteket is találni, hiszen sokan használnak Linuxot, sokan szeretik a scripteket és előszeretettel osztják meg a jobbnál jobb megoldásokat.
Eddig gyakorlatilag nem volt olyan komolyabb problémám, amire valami ötletet, vagy részben megfelelő scriptet ne találtam volna! Ha találunk olyant, ami nagyjából megfelel, azt egyszerűbb átírni, mint nulláról kezdeni. Legalábbis első időben. Amit fellelünk és hasznosnak találunk mentsük el. Bármilyen kereshető formában jó, én a Zim-et használom.

Ok, aki eddig bírta a szövegelésemet, annak már van egy kis indíttatása, hogy ezzel foglalkozzon. Így egy egyszerű példán át megmutatom, hogy mennyire egyszerű egy parancssorba begépelt parancsból, minden tudás nélkül scriptet csinálni, és így többször felhasználni azt. A legegyszerűbb és nagyon jól ellenőrizhető, de semmi gyakorlati haszonnal nem járó scripttel kezdünk. Kiíratunk valamit a terminálban, egy szöveget. Ez gyakorlatilag nagyon jó példa, mert nem okozhat semmi gondot a megértése.

echo "szia"

Azaz nyitunk egy terminált és ezt a pár karaktert bepötyögjük, majd enter. Örömmel látjuk, hogy az enter után megjelenik a szia szöveg. Azaz működőképes parancsot készíttetünk. Elindítjuk a nano-t, ez egy szövegszerkesztő. Beírjuk

#!/bin/bash
echo "szia"

Majd ctrl+o és megadjuk a fájl nevét: a.sh és enter. Már mentettük a scriptet. Ctrl+x és kilépünk.
Visszakerülünk a terminálba és futtathatóvá tesszük a fájlt. Bár én nagyon ritkán használok nano-t, de érdemes megtanulni az alapvető használatát. Ha nem indul a grafikus felületed, mert beleturkáltál egy config állományba, akkor nehezen tudod grafikus szerkesztővel kijavítani… Jártam így, és nagyon jól jött, hogy a nano-van kijavítottam a hibát. Így nem kellett egy bekonfigurált rendszert újratelepíteni.

chmod +x a.sh

Enter, és nem kell látni semmit. Kapott futtatási jogot. Ha nem adsz neki, és futatni akarod, akkor elég fura „engedély megtagadva: ./.a.sh” Milyen engedély? Hiszen most hoztam létra, az enyém! Gondolhatnánk, de csak a futtatási engedélyt hiányolja.
Majd:

./a.sh

Enter és kiírja, hogy „szia”. A ./ azt mondja meg a rendszernek, hogy az adott könyvtárban, ahol éppen vagy ott keresse a kívánt programot. Ha nem adod meg neki, akkor elkezdi keresni azokban a könyvtárakban, amelyek benne vannak a PATH változóban. Erről is lesz majd szó!

Bár ez így elég soknak tűnik egy „szia” okán, de pont így fog ez menni, ha egy bonyolultabb, több tucat paramétert tartalmazó parancssori megoldást scriptesítünk.

Ez szintén egy vélemény cikk volt!