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

De nem így "gyilkoljuk le" programokat!
Több, a parancssorral (CLI) foglalkozó cikkem után egy nagyon kellemetlen megjegyzés sorozatot kaptam az egyik fórumon. Így pár szóban leírom, hogy miért is érdemes a CLI, azaz a parancssoros felülettel is foglalkozni. A gondolatsort a felvetett vélemények mentén fogalmazom meg. Bár sokan úgy gondolják, hogy már a téma felvetése sem érdekes, hiszen ők biztosan nem fognak parancssorban dolgozni, de én azt tanácsolom, hogy ennek ellenére olvassák el a cikket. Majd gondolkodjanak el rajta. Senki nem kötelezi őket a CLI mód használatára, de ha az érveimet átgondolva kedvet kapnak hozzá, akkor már megérte elkészíteni ezt a részt is. Amit ki kell emelnem: nekem semmivel sem lesz jobb, vagy rosszabb, ha használnak, vagy nem terminálos megoldásokat. A véleményem - amit már többször le is írtam - egyszerű: mindenki azt hasznáé, ami neki jó. Aki a grafikus és a CLI módokat is ismeri előnyben lesz azzal szemben, aki csak az egyiket. A Linux a szabadságra nevel: azt használsz, ami neked jó.

Linux alatt a CLI mód egységes

Az egyik legnagyobb előnye a terminálos megoldások ismeretének az egységes, majdnem 100%-ig szabványosított program kínálat. Aki ismeri a parancssoros, terminálos megoldásokat, annak nem lesz gondja, ha másik disztribúcióval lesz dolga. Hiszen a legtöbb disztribúcióban a legtöbb alapvető parancs, művelet terminálban hasonlóképp végezhető el. Bár egy grafikus felületen hamar eligazodik az ember, de eltérő disztribúciók eltérő program kínálattal települnek. Más fájlkezelő, particionáló, videó, vagy audioszerkesztővel kapjuk őket. Ha ismerjük az alapvető terminálos megoldásokat, akkor az idegen programok nélkül is el tudjuk látni a főbb feladatokat. De minden disztribúció eltérő, több disztribútor előszeretettel helyezi át a könyvtárakat, vagy a csatolási pontokat. Így egy-egy parancs, szkript, vagy elérési utat tartalmazó leírás nem, vagy nem az elvárásnak megfelelően működik más disztribúción.

Így már meg is válaszoltam azt a felvetést, hogy „ez egy xxxxx fórum és miért is van a leírásokban az MX Linux/Arch linux/Akármilyen Linux, hiszen…”. Azért, mert amit én leírok azt ki is próbáltam. Az adott disztribúció alatt. Az, hogy az egy másik disztribúción mennyire működőképes, azt nem tudhatom. Bár igyekszem az adott fórumra csak azokat átrakni, melyeket az adott, másik disztribúciónál jó eséllyel működik, de nem tudom ellenőrizni, hogy valóban megy ott is. Nagyon nagy az esélye, hogy igen, de van egy pici, hogy nem.

A terminálos megoldás gyorsabb

A legtöbb esetben ez teljesen igaz, hiszen nem kell elindítani hozzá grafikus felületet, és nem kell hozzá grafikus program. Így egyazon feladatot hamarabb elvégzi a gép. Ha nagy gépigényű feladatod van, akkor ez jelentős előny. Átlagos gépen, átlagos munkáknál ez nem jelent előnyt, hiszen a mai „átlagos” gépek jellemzően sokkal nagyobb kapacitásúak, mint amit ki tudunk használni. Ez az előny akkor jelentkezik, ha valóban a minden erőforrásra szükséged van a gyors munkához, vagy több programmal kell egyszerre dolgozni, több erőforrás igényes feladaton.

A parancssoros megoldás lényegre törő

Mit is értek ezen? Ha elindítok egy grafikus programot sok menü, rádiógomb, jelölő négyzet stb. segíti a munkánkat. Ez sok esetben valóban zavaró, hiszen csak egy funkciót szeretnénk használni. Ellenben a parancssorban csak azt írjuk be, ami kell. Egy "egyszerű" példa:

find . -type f -name “\*.mkv” -exec bash -c ‘FILE=”$1″; ffmpeg -i “${FILE}” -vn -c:a libmp3lame -y “${FILE%.mkv}.mp3”;’ \_ ‘{}’ \\;

Ez az összes, az adott könyvtárban lévő fájlból kiszedi a hangsávot és azonos névvel elmenti. Aki bonyolultnak tartja, azt megnyugtatom, nem ok nélkül került ez ide, több előnyt, és hátrányt lehet vele szemléltetni. És amúgy sem bonyolult, csak ismerni kell pár parancsot, és ha párat már készítettünk, akkor egyszerű lesz az ilyen egysoros parancs. Ugyanezt a funkciót egy grafikus programnál: program megnyit, betallózzuk a kívánt könyvtárat, vagy rosszabb esetben egyesével kijelöljük a kívánt fájlokat, ha nem kezel könyvtárakat, megadjuk a kimeneti fájlok formátumát stb. Ha pedig nem tud egyszerre több fájlt kezelni, akkor ezt egyesével kell megtenni. Majd elindítjuk. Ha a grafikus program viszonylag kicsi, akkor gyorsan megtalálunk mindent, ha meg komplexebb, akkor lehet, hogy minden kívánt funkciót más-más fülön, vagy menüben találunk meg.

Sok grafikus program csak előtét a parancssoros megoldáshoz

Igen, sok grafikus program csak egy parancssoros parancs előtét programja, mellyel kényelmesen tudunk a parancsnak paramétereket adni. Ilyen például a Lucky Backup, ami gyakorlatig az rsync-et paraméterezi fel, és ha kell a crontab-ba írja. Kényelemes, de nem létszükséglet. Ha pedig egy grafikus program csak előtét programja egy parancsnak, akkor miért is ne ismerjük meg az alapparancsot? Esetleg vannak olyan paraméterei, amit a grafikus program nem kezel…

A parancsok sorozata egymásba építhető

Magyarul egyik parancs a másiknak átadhatja a munkát. Így egy láncot alkothatunk, mely automatikusan adja tovább a másik parancsnak a feladatot. Ezzel gyorsíthatunk egy-egy folyamatot, és beavatkozás nélkül elvégzi a gép a munkát. Ahogy a fenti példa is több parancs egymásutáni ellátása, paraméterek továbbadására épül.

SZKRIPTESÍTHETŐ! – Gyorsítja a munkánkat

A parancsokból összeállíthatunk egy komolyabb mini programot is, amivel az adott több lépésből álló bonyolultabb feladatot el tudjuk látni egy parancs kiadásával. Ez nem csak azért jó, mert egyszer megírt szkripttel gyorsan elvégeztetjük a feladatot. Az ilyen szkriptekben gyakorlatilag végtelen variációkban fűzhetjük össze a parancsokat, olyan feladatok elvégzésre is, melyekre nem, vagy nekünk nem megfelelő grafikus programokat találhatunk. Ilyen egyszerű feladat, ha azt akarjuk, hogy egy weboldal-t figyeljen, és a változásokat jelezze nekünk. Egy grafikus programot találtam, ami nem működött, és pár olyan oldalt, ami korlátokkal, de megoldja: vagy csak napi kevés alkalommal riaszt, vagy elő lehet venni a bankkártyánkat… Lesz róla szó, majd a későbbiekben... A szkriptek, mini programok felhasználásnak csak a
fantáziánk szab határt. Egy szkriptet egyszer kell megírni, azután már csak futtatni fogjuk.
A szkripteknek nagy előnye, hogy az alapmegoldások gyakorlatilag sima CLI összefűzésével készülnek, nem kell egy programozói nyelvet megtanulni. Illetve az alap programszerkezeteket is ismeri, így a ciklusok stb. is segíthetik a munkánkat.

De ehhez tudás is kell?

A CLI tudást igényel!

