Shell Scripting Linuxban - A számítógépek általában megértik a 0 és az 1 nyelvét, amelyet bináris nyelvként ismernek. Évtizedekkel ezelőtt az emberek programokat és alkalmazásokat írtak, például számológépeket bináris nyelveken. De ez nem volt csinos. Képzeld csak el! Meg akarod számítani a 73 + 96-ot, hogyan írnád? Inkább kiszámítania kellene a 73-as és a 96-os bináris egész számot, majd összeadnia őket. Az embernek elég hülyének kell lennie, hogy ezt megtegye. Inkább a 73-at és a 96-ot számolná egy papírra, és továbblépne. De ez a kisebb résznek szól. Mi van, ha ki kell számítania valamit (19273/23 * (2967 3)). Most azt mondanám, hogy ez elég intenzív.
Tehát egy értelmetlen embernek, aki megtanul mindent kódolni bináris nyelven, nincs értelme. Ez a fő oka annak, hogy a számítógépek nem voltak népszerűek a 70-es és a 80-as években. Később, még a Windows kifejlesztése előtt, az emberek elkezdték a kernelek és hasonló dolgok fejlesztését, amelyek az operációs rendszer alapvető részét képezték. A kernelek felhasználták egy adott program emberi olvasható formátumának megértésére, majd gépi kódra konvertálására. És itt alakultak ki a programozási nyelvek, és megváltoztatta a számítógépes világ teljes korszakát. Az alkalmazásokat C és C ++ formátumban építették fel, majd később a Java, Python, Ruby és Perl segítségével.
Jelenleg több mint 50 programozási nyelv működik a környéken. És ez legalább az, amit tudok. Nem is beszélve arról, hogy vannak más programozási nyelvek, amelyeket még nehezebb megérteni, mint a gépi kód. A dolgom: olyan példák, mint a csirkeprogramozás és a Malbolge. Néhány komoly csúnya dolog, amivel foglalkozni kell.
Héj programozás… .errr… Szkriptek?
Most kíváncsi lehet, hogy miért nem említettem fent a Shell programozást a többi programozási nyelvvel együtt. A fő ok, hogy a Shell maga nem programozási nyelv. Ez egy szkriptnyelv. A Shell csak egy felhasználói végű interaktív program, amely értelmezi a felhasználó bemeneteit, és eredményt ad, feltéve, hogy a parancs érvényes. Ezután átadja a programot a kernelnek annak végrehajtásához. A Shell nem része a Kernelnek, hanem a kernelt használja a fájlok futtatásához és létrehozásához.
A Shell Scripting program típusai
Most, ellentétben a C-vel, a C ++ -al vagy a Java-val, számos más típusú héj is használható a Shell Scriptinghez. Az alábbiakban látható a dátum előtt elérhető négy típusú héj:
Nem. | Héj típusa | Leírás |
1. | Bash, más néven Bourne Again Shell | Ez a leggyakoribb héj az összes Linux és debian alapú rendszeren. Nyílt forráskódú és ingyenes. |
2. | CSH vagy C Shell | Ez a Shell szkriptprogram a C programozás shell szintaxisát használja, és szinte hasonló a C-hez. |
3. | KSH vagy Korn Shell | A Korn egy Unix alapú Shell szkriptprogram, amely eredetileg a Bash Shell szkriptáláson alapult. Ez a héj meglehetősen fejlett és magas szintű programozási nyelve. |
4. | tcsh | Nincs specifikus teljes TCSH forma. Ahogy van. A TCSH a Berkeley Unix C shell továbbfejlesztett változata. Ismét támogatja a C stílus szintaxist |
A mai napot illetően nem az összes fenti kagyló érdekel minket. Csak a Bash-kagyló érdekli, mivel ez manapság a leggyakrabban használt héj.
A Bash Shell
A Bash Shell szkriptprogram egy magas szintű szkriptnyelv, hasonlóan a python nyelvéhez. De ha korábban is van tapasztalata a Python-nal, akkor valójában azt fogja tapasztalni, hogy a Bash Shell Scripting sokkal könnyebb, mint bármely más szkriptnyelv. A bash-ban sokkal gyorsabban lehet szkripteket írni, mint a C, C ++, Java vagy Python esetén. Az alapértelmezett terminál a mai legtöbb Linux környezetben, például: - Ubuntu, Linux Mint Cinnamon / Rafaela, Fedora, Arch Linux vagy bármely más debian környezet Bash-t, mint alapértelmezett Shell-t jelent. Ellenőrizheti a rendszerben lévő összes shell környezetet az alábbiak beírásával az alapértelmezett terminálon: -
$ macska / stb / kagyló |
(Megjegyzés: Az elején lévő dollárjelet a terminál azonosítására használják.)
A „macska” szintaxis a szöveges fájlok olvasásához. A Linux, Unix vagy Debian környezetben található parancsfájlíró programok típusait a shell fájl tartalmazza az etc könyvtárban. Minden héjnak van saját egyedi szintaxiskészlete és saját beépített funkcióinak halmaza. A DOS-nak vagy a Windows-nak is van saját héja, amelyet a hírhedt „parancssor” -nak vagy a „PowerShell-nek” hívnak, a Windows 8.1-től kezdve, de még mindig nem olyan erős, mint a bash. A macska szintaxisa megadja a rendszerben elérhető héjak listáját, azonban az alapértelmezett héj megtalálásához vagy az aktuális ellenőrzéséhez a héj használatával a következő szintaxist lehet használni a Shell Scripting Terminalban: -
$ echo $ SHELL |
Az 'echo' szintaxist bármilyen nyilatkozat kinyomtatásához használjuk. A 'SHELL' itt egy változó, amely hozzá van rendelve az aktuális héj kinyomtatásához. Az „echo” utáni dollárjelet a Shell Scripting változójának ábrázolására használják.
Ajánlott tanfolyamok
- Tanúsító tanfolyam a Java hibernátumban
- Java tavaszi tanfolyam
- WordPress Online képzés
- Ruby edzés
Shell Scripting
Tehát, most már tudja, mi a héj, vessünk egy pillantást a Shell Scripting-re és miért ismerték azt. A Shell Scripting nem más, mint egy parancssorozat egy egyszerű szöveges fájlban, amely a .sh kiterjesztéssel zárul. A '.sh' azt határozza meg, hogy egy shell végrehajtható fájl. A shell parancsfájl írása után meg kell változtatni a futtatható engedélyt a 'chmod function' használatával. Alapértelmezés szerint az újonnan létrehozott héj nem futtatható a UNIX vagy a Linux környezetben, kivéve ha az engedélyeket kifejezetten megváltoztatják. A Shell Scripting szinte hasonló a Windows Batch programozásához, de a különbség az, hogy a Shell Scripting meglehetősen erősebb és sokkal több csúcskategóriás interaktív környezetet biztosít a lapok kitöltéseivel együtt. Használnia kell egy jó szövegszerkesztőt a parancsfájl szkript írásához. Néhány jobbat ismerek Vimről, Geditről és a Leafpadról.
Más programozási nyelvektől eltérően a Shell szkriptek gyorsabban írhatók és futtathatók. A végrehajtáshoz nem kell letöltenie konkrét kötegeket vagy függőségeket. Nemcsak a rendszergazdák, hanem egy normál személy is használhatja őket automatizált szkriptek napi végrehajtására. Az alábbiakban bemutatjuk az itt írt szkript egyszerű példáját.
#! / bin / bash echo -e “Üdvözöljük az első shell programban. \ n” echo -e “Írj ide valamit, és ez a program ugyanazt fogja kinyomtatni. \ n” #a felhasználó felkérése a bemeneti olvasási bemenetre # a bemenet olvasása a felhasználói visszhangból “You megadva: $ input ” kilépés 0 |
Most hadd magyarázzam meg a fenti kód összes paraméterét. Mindenekelőtt írja a fenti kódot egy olyan szövegfájlba, ahogyan van, és mentse el egy .sh-vel végződő kiterjesztéssel. Például nevezze a fájlt „main_program.sh” néven. Győződjön meg arról, hogy nem 'main_program.sh.txt'. A legtöbb kezdő általában hajlandó ugyanezt tenni, és akkor ez nem futtatható. A fenti kód másolása után változtassa meg annak engedélyét a következő szintaxissal a terminálon: -
$ chmod + x main_program.sh VAGY $ chmod 755 main_program.sh |
Nyugodtan használhatja a fenti parancsok egyikét, mivel mindkettő ugyanazt a műveletet végzi. A modern bash shell szkriptprogramokban a '755' érték '+ x' -re változik; tehát nem számít, melyiket valójában használja. Miután megváltoztatta az engedélyeket, írja be az alábbiakat az érvényesítéshez.
$. / main_program.sh |
A periódus és a perjel használatos a shell parancsfájlok azonosításához és végrehajtásához. A fenti szkript végrehajtása után kinyomtatja az első visszhang-nyilatkozatot, majd kéri, hogy írjon be valamit. Miután belépett, ugyanazt kinyomtatja neked, és kilép a tolmácsból. Tehát hadd magyarázzam meg az összes fenti szintaxist. A '!! / Bin / bash' használatával azt mondják a tolmácsnak, hogy ez egy bash szkript és a Bash shell parancsfájl-készítési program a 'bin' könyvtárban található. Az 'echo' paranccsal bármilyen nyilatkozatot kinyomtathatunk, az '-e' jelző pedig arra szolgál, hogy jelezze a héjat, hogy új sor jelenik meg, amelyet 'perjel n vagy \ n' jelöl, vagy a lapon perjel t vagy \ t 'vagy az ehhez hasonló kijelentés. A második sor kivonatrészét egy bash szkript megjegyzésének azonosítására használják. Amit a hash után írsz, kommentálják és nem fogják végrehajtani. De ez nem vonatkozik az első sorban található „#! / Bin / bash” -ra. Így működik a szkript. Az 'read' szintaxist a felhasználó bármilyen bemenete beolvasására használjuk. És az 'input', amelyet már említettem az 'read' szintaxis után, az a változó, amelyben a felhasználó bemenete tárolódik. A bemenet helyett bármilyen változó használható. A második utolsó sorban a $ bemenet arra szolgál, hogy változóként azonosítsa magát, és kiadja a benne tárolt bemenetet. Végül az exit parancs arra szolgál, hogy tiszta kilépési nullával lépjen ki a tolmácsból.
Nem interaktív szkriptek
A fenti példa most nagyon egyszerű. Vannak olyan beépített modulok is, amelyek használhatók ahelyett, hogy minden bemenetet megadnának. Az alábbiakban egy kódrészlet nyomtatja ki a bejelentkezett felhasználónevet, az aktuális időt, a naptári dátumot és a bejelentkezések számát is: -
#! / bin / bash # Ez a szkript kinyomtatja az aktuális bejelentkezett felhasználói információkat, a bejelentkezett felhasználók számát, a dátumot, az időt és a naptárat echo “Hello, $ USER” echo “A mai dátum és idő“ date ”” echo “Bejelentkezett felhasználók száma:` Who | wc-l` ”
echo “Naptár” cal kilépés 0 |
Hajtsa végre a szkriptet a fenti fájl engedélyének megváltoztatása után. Most már azon tűnődhet, hogy az előző szkriptben valóban bevittük a bemenetet, majd a th változó segítségével adta vissza a bemenetet. De itt nem adtunk semmilyen adatot a '$ USER' változóban, akkor miért nyomtatja ki a pontos felhasználót. Ennek fő oka, hogy ezek a dolgok már be vannak állítva a rendszerben. Emlékszel, hogy már korábban az elején elmondtam neked a $ SHELL-ről, hogyan határozza meg alapértelmezés szerint? Igen, hasonló a helyzet itt a $ USER-rel. A dátumot illetően: ha csak a „dátumot” gépel be idézőjelek nélkül a terminálon, akkor kinyomtatja a pontos dátumot és időt. Csak egy idézetet (`) használtam, hogy szintaxisként azonosítsam önmagát, nem pedig a visszhangzó állítás részeként. Az egyetlen idézet (`) végrehajtja a benne nyomtatott szintaxist, legyen az utasításban vagy bárhol másutt. Ami a felhasználók számát illeti, a 'Who' paranccsal ellenőrizhetők az aktuális felhasználók bejelentkezve a bejelentkezett folyamatokkal, valamint az indítás dátuma és időpontja. Ami a fenti parancsot illeti, valójában csonkítottam, hogy csak azt a felhasználót tudjam megadni, amelyet a wc-l paranccsal naplóztak. A sáv (|) vagy néven néven ismert cső két parancs kombinálására szolgál. A cső valójában ennél sokkal többet jelent, de itt nem fogok részletesebben foglalkozni. És végül kinyomtattam a naptárat a beépített 'cal' paranccsal a naptár aktuális dátumának kinyomtatásához.
Az Exit Zero
Az Exit Zero valami olyasmit, amelyet még a fenti írásos programok egyikében sem magyaráztam meg. A fő ok, hogy az „Exit Zero” sokkal súlyosabb, mint bármelyik fenti Shell Scripting szintaxisban. Alapértelmezés szerint, amikor egy parancsfájlt végrehajt egy Linux vagy Unix disztribúcióban, akkor kétféle értéket ad vissza, vagy pontosabban a kilépési állapotot, hogy ellenőrizze, hogy a shell parancsfájl végrehajtása sikeres-e. Ha nulla értékként adja vissza az értéket, akkor a végrehajtás sikeres volt, egyébként vagy nem került végrehajtásra, vagy volt valamilyen hiba a végrehajtás során. Így az „exit 0” beírásával bármely szkript végére ellenőrizhető a szkript végrehajtási állapota.
A dolgok, amiket itt fedeztem fel, a Shell szkriptkészítésének legkevésbé alapvető részét képezik a linux disztribúcióban. A kilépési nulla rész és a cső fontos szerepet játszik a több parancsértelmező parancsfájl végrehajtásakor a linux parancsokban, és a feltételes if és else utasításokkal együtt történő használatakor.
Kapcsolódó cikkek:-
Íme néhány cikk, amely segít részletesebben megismerni a Shell Script típusokat a Linux kezdők számára, ezért csak keresse meg a linket.
- Héjas parancsfájlokkal készített interjúkérdések | A 10 legfontosabb hasznos kérdés
- Linux vs Windows - Fedezze fel a 9 legfélelmetesebb különbséget
- Linux interjúval kapcsolatos kérdések és válaszok Hasznos és a legtöbb kérdés
- Karrier a Linux adminisztrációban
- A Shell Script paramétereinek szabályai