A következő címkéjű bejegyzések mutatása: kezdő. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: kezdő. Összes bejegyzés megjelenítése

2020. március 27., péntek

Miért használj Ubuntut más Linux disztribúciók helyett?

Az Ubuntu a leghíresebb Linux disztribúció a világon. Mindenféle platform által használva a cégestől a desktopig, a mobiltelefonokat is érinti, a disztribúció, ami csak 14 évvel ezelőtt kezdte pályafutását, abszolút uralja a piacokat ma, felhasználói bázis szempontjából.

De amikor disztribúciók ajánljunk online közösségekben másoknak, akkor az emberek mindig ilyeneket mondanak, hogy "az Ubuntu kezdőknek való, ne használd", vagy valami hasonlót. De az egyáltalán nem igaz, mivel az Ubuntu megfelelő bármiféle igényre és felhasználási esetre. Ebben a bejegyzésben be fogunk pár indokot arra, hogy miért használj Ubuntut más Linux disztribúciók helyett desktopon.

A legnagyobb Linuxos közösség a Földön



Nincs nagyobb felhasználóval és ügyféllel rendelkező Linuxos közösség az Ubuntunál, pont. Az (angol) Ubuntu Forums egyedül több bejegyzést és szálat tartalmaz, mint a Fedora, Linux Mint, openSUSE és a LinuxQuestions.org összesen; Az UbuntuForums körülbelül 15 millió bejegyzést és szálat tartalmaz, amíg mások 2 millió, 1.8 millió, 1.3 millió és 7.2 millió bejegyzést tartalmaznak.

És ez az AskUbuntu.com-on (egy angol nyelvű kérdések és válaszok felület kifejezetten az Ubuntu-hoz) lévő kérdések és válaszok számának megemlítése nélkül van, ahol jelenleg 340 000 kérdés van.

Az Ubuntu jelenléte a Linux médiában hatalmas. Ahogy pár hónaponként hallhatod, néhány város és ország Ubuntura váltott Windowsról. Ezzel nem azt mondom, hogy más Linux disztribúcióknak egyáltalán nincs közössége, de hangsúlyozom, hogy milyen nagy az Ubuntu felhasználói bázisa és a közösség és az alkalmazottság mögötte.

És nagylelkűek vagyunk, hogy itt nem számoljuk az Ubuntu alapú disztribúciókat Ubuntu közösségi tagoknak; disztribúciók például Xubuntu, Ubuntu MATE, Kubuntu és más disztribúcióknak szintén nagy közösségük van, és ezeknek mindegyike a hivatalos Ubuntu disztribúció ízei, és az ő felhasználóikat bele lehet számítani a normál Ubuntu felhasználók közé.

A nagy közösség az Ubuntu egyik nagy erősségi pontja, mert felhasználóként garantálja, hogy mindig kérhetsz segítséget, vagy számíthatsz útmutatóra, ami egyben tartja az Ubuntu felhasználókat, ellentétben más kisebb Linux disztribúciókkal. Ez azt is jelenti, hogy harmadik feles fejlesztők ezt a disztribúciót fogják először célba venni, mielőtt más disztribúciókra terjeszkednének.

Nagy szoftvertárolók


Az Ubuntu 20.04 LTS telepítésem (a napi képfájl) jelenleg 60 000 telepítésre elérhető csomagot listáz a hivatalos Ubuntu tárolókból. Ami szép az Ubuntuval kapcsolatban, hogy támogatja a PPA-kat (Personal Package Archives) (Személyes Csomagarchívumok), amik harmadik féltől származó tárolók olyan emberektől, akik el szeretnék juttatni programjaikat az Ubuntu felhasználóknak.

Több ezer Ubuntu PPA van a legtöbb dologra napi felhasználóként. Például könnyedén megszerezheted a GIMP, Inkscape, LibreOffice, Firefox, Chromium, grafikus meghajtók és más egyéb szoftverek legfrissebb verziót az Ubuntu telepítéseden ezeknek a PPA-knak a használatával. Ezek egy jó listájához tekintsd meg válogatásunkat a PPAs.fosspost.org oldalon.

Szintén böngészhetsz vagy kereshetsz PPA-kat a Launchpad.net-en.

Megjegyzés:
Nem kellene túl sok PPA-t hozzáadnod, mivel ez rendszerinstabilitást okozhat. De általánosságban több tucat PPA-t használhatsz bizonyos szoftverekhez, amiktől a napi munkád során függsz. Csak bizonyosodj meg róla, hogy nem kerülnek konfliktusba egymással (például megtörik egymás csomagfüggőségeit).

Stabil, mégis modern rendszer