Ezt ellenérvnek szokás felhozni, én pedig egy pro, azaz megerősíti érvnek tartom. Az emberi agy kapacitása végtelen. De szeret eltunyulni. Egy-egy feladatra összerakott szkript megalkotása, vagy egy parancs megismerése tornáztatja az agyat. Mellette pedig jobban megismerjük a Linux rendszert, a lehetőségeit, hatékonyabban végezhetjük a munkánkat. A legtöbb parancssoros utasítás nagyon jól dokumentált, a CLI módnak nagy tábora van, így majdnem mindenre kapunk választ, ha a help-et, a man-t, vagy az adott oldal leírásait elolvassuk. Ami persze angol a legtöbb esetben, nem árt, ha legalább az alapszintű angolt így összeszedjük.

A fenti parancs láttán mindenki menekül a termináltól, mert hosszú és bonyolult.

Tévhit, hogy bonyolult?

Nem, ez a valóság. A terminálos munka, a parancsok paraméterezése valóban bonyolult. Az első időben. Kis gyakorlás után már az alapokat megismerjük és átlátjuk a felépítését. Ha pedig kis ismeretszerzés után egy-egy egyszerű megoldást megismerünk, azt sok helyen fel tudjuk használni. A fenti minta parancs első felében annyit teszünk, hogy megkeressük az adott könyvtárban az adott kiterjesztésű fájlokat, majd azokat továbbadjuk feldolgozásra. Ez igencsak sok helyen felhasználható panel. Aki ismer pár ilyen mintapanelt, annak már könnyű lesz összelegózni egy hasonlót egész más feladatra. Ha pedig a find parancsnak utána néz, amit egy ilyen példa bemutat, akkor látja, hogy nem csak ilyen egyszerű megoldásokra alkalmasak az alapparancsok. Az utánaolvasáskor feltárul sok olyan lehetőség, amire nem is gondolt eddig. Még akkor is hasznos az olvasás, ha éppen akkor, és ott nem tudja konkrétan felhasználni, de már ismeri a find parancs lehetőségeit, amikor kell már konkretizálni tudja a megoldást.

Hosszú, sokat kell gépelni!

Ez igaz. Egy parancsot be kell gépelni, és ott nem jó ha hibázunk. Ez riasztó, hiszen egy elütött betű miatt nem fog úgy működni, ahogy akarjuk. Legalább megtanuljuk a pontos munkát. Illetve a sok gépelést igénylő, bonyolultabb parancsokat egyszer kell jól beírni. Azután csinálhatunk egyszerű szkriptet, vagy akár alias-t is. Ami több mint két tucat leütés, és jó eséllyel egyforma paraméterekkel használom, azt nálam vagy alias, vagy szkript… Vagy, ha olyan a munka témája, akkor a fájlkezelőmbe írom be, ami kezeli a saját parancsaimat is (a nemo is, meg a vifm is a ranger is… meg talán az összes is...). Ami szintén igaz: ha keresek egy feladatra parancsot, akkor a legtöbb esetben az interneten már meg is találom a kész, majdnem teljes egészébe bemásolható felparaméterezett megoldást. Így a „sok gépelés” egy sima másolás, esetleg pár karakter átírásából áll.

Hibakeresés, hibajavítás

Ha egy grafikus program nem indul, akkor elég nehéz (de nem lehetetlen!) megtalálni a problémáját. Hasonlóan nehéz egy fagyás, összeomlás, vagy más hiba esetén a keresés: a legtöbb esetben nem kapunk normális hibajelet. Illetve a program ad, csak mi nem minden esetben kapjuk azt meg. Érdemes lenne erről a későbbiekben egy cikket összeraknom :). De ha terminálban dolgozunk, akkor a hiba kimenet ott lesz, és rögvest látjuk mi a siráma annak a munkamenetnek. A terminálban való munka egyik előnye a maximális ellenőrizhetőség. Mindig, minden hibáról jelzést kapunk, ha az olyan, amivel foglalkoznunk kell. Bár ezek a hibajelzések, kiírások sok esetben idegenek kezdeti időben, nagy segítség, ha valami gond van. Ami az első időben fura lehet, hogy a legtöbb terminálos munkáról semmi visszajelzést nem kapunk. Ha nincs gond. Kissé kellemetlennek tűnhet, hogy az enter lenyomás után semmi jelzést nem ad. Ilyenkor az az érzése lehet az embernek, hogy bizony nem történt semmi, biztos hiba van. Nem, a Linux fordítva gondolkodik: ha nincs gond, nem kell semmit mondani a felhasználónak. Ha gond van, csak akkor kapjon üzenetet. Ha akkor értelmest.

Ha pedig már tudjuk a hiba jelzést, a megoldás ismert: a google varázsos erejével élve rákeresünk. Simán kimásolom a hibaüzenetet és rákeresek.

Végső mentsvár

Ha nem indul a grafikus felület, akkor azon nem tudunk grafikus programmal hibát javítani. Aki ismeri a terminálos munkát, annak itt előnye lesz. Két mondat, de ez a legnagyobb előnye a terminálban való jártasságnak.

Csak a kockáknak való!

Igen fura ellenérv, hogy csak a kockáknak való a terminál. Bár Windows alatt nem annyira megszokott, és így azt a képet mutathatja egy terminálban dolgozó ember, hogy ő a nagy tudor, guru és kocka. De nem, mindenki meg tudja tanulni minimális akarattal a terminál használatát. Pont olyan eszköz, mint bármi más, még ha fapadosnak is tűnik. Valóban nem kell programozó véna ahhoz, hogy pár parancsot megtanuljunk.

Fapados, béna, használhatatlan…

Az előző „ellenérv” variációja, hogy sokan nagyon fapadosnak, bénának gondolják a terminált. Nem, nem az. Hatékony, letisztult és minden felesleges sallang mentes eszköz. Bár legtöbbünk már úgy kezdett, hogy alig használt DOS-t, és sokan „egerészéssel” kezdtek, ennek ellenére még mindig használatban van a terminál. Gondoljuk át, ha annyira fapados, béna lenne, akkor nem kopott volna ki? Csak pár kockafejű guru tartaná életben, vagy valóban van létjogosultsága?

A terminálos munka opcionális

Ami a legérdekesebb volt az egyik „véleményezett” cikkem alatt, hogy „miért is kell erőltetni a terminálos munkát”. Erőltetni? Esetleg valakire ráerőltetni? Egyrészt nem is szándékom, másrészt (aki ismer, tudja) nem is érdekel, hogy más mit használ. A Linux, és az összes egyéb terület szépsége, hogy van választási lehetőség. Aki CLI az CLI, aki GUI, az GUI. Megtalálható majdnem mindenre annyi program, hogy aki nem szereti a CLI felületet, annak még véletlenül sem kell terminállal “szenvednie”. Sok fórumon találkozni ezzel az „erőltetik a terminált” kitétellel. Már hogyan tudná valaki erőltetni? Azt használja, ha kérdés van, akkor az ismerete szerinti eszközzel adja meg a választ. A kérdező, vagy jelen esetben a véleményező olvasó eldönti, hogy mit használ a probléma megoldására. Ide kapcsolódik a másik „vélemény”: hát ez neki nem volt hasznos, ő grafikus felületet használ. És? Egy blog, egy fórum nem azért jön létre, hogy egy embert (őt) támogassa, és szolgálja ki hasznos, érdekes cikkekkel. Sok nagyon jó Linuxos, és már oldalt látogatok, de soha nem jutott eszembe valahova leírni, hogy ez nekem nem volt hasznos. És igen, sok olyan cikkel találkozom, ami nekem nem hasznos, az internet igencsak nagy, így megtalálom a hasznos témákat magamnak. Meg általában az első két mondat után kiderül, hogy ha grafikus párti valaki, akkor az adott cikk bizony nem neki való.

Ez egy vélemény cikk volt, nem kötelező egyetérteni vele 🙂