Az Ubuntu két rendszerverziót kínál a felhasználóinak:

  1. LTS kiadások (Long-term Support) (Hosszú távon támogatott): Minden második évben kerül kiadásra, és 5 évig támogatott (+5 év összesen 10 évig fizető ügyfeleknek). Ezek a verziók általában a szoftverek kiadáskori legújabb stabil verzióit szállítják, de ahogy korosodnak, általában nem kapnak sok frissítést, ami ideálissá teszi őket rengeteg felhasználási esetre, ahol a stabilitás fontosabb, mint az új jellegzetességek.
  2. Nem LTS kiadások: Minden hatodik hónapban kerülnek kiadásra (kivétel amikor az LTS kiadás ideje van). Azok a verziók csak kilenc hónapig támogatottak, és általában a szoftverek kiadáskori legfrissebb elérhető stabil verzióit tartalmazzák, és végig kapnak frissítéseket. Ez jó olyan felhasználóknak, akik a legfrissebb verziót akarják mindenből.

Az LTS és a nem a LTS kiadások is egyaránt "stabil"-nak mondhatóak olyan szempontból, hogy nem omlanak össze mindennapi feladataid elvégzése során. De ha épp elégedett vagy egy LTS kiadással, akkor nem kell váltanod vagy frissítened az operációs rendszeredet a következő 5 évben.

Snap-ek



A hagyományos szoftverkezelés egy alternatív elosztási módja a Snap-ek. A Snap-ek önálló csomagok, amiket a Canonical hozott létre (a cég az Ubuntu mögött). A Snap-ek lehetővé teszik, hogy egy szoftver bármelyik általad választott verzióját használhasd akármelyik támogatott Ubuntu kiadásban.

Ez azt jelenti, hogy nem kell frissítened az Ubuntu 18.04 LTS kiadásodat, például, ahhoz hogy a VLC vagy az OBS vagy egyéb szoftver legfrissebb verzióját élvezd, mivel kiválaszthatod, hogy Snap-pal telepíted őket, és a legfrissebb verziók mindig eljutnak hozzád, anélkül, hogy bármilyen módon befolyásolnák az operációs rendszered stabilitását. azzal ellentétben, ha PPA-kat és hagyományos csomagkezelőket használnál.

A Snap-ek alapból támogatottak és engedélyezettek minden Ubuntu verzióban, nagyon jók sok felhasználási esetre.

Hardvertámogatás

 


A grafikus meghajtóid, nyomtatóid, bluetooth, Wi-Fi és más dolgok meghajtóinak telepítése nehézkes lehet más egyéb Linux disztribúciókon, de nem Ubuntun.

Az Ubuntu kulcsrakész támogatással jön az Nvidia és az AMD grafikus kártyákhoz is, zárt vezeték nélküli meghajtókat is tartalmaz, amik szükségesek lehetnek az internethez való csatlakozáshoz (némelyik disztribúció, például a Debian csak a nyílt forráskódúakat szállítja, aminek az lehet a következménye, hogy nem tudsz csatlakozni). És amíg az Ubuntu némelyik legutóbbi stabil verziókat kínál ezekből, további jól ismert PPA-kat adhatsz a rendszeredhez, hogy megkapd ezen meghajtóknak a napi szintű frissítését, ami fontos lehet néhány felhasználási esetnél, például játék.

A De Facto Linux


A hosszú ideje leggyakrabban használt Linux disztribúcióként biztosan hatással lehet a használatára tett döntésedre. Mert az Ubuntu ilyen fokú hírességével rengeteg jellegzetesség élvezetét teszi lehetővé; Van egy közösség, ami segít neked, a legtöbb cég alapból Ubuntura adja ki a szoftverjét DEB formátumban, más Linux disztribúciók helyett, és fejlesztők nagy száma, hogy hozzáadjon az egész ökoszisztémához.

Ez a szituáció más lehetne, ha egy kevésbé ismert Linux disztribúciót használnál, ahol a közösség és a harmadik feles fejlesztők és cégek támogatásának hiányától szenvednél.

Az Ubuntu mindenkinek jó: Fejlesztők, mérnökök, tanulók, doktorok, kezdők, játékosok (gamerek) és hétköznapi emberek... Szó szerint mindenki használhatja az Ubuntut napi operációs rendszerként, hogy a legjobban hozza ki a számítógépéből. Szóval ha te új vagy a Linux világában általánosságban, akkor biztosan tenned kellene az Ubuntuval egy próbát, vagy valamelyik hivatalos "ízesítésével" amik más asztali környezetekkel jönnek.

Forrás:
Why use Ubuntu instead of other Linux distributions?

2017. január 31., kedd

A kezdők útmutatója a shell scripteléshez 2: For ciklusok


Ha szeretnéd felépíteni a kocka hitelességedet, tarts velünk a scriptelős sorozatunk második részében. Van néhány javításunk, néhány fejlesztésünk az előző heti scripthez és egy útmutatónk a ciklusokhoz a beavatatlanok számára.

A Datecp script átvizsgálva

A scriptelős sorozunk első részében csináltunk egy scriptet, ami átmásolt egy fájlt egy biztonsági mentés könyvtárba, miután hozzáfűzte a dátumot a fájlnév végéhez.

Samuel Dionne-Riel rámutatott a hozzászólásokban, hogy van egy sokkal jobb módja is a változóink meghívásának kezelésére.

A paraméterek szóközzel vannak elválasztva a bash shellben, akkor működnek, ha van egy szóköz az eredményezett kiterjesztett parancsban. A scriptedben a cp $1 $2.$date_formatted addig működik terv szerint, ameddig a kiterjesztett változókban nincsenek szóközök. Ha ezen a módon hívod meg a scriptedet: datecp "my old name" "my new name" a kibővítés ezt a parancsot eredményezi: cp my new name my old name.the_date, ami igazából hat paraméterrel rendelkezik.
Hogy megfelelően címezd meg a dolgot, a scripted utolsó sorának így kellene kinéznie: cp "$1" "$2.$date_formatted"

Ahogy láthatod, scriptünk sorának megváltoztatása erről:

cp -iv $1 $2.$date_formatted

Erre:

cp -iv “$1” “$2”.$date_formatted

Megoldja ezt a problémát, amikor a scriptünket olyan fájlokon használjuk, amiknek szóközök vannak a nevükben. Samuel rámutatott arra is, hogy amikor kódokat másolunk és beillesztünk erről az oldalról (vagy az internetről általában), legyél biztos benne, hogy behelyettesíted a megfelelő gondolatjeleket és idézőjeleket a "nyomdailag jobb" változatokhoz, amik gyakran felcserélik őket. Mi is egyre többet teszünk azért, hogy a kódjaink jobban másolás/beillesztés barátak legyenek. ;-)

Egy másik hozzászóló, Myles Braithwaite, úgy döntött, hogy kibővíti a scriptünket, így a dátum a fájlkiterjesztés előtt jelenne meg. Így ehelyett:

tastyfile.mp3.07_14_11-12.34.56

Ezt kapnánk:

tastyfile.07_14_11-12.34.56.mp3

Ami egy kicsit több kényelmet eredményez a felhasználók többségének. A kódja elérhető a GitHub oldalán. Nézzük meg mit használ ahhoz, hogy kihúzza a fájlnevet.

date_formatted=$(date +%Y-%m-%d_%H.%M%S)
file_extension=$(echo “$1″|awk -F . ‘{print $NF}’)
file_name=$(basename $1 .$file_extension)
cp -iv $1 $file_name-$date_formatted.$file_extension

Megváltoztattam a formázást egy kicsit, de láthatod, hogy Myles az első sorban adja meg a dátum funkcióját. A második sorban azonban az "echo" parancsot használja a script első paraméterével a fájl nevének kimenetéhez. A pipe parancsot használja, hogy fogja a kimenetet és bemenetként használja a következő részhez. A Pipe után Myles meghívja az "awk" parancsot, ami egy erőteljes mintakereső program. Az -F jelző használatával megmondja a parancsnak, hogy a következő karakter (a szóköz után) az, ami meghatározza a "mezőelválasztó"-t. Ebben az esetben az egy pont.

Most az awk egy "tastyfile.mp3" nevű fájlt lát, ahogy két mezőből tevődik össze: "tastyfile" és "mp3". Végül a ‘{print $NF}’ -et használja arra, hogy megjelenítse az utolsó mezőt. Abban az esetben, ha a fájlod több pontot tartalmaz - mivel az awk parancs több mezőt képes látni - csak az utolsót fogja megjeleníteni, ami a fájlkiterjesztés.

A harmadik sorban létrehoz egy új változót a fájl nevéhez és a "basename" parancsot használja, hogy meghívjon mindent, ami az 1$-ban van, kivéve a fájlkiterjesztés. A fájlkiterjesztés automatikusan hozzáadásra kerül a változó miatt, ami meghívja a második sort. Amit ez tenne az az, hogy fogja a

tastyfile.mp3 -at

és átváltoztatja erre

tastyfile

Azután az utolsó sorban Myles összerakja a parancsot, ami mindent a megfelelő sorrendben fog kiadni. Figyeld meg, hogy nincs hivatkozás a $2-re, a script második paraméterére. Ez az egyéni script a megnevezett fájlt az aktuális könyvtárba másolja át helyette. Remek munka Samuel és Myles!

Scriptek futtatása és a $PATH

Megemlítettük az alapvető cikkünkben azt is, hogy a scripteket alapvetően nem lehet parancsként meghívni. Azaz a script elérhetési útvonalára kell mutatnod ahhoz, hogy futtasd:

./script~/bin/script

De a scriptjeid ~/bin/-be helyezésével csak beírhatod a nevüket bárhonnan, hogy futtasd őket.
A hozzászólók rászántak némi időt arra, hogy megtárgyalják, hogy ez mennyire megfelelő, mivel egyik modern Linux disztró sem hozza létre azt a könyvtárat. Továbbá egyik sem adja hozzá alapból a $PATH változóhoz sem, ami ahhoz szükséges, hogy a scripteket parancsszerűen futtassuk. Kissé zavart voltam, mert miután ellenőriztem a $PATH változómat, a hozzászólóknak igazuk volt, de a scriptek meghívása így is működött számomra. Megtaláltam miért: Sok modern Linux disztró létrehoz egy speciális fájlt a felhasználó home könyvtárában – .profile.


A fájlt beolvassa a bash (amíg a .bash_profile fájl jelen van a felhasználó home könyvtárában) és az alján van egy részleg, ami hozzáadja a ~/bin/ mappát a $PATH változóhoz, ha az létezik. Így ez a rejtély megoldódott. A sorozat hátralévő részében folytatom a scripet ~/bin/-be helyezését, mert ezek felhasználói scriptet és futtathatóknak kell lenniük a felhasználók által és úgy tűnik, hogy nem igazából kell babrálnunk a $PATH változóval kézzel, hogy működőképessé tegyük a dolgokat.

Parancsok ismétlése ciklusokkal

Térjünk rá az egyik leghasznosabb eszközre a kocka arzenálból az ismétlődő feladatok kezeléséhez:
ciklusok. Ma a "for" ciklusokat fogjuk megtárgyalni.

Az alapvető vázlata egy for ciklusnak az alábbi:

for VARIABLE in LIST; do
command1
command2

commandn
done

A VARIABLE lehet bármilyen változó, habár leggyakrabban a kisbetűs "i"-t használják megegyezés szerint. A LIST az elemek listája; megadhatsz több elemet (szóközzel elválasztva őket), mutathatsz egy külső szöveges fájlra, használhatsz egy csillagot (*), hogy kijelölj bármilyen fájlt az aktuális könyvtárban. A parancsok megegyezés szerint vannak behúzva, így könnyebb látni a felépítést - ciklusokat helyezni ciklusokra (így ciklusozhatsz miközben ciklusozol).

Mivel a listák szóközt használnak határolójelként - azaz egy szóköz kifejez egy lépést a következő elemre a listában - fájlok, amik szóközöket tartalmaznak a nevükben, nem igazán barátságosak. Egyelőre ragaszkodjunk a szóközök nélküli fájlokkal való munkához. Kezdjük egy egyszerű scripttel, ami kilistázza a fájlok neveit az aktuális könyvtárban. Csinálj egy új "loopscript" nevű scriptet a ~/bin/ mappádban. Ha nem emlékszel, hogy hogyan kell ezt csinálni (beleértve a végrehajthatóként való megjelölést és a hash durrantós hack hozzáadását), nézd meg a bash scriptelés alapok cikkünket.

Írd bele az alábbi kódot:

for i in item1 item2 item3 item4 item5 item6; do
echo “$i”
done



Ha futtatod a scriptet, csak meg kellene kapnod azokat az elemeket kimenetként.



Eléggé egyszerű, ugye? Nézzük meg, hogy mi történik, ha megváltoztatjuk a dolgokat egy kicsit.
Változtasd meg a scripteted úgy, hogy ezt fejezze ki:

for i in *; do
echo “$i”
done


Amikor ezt a scriptet egy mappában futtatod, meg kellene kapnod a benne lévő fájlok listáját kimenetként.


Most cseréljük az echo parancsot valami hasznosabbra – mondjuk a zip parancsra.
Ugyanis fájlokat fogunk hozzáadni egy archívumhoz. Most pedig tegyünk néhány paramétert a keverékbe!

for i in $@; do
zip archive “$i”
done


Van itt valami új! A "$@" egy rövidítés a "$1 $2 $3...$n"-hez. Más szavakkal ez az általad megadott összes paraméter teljes listája. Most nézd meg mi történik, amikor futtatom ezt a scriptet néhány bemeneti fájllal.


Láthatod melyik fájlok vannak a mappámban. Futtattam a parancsot 6 paraméterrel és minden fájl hozzá lett adva egy "archive.zip" nevű zippelt archívumhoz. Könnyű, igaz?

A for ciklusok meglehetősen csodálatosak. Most már alkalmazni tudsz kötegelt funkciókat fájlok listáin. Például bemásolhatod a scripjeid összes paraméterét egy zippel archívumba, áthelyezheted az eredetiket egy másik mappába és automatikusan biztonságosan másolhatod a zip fájlt egy távoli számítógépre. Ha beállítod a kulcs fájlokat SSH-val, többé be sem kell írnod a jelszavadat és megmondhatod a scriptnek, hogy törölje a zip fájlt feltöltés után!

A for ciklusok használata megkönnyíti műveletek sokaságának elvégzését minden fájlon egy könyvtárban. Összerakhatod parancsok széles választékát és használhatsz paramétereket nagyon könnyedén, hogy létrehozz egy menet közbeni listát és ez csak a jéghegy csúcsa.

Bash scriptelők, van bármilyen javaslatotok? Csináltál egy hasznos scriptet, ami ciklusokat használ? Meg szeretnéd osztani a sorozattal kapcsolatos gondolataidat? Hagyj néhány hozzászólást és segíts ki más kezdő scriptelőket!

Felhasznált forrás: The Beginner's Guide to Shell Scripting 2: For Loops

2017. január 25., szerda

Linux alapok – Parancssoros csomagkezelés

A különböző Linux fórumokon, ha segítséget kérünk, általában valamilyen parancssoros megoldási javaslatot kapunk. Például, amikor telepíteni szeretnénk egy programot, akkor a válasz egy parancs lesz, amit valamelyik terminál emulátorba beírva kell használnunk. Kezdők számára ez először egy kicsit ijesztő lehet, de hamar meg lehet szokni, és sokkal egyszerűbb segítséget kérni, mert ha problémánk van egy programmal, azt terminálból indítva az kiírja a hibát, legalábbis kiindulópontnak tökéletes.

Akkor kezdjük az elején. Ha terminált akarunk megnyitni, azt többféleképpen tehetjük meg. Vagy megnyitjuk a menüt és elkezdjük beírni, hogy terminal, majd az ikonra kattintva megnyitjuk. Egy másik megoldás a Ctrl+Alt+T billentyűk lenyomása (ez nem minden rendszeren alapértelmezett, de Ubuntu és Linux Mint rendszereknél az).

Már van egy terminál ablakunk, amiben nyugodtan dolgozhatunk. Ahogy a címben is látszik, most csak a csomagkezelésről lesz szó. Tegyük fel, kell egy program, ami nincs telepítve a gépünkre, milyen parancsot kell használni. Az Ubuntu és egyéb Debian alapú rendszereknél az aptget parancsot használjuk. Hát kezdjük is, a kiszemelt program a Chromium. A telepítéséhez a következő parancsot kell kiadnunk: sudo apt-get install chromium-browser ilyenkor a rendszer kéri a jelszavunkat, ezt írjuk be, és ne ijedjünk meg, biztonsági okokból nem látszik, amit beírunk, majd enter. Ha ez megvan, a rendszer kiírja, hogy a csomagnak milyen további csomagokra van szüksége, és miket fog telepíteni, ha ezt jónak találjuk, akkor „i” billentyű, majd megint enter és települ a csomag, amit a telepítés után használhatunk is.

Akkor láttunk egy egyszerű példát egy csomag telepítésére, ez volt az apt-get install <csomag-neve>.
Az apt-get remove <csomag-neve> paranccsal törölhetjük az adott csomagot.
Az apt-get autoremove paranccsal azokat a csomagokat tudjuk eltávolítani, amelyek valamelyik programmal együtt kerültek letöltésre, de az a program már nincs meg, és a csomagokra nincs többé szükségünk.
Az apt-get update paranccsal az /etc/apt/sources.list fájlban megadott tárolók csomaglistáit frissíti. Az apt-get upgrade a frissítéseket telepíti a rendszerünkhöz.
Ezeket a parancsokat használjuk leggyakrabban, de vannak még egyéb parancsok is. Az apt-get-hez találtok segítséget, ha beírjátok az apt-get -h vagy az man apt-get parancsot a terminálba. Fontos még megjegyezni, hogy Linux rendszeren, nem telepítgetünk az internetről levadászott csomagokból, csak a tárolókból, és nem veszünk fel külső nem ellenőrzött tárolókat, és akkor nem kell félnünk a vírusoktól és egyéb támadásoktól.


A cikk beküldője és szerzője: TheWanderer, az Ubuntu.hu-ról.
A cikket változatlan formában közöltem le.

2017. január 24., kedd

A kezdők útmutatója a shell scripteléshez: Az alapok


A Shell scriptelés gyakran kerül említésre Linux fórumokon, de sok felhasználó nem jártas benne. Ennek a könnyű és erőteljes programozási módnak a megtanulása segíthet időt spórolni, jobban megismerni a parancssort és száműzni az unalmas fájlkezelési feladatokat.

Mi az a Shell scriptelés?

A Linux felhasználóság velejárója a parancssor körüli munkálatok. Tetszik vagy sem, vannak olyan dolgok, amiket sokkal könnyebben meg lehet csinálni ezzel a felülettel, mint az egér mozgatásával és a kattintással. Minél többet használod és tanulod a parancssort, annál jobban látni fogod a lehetőségeit. Nos, a parancssor maga egy program: a shell. A legtöbb Linux disztribúció napjainkban Bash-t használ és valójában ebbe írod be a parancsokat.

Nos, néhányan közületek, akik használtak Windowst korábban, talán emlékeztek a parancsfájlokra. Ezek a kis szöveges fájlok, amiket feltölthettél parancsokkal és a Windows futtatta őket. Ez egy okos és elegáns lépés volt néhány dolog elintézésére, mint például játékok futtatására a középiskolád informatika termének gépein, amikor nem tudtál rendszermappákat megnyitni vagy parancsikonokat létrehozni. A parancsfájlok a Windowsban amíg hasznosak, egy olcsó utánzata a shell scripteknek.

 A shell scriptek lehető teszik számunkra program utasítások sorozatos megadását és végrehajtását megírt események szerint, pont mint a parancsfájlok. Lehetővé tesznek sokkal hasznosabb funkciókat, mint például a parancs helyettesítés. Meghívhatsz egy parancsot, mint például egy dátum és használhatod annak kimenetét fájl nevezési séma részeként. Automatizálhatsz biztonsági mentéseket és minden másolt fájl nevének a végére odateheted az aktuális dátumot. A scriptek nem csak parancs lehívásra használhatók. Saját jogú programok. A scriptelés lehetővé tesz számunkra programozási funkciók használatát. Például "for" ciklus használatát, ha/akkor/különben állításokat és így tovább - közvetlenül az operációs rendszered felületén belül és nem kell más nyelvet megtanulj, mivel azt használod, amit már eleve tudsz: a parancssort.

Az valóban az ereje a scriptelésnek, azt hiszem. Olyan parancsokkal programozol, amiket már eleve tudsz. mialatt megtanulod a főbb programozási nyelvek alapjait. Valami ismétlődő és unalmas kell csinálj? Scripteld! Szükséged van egy nagyon összetett parancsra gyorsan? Scripteld! Szeretnél építeni egy nagyon könnyen használható parancssoros felületet valamihez? Scripteld!    

Mielőtt belekezdesz

Mielőtt belekezdünk a scriptelős sorozatunkba, tisztázzunk némi alapvető információt. A bash shellt fogjuk használni, amit a legtöbb Linux disztribúció alapból használ. A bash elérhető Mac OS felhasználóknak is és a cygwin révén Windowson is. Mivel ennyire általános, ezért tudsz scriptelni a platformodra való tekintet nélkül. Továbbá amíg a parancsok kapcsolattal léteznek, a scriptek képesek több platformon is működni csekély utómunkával vagy anélkül.

A scriptelés könnyen használható "adminisztrátori" vagy "szuper felhasználói" előjogok használatához, így a legjobb, ha leteszteled a scripteket, mielőtt munkára fogod őket. A józan észre is szükséged van, mint például legyen azon fájlokról biztonsági mentésed, amiken a scripteket futtatni tervezed. Az is nagyon fontos, hogy a helyes funkciókat használd, például az -i az rm parancshoz, így az együttműködésed szükséges. Ez megakadályozhat némely csúnya hibázást. Mint például olvasd végig a scripteket, amiket letöltesz és legyél óvatos az adatokkal, amikkel rendelkezel, arra az esetre, ha valami balul sülne el.

Alapvetően a scripek csak sima szöveges fájlok. Bármilyen szövegszerkesztőt használhatsz írásukhoz: gedit, emacs, vim, nano... Ez a lista folytatólagos. Csak bizonyosodj meg róla, hogy sima szövegként mented el, nem rich text-ként vagy Word dokumentumként. Mivel szeretem a nano nyújtotta könnyű kezelhetőséget, én azt fogom használni.

Script jogosultságok és nevek

A scriptek végrehajtása a programokhoz hasonlóan történik és ahhoz, hogy ez megtörténjen, a megfelelő jogosultságokra van szükségük. Végrehajthatóvá tudsz tenni egy scriptet az alábbi parancs futtatásával:

chmod +x ~/somecrazyfolder/script1

Ez lehetővé teszi mindenki számára annak az egyéni scriptnek a futtatását. Ha korlátozni szeretnéd a használhatóságát csak a saját felhasználód számára, használd az alábbi parancsot:

chmod u+x ~/somecrazyfolder/script1

Ahhoz, hogy futtasd ezt a scriptet át kell váltanod a megfelelő könyvtárba és utána futtatni a scriptet így:

cd ~/somecrazyfolder
./script1

Hogy még kényelmesebbé tedd a dolgokat, elhelyezheted a scripteket egy "bin" mappában a home könyvtáradban:

~/bin

Sok modern disztribúcióban ez a mappa már nincs alapból létrehozva, de létrehozhatod. Ez általában az a hely, ahol a felhasználói fiókodhoz tartozó végrehajtható fájlok tárolódnak és nem más felhasználókhoz. A scriptek ide helyezésével a nevük beírásával is indíthatod őket, mint a többi parancsot, anélkül, hogy a cd-vel ide kellene lépj és használnod kéne a './' előtagot.

Mivel elnevezed a scriptet, az alábbi parancsot kellene használd, hogy megnézd, van-e olyan telepített programot, ami ugyanezt a nevet használja:

which [parancs]

Sok felhasználó a korai scriptjeit úgy "test"-ként nevezi el és amikor futtatni próbálják a parancssorban, nem történik semmi. Ez azért van, mert ütközik a test paranccsal, ami paraméterek nélkül nem csinál semmit. Mindig bizonyosodj meg róla, hogy a script neved nem ütközik parancsokkal, mert egyébként olyan dolgok végzésében találhatod magad, amiket egyébként nem szándékoztál csinálni.

Scriptelési irányelvek  


Ahogy korábban említettem, minden script alapvetően sima szöveg. Ez persze nem azt jelenti, hogy bármit olyasmit beleírhatunk, amit kényünk-kedvünk szerint gondolunk. Amikor a szöveges fájlt megpróbálják feldolgozni, a shellek végigelemzik olyan nyomok után, hogy scriptek vagy sem és hogyan kezeljenek mindent megfelelően. Ezért van néhány irányelv, amit tudnod kell:

  1. Minden scriptnek "#!/bin/bash"-al kell kezdődnie.
  2. Minden új sor egy új parancs.
  3. A magyarázó (comment) soroknak #-el kell kezdődnie.
  4. A parancsok ()-lel vannak körbevéve.  

A Hash-durrantós Hack

Amikor a shell végigelemez egy szöveges fájlt, a legközvetlenebb út a fájlod scriptként való azonosításához az első sorod elkészítése:

#!/bin/bash

Ha másik shellt használsz, helyettesítsd annak elérési útvonalával. A magyarázó sorok kettős kereszttel (#) kezdődnek. de a felkiáltójel (!) és a shell útvonal hozzáadása egyfajta hack, ami megkerüli ezt a magyarázó szabályt és a script végrehajtására készteti a shellt, amire ez a sor mutat.

Új sor = Új parancs

Minden új sort új parancsnak kell tekinteni vagy egy nagyobb rendszer részének. A ha/akkor/különben állítások például több sort vesznek igénybe, de minden része annak a rendszer egy új sorban van. Ne engedd, hogy egy parancs beleérjen a következő sorba, mivel ez belerondíthat az előző parancsba és hibád adhat a következő sorban. Ha a szövegszerkesztőd csinálja, ki kellene kapcsolnod a szöveg tördelését, hogy a biztonságos oldalon maradj. A nano-ban az ALT+L gombokkal tudod kikapcsolni a szöveg tördelését.

Magyarázz gyakran #s-sel

Ha #-tel indítasz egy sort, akkor az figyelmen kívül lesz hagyva. Ez egy magyarázó sorrá változik, ahol emlékeztetheted magad, hogy mi volt az előző parancs kimenetele vagy mit csinál a következő parancs. Mégegyszer, kapcsold ki a szöveg tördelését vagy a magyarázatodat tedd több olyan sorba, ami kettős kereszttel kezdődik. Sok magyarázat használata egy jó rendszeres gyakorlat, mert segít neked és más embereknek a scripteted könnyebben finomhangolni. Az egyetlen kivétel ez alól a fent említett Hash-durrantós hack, így ne kövesd az #s-t !s-sel. ;-)

A parancsok zárójelekkel vannak körbevéve

Régebben a parancsok behelyettesítése egyetlen vonással történt (', osztozik a ~ gombbal).    
Ezt nem fogjuk érinteni, de amikor az emberek többsége kikapcsolódik az alapok megtanulása után és körülnéz, valószínűleg jó ötlet megemlíteni, hogy zárójeleket kellene használnod inkább. Ez főleg azért van, mert amikor beágyazol - parancsokat teszel más parancsok közé - a zárójelek jobban működnek.

Az első scripted

Kezdjük egy sima scripttel, ami lehetővé teszi számodra fájlok másolását és dátumok hozzáfűzését a fájlnév végéhez. Hívjuk "datecp"-nek. Először nézzük meg, hogy ez a név ütközik-e valamivel:


Láthatod, hogy nincs kimenet a which parancsra, így készen állunk ezen név használatára.

Hozzunk létre egy üres fájlt a ~/bin mappában:

touch ~/bin/datecp


Most pedig változtassuk meg a jogosultságokat, mielőtt elfelejtjük:


Kezdjük meg hát a scriptünk felépítését. Nyisd meg a fájlt a választott szövegszerkesztőddel. Mint mondtam, én a nano egyszerűségét kedvelem.

nano ~/bin/datecp

Menjünk és illesszük be a nélkülözhetetlen első sort és egy magyarázatot arról, hogy mit csinál ez a script. 


Következőnek adjunk meg egy változót. Ha tanultál valaha algebrát, valószínűleg tudod mi az.
Egy változó lehetővé teszi számunkra információ tárolását és az azzal kapcsolatos dolgok végrehajtását. A változók "kibővülhetnek", ha máshol kerülnek említésre. Azaz a nevük kijelzése helyett a tárolt tartalmuk kerül kijelzésre. Később megadhatod ugyanannak a változónak, hogy tároljon más információt és bármilyen instrukciót, ami az új információ használatával kapcsolatban történik. Ez egy ötletes helykitöltő.

Mit fogunk beletenni a változónkba? Nos, tároljuk a dátumot és az időt! Hogy ezt megtegyük, meghívjuk a date parancsot.

Nézd meg az alább látható képernyőképet, hogy lásdt, hogyan épül fel a date parancs kimenete:
   
 Láthatod, hogy különböző változók hozzáadásával, amik %-kal kezdődnek, módosíthatod a parancs kimenetét olyanra, amilyenre szeretnéd. Több információért ezzel kapcsolatban lásd a date parancs használati utasításának oldalát.

Használjuk a date parancs utolsó megközelítését, "data +%m_%d_%y-%H.%M.%S" és használjuk azt a scriptünkben.



Ha most azonnal mentenénk a scriptet, tudnánk futtatni és a date parancs kimenetét adná, ahogy azt várnánk:



De csináljunk valami mást. Adjunk meg egy változó nevet, mint például date_formatted ehhez a parancshoz. A megfelelő szintaxis ehhez az alábbi:

variable=$(parancs –opciók paraméterek)

Mi ezt így szeretnénk felépíteni:


  Ezt hívjuk parancs behelyettesítésnek. Lényegében megmondjuk a bashnak, hogy bármikor, amikor "date_formatted" változó felbukkan, futtassa a zárójeleken belüli parancsot. Aztán bármilyen kimenetet is adnak a parancsok, kerüljön kijelzésre a változó neve, "date_formatted" helyett.

Itt van egy példa script és a kimenete:





Figyeld meg, hogy két szóköz van a kimenetben. Egy az echo parancsnál az idézőjelek között és a változó előtti szóköz is megjelenítésre kerül. Ne használj szóközöket, ha nem akarod, hogy felbukkanjanak. Azt is vedd tudomásul, hogy a hozzáadott "echo" sor nélkül a script abszolút semmilyen kimenetet nem adna. 

Térjünk vissza a scriptünkhöz. Következőnek adjuk hozzá a parancs másolás részét.

cp –iv $1 $2.$date_formatted

     
Ez meghívja a copy parancsot az -i és a -v opciókkal. Az előbbi megerősítést kér, mielőtt felülír egy fájlt és az utóbbi megjeleníti azt, ami a parancssorban van. 

Folytatásként láthatod, hogy hozzáadtam az "$1" opciót. A scriptelésnél a dollár jel ($), amit egy szám követ, a script számozott paraméreteit jelzi, amikor az meghívásra került.

Például az alábbi parancsban:

cp –iv Trogdor2.mp3 ringtone.mp3

Az első paraméter a "Trogdor2.mp3" és a második paraméter a "ringtone.mp3".

Visszatérve a scriptünkhöz, láthatjuk, hogy két paraméterre hivatkozunk:


Ez azt jelenti, hogy amikor futtatjuk a scriptet, két paramétert kell biztosítanunk a script számára, hogy az megfelelően fusson. Az első paraméter, $1, a fájl, amit másolni fogunk és ez "cp -iv" parancs első paramétereként van behelyettesítve.

A második paraméter, $2, a kimeneti fájlként funkciónál ugyanazon parancs számára. De láthatod azt is, hogy különbözik. Hozzáadtunk egy pontot és meghívtuk a "date_formatted" változót fentről. Kíváncsi vagy, hogy ez mit csinál?

Itt van, hogy mi történik akkor, ha a script fut:


Láthatod, hogy a kimeneti fájl úgy néz ki, ahogy megadtam az $2-nél, folytatva egy ponttal és a date parancs kimenetével! Van értelme, ugye?

Most már ha futtatom a datecp parancsot, ez a script fog futni és lehetővé teszi számomra bármilyen fájl másolását egy új helyre és automatikusan hozzáadja a dátumot és az időt a fájlnév végéhez. Hasznos dolgok archiválásához!

A shell scriptelés az operációs rendszered munkára fogásának a középpontjában van. Új programozási nyelvet se kell, hogy tanulj. Próbálj meg scriptelni némely alapvető parancsokkal otthon és kezd el gondolkodni, hogy mire tudnád ezt használni.

Scriptelsz? Van bármilyen ötleted kezdők számára? Oszd meg gondolataidat a hozzászólásokban! Ez a sorozat folytatódni fog.

Felhasznált forrás: The Beginner's Guide to Shell Scripting: The Basics

2017. január 1., vasárnap

Boldog Új Évet Kívánok!

Boldog Új Évet Kívánok minden kedves olvasónak!

Ez a blog azért jött létre, hogy minél több Linuxos témájú hír, cikk, bejegyzés, leírás vagy gyakorlatilag bármilyen jellegű szöveg, útmutató elérhető legyen magyar nyelven, a kezdők és/vagy érdeklődők számára is közérthető formában.

Magamról pár szóban:
Az Ubuntu.hu oldalon Xplosive névvel találtok meg, ahogy itt is.
Az említett oldalon a tagok többsége valamennyire ismer, mivel majdnem 8 éve az oldal tagja vagyok. A 7 éves tagságomról szóló blogbejegyzést 2016.04.30-án írtam, akkor volt ott 7 éves és 1 hetes a felhasználói fiókom. Ubuntu Linuxot körülbelül 2007 vagy 2008 óta használok. Nem emlékszem már, hogy melyik volt az első.
A 2009-es (9.x) verzióból még eredeti telepítőm is van. Akkoriban volt olyan lehetőség, hogy ingyen házhoz küldenek (postáznak) egy gyári telepítő lemezt és éltem vele. Azt hiszem, hogy kétszer is és mindkét alkalommal meg is kaptam. Ez egyik ebből még ma is biztosan megvan, de már nem tudom, hogy a 9.04-es vagy 9.10-es verzió. Valahol a szekrényben van, jó ideje nem vettem már elő.

A blogon a megjelenő cikkeket/bejegyzéseket igyekszem majd úgy megírni, illetve angolról lefordítani, hogy az minél közérthetőbb legyen. Mint ahogy a bejegyzés elején is említettem, a kezdőket és az érdeklődőket célzom meg elsődlegesen ezzel a bloggal.

Ennek tükrében kívánok mindenkinek sikerekben gazdag, Boldog Új Évet és kellemes olvasgatást/időtöltést az oldalon és minél több sikert mindenkinek a Linux és a való élet világában is egyaránt!