Koore programmeerimine on lõbus. Kuid nii on ka Pythoniga. C-taustaga inimesed või mis kõige tähtsam - aknad kasutavad inimesed ei lepi sellega. Sageli eelistavad inimesed kasutada käsuridade asemel graafilist liidest. Kuid see on nii vale. Graafiline kasutajaliides on mõeldud inimestele, kes arvavad, et tarkvara teeb seda, mida selle kirjeldus ütleb. Kuid see pole alati nii. Eriti kestaprogrammeerimise akende puhul, kus viirused ja pahavara on tekitanud tornaado suuruse laastamise. Nii et käsuribaliidest kasutavad inimesed nõustuvad tavaliselt sellega, et see, mida nad teevad, on õige, ja ma olen nendega nõus, et neil on õigus.

Mitu korda jääte tavaliselt ummikusse ja kogu arvuti ripub lihtsa graafilise liidese põhise tarkvara tõttu. Käsurea liidesega töötamine on sageli elegantsem, kiirem ja mis kõige tähtsam - teate, mida täidate. Kuid jällegi pole kestade kasutamine ja programmide kirjutamine midagi sellist, mida kõik eelistaksid teha.

Lisaks oleks programmide kirjutamine C- või Java-vormingus tegelikult palju hullem kui graafilise kasutajaliidesepõhise tarkvara kasutamine akendes. Ma ei kiru siin C ega Java, lihtsalt see, et need ei sobi igapäevaseks kasutamiseks. Ja just seal paistavad silma skriptimiskeeled, näiteks Shelli programmeerimine ja Pythoni keeled. Nii et täna oleme siin sõjas, milline neist sobib paremini nii väiksemate kui ka suuremate rakenduste jaoks. Või on asi selles, et me suudame need mõlemad tegelikult kokku ühendada ja neist kahest midagi uut ja paremat teha. Vaatame mõlemat sügavamalt ja vaatame, kuhu see meid viib.

Bash Shelli skriptimine

Shell Scripting on tõesti fantastiline. Enamiku oma töödest saate siin teha peaaegu ühe koodireaga. Näiteks öelge, võtke see kood: -

$ touch file.txt | echo -e 'tere \ n uus \ n maailm \ n tere \ n tere' >> fail.txt | kassi fail.txt | sorteeri | uniq | wc -l

Niisiis, nagu näete, toimub siin palju kesta skriptimist, kuid mis täpselt toimub? Esiteks '| 'on tuntud kui toru. Seda kasutatakse ühe faili väljundi edastamiseks teisele. 'Puudutuse' süntaksit kasutatakse mis tahes faili loomiseks ja kaja süntaksit kasutatakse mis tahes avalduse printimiseks. Topelt parempoolseid nooli '>> kasutatakse väljundi lisamiseks mis tahes faili või programmi. Kassi süntaksit kasutatakse faili sisu lugemiseks. Sordi abil sorteeritakse kõik järjekorda ja 'uniq' kasutatakse duplikaatide eemaldamiseks sorteerimisest. 'Wc' kasutatakse ridade loendamiseks ja -l on lihtsalt lipp nende printimiseks. Nii et kõik need aheldatud käsud toimivad järgmiselt.

  1. Esmalt luuakse fail nimefailiga laiendiga txt, et saada teada, kas see on tekstifail.
  2. Teiseks kasutatakse kaja-e, et printida mitu sõna faili.txt faili ja 'kaldkriips n' või '\ n' kasutatakse uue rea sisestamiseks või järgmisele reale minemiseks.
  3. Pärast stringide sisestamist faili loetakse fail, sorteeritakse järjekord ja kantakse olemasolevate duplikaatide eemaldamiseks uniqi süntaksisse, mis meie puhul on "tere".
  4. Lõpuks prindime ridade arvu, kasutades 'wc-l', et see loendada ja terminali ekraanile printida.

Ehkki ülaltoodud on ainult üks koodirea, võib see muutuda keerukamaks, kui sisestatakse rohkem tingimusi. Seega on kesta skriptid head, kuid neid ei saa kogu aeg uute tööde tegemiseks kasutada. Mõnikord soovite, et asjad oleksid lihtsamad, sama lihtsad kui graafiline kasutajaliides. Kestiskriptid on tegelikult väga head pakettskriptide käitamiseks ja korduvate tööde tegemiseks, kuid samal ajal on neil ka teatud puudusi: -

  1. Kestiskriptid muutuvad suureks muutudes eriti keerukateks.
  2. Skriptide taaskasutamist pole peaaegu ühtegi. Pean siin silmas seda, et bash-skripte on äärmiselt raske sisestada C- või muudesse Java-koodidesse.
  3. Täpsemad funktsioonid, näiteks HTML-i parsimine, pole bash jaoks hõlpsasti saadaval.

Päästmiseks on siin aga Python ja kõige sobivam asendaja. Kuid kas Bash Shelli skriptimine on täielikult asendatav? Vaatame.

Soovitatavad kursused

  • Veebipõhine J2EE sertifitseerimiskoolitus
  • Professionaalne R programmeerimise koolitus
  • Online-sertifitseerimise koolitus Go programmeerimises
  • Koolitus Haskelli programmi kohta

Pythoni koore skriptimine

Python on vaikimisi installitud peaaegu kõigisse Linuxi ja UNIX-i süsteemidesse. Mõnikord võib levitamisel olla vanem versioon, kuid seda saab värskendada vaid lihtsa käsuga. Python Shelli programmeerimine on palju lihtsamini arusaadav ja seda on lihtsam kirjutada isegi algajatele. Vaikimisi on Python stiilis Read Eval Print Loop, mis aitab tõlgis uusi koode proovida. Kuid lihtsalt pütooni kasutamine võib ilma bash shell-skriptimise abita olla pisut raske. Pealegi kasutasime oma eelmises üherealises programmis duplikaatide eemaldamiseks süntaksit 'uniq', kuid see ei näidanud meile, millised need duplikaadid olid. Niisiis, lubage kirjutada python programmi teha sama:

#! / usr / bin / env pythonimport sys # süsteemimoodulite importimine kataloogifailidega töötamiseksif __name__ == “__main __”: # Alustades siin tühja sõnastikuga. Seda nimetatakse järjekorraks. Kõik selle sõnastiku klahvid ilmuvad nimena ja nende täpsustatud väärtused on # mitu korda konkreetne nimi ilmub.order = () # sys.stdin on failide jaoks kasutatav objekt. Kõik need funktsioonid, mida rakendatakse

# faili objekti saab kasutada ka sys.stdini jaoks.

tellimiseks sys.stdin.readlines ():

order = order.strip ()

kui tellimus tellimustes:

tellimused (tellimus) + = 1

muu:

tellimused (tellimus) = 1

tellimiseks arvesta tellimustega.iteritems ():

sys.stdout.write (“% d \ t% s \ n”% (arvesta, telli))

Nüüd loeb see fail kõigepealt sisendi objektist sys.stdin. Kogu väljund kirjutatakse objektile sys.stdout. Pärast selle skripti loomist, eeldades, et olete selle nimetanud order.py-ks, saate lihtsalt terminalis käivitada järgmise kesta skripti ja leiate kõigi duplikaatstringide koguarvu.

$ kassifail.txt | python order.py

Samamoodi saame seda ka sortida süntaksi abil: -

$ kassifail.txt | python order.py | sorteerima -rn

Python Shell vs Bash Shell programmeerimise skriptimine

Nüüd oleme näinud, kuidas saame ühendada python ja shell skriptid, et luua käskude ahel ja neid koos teostada. Astugem nüüd samm edasi ja vaatame, kas Python suudab Bash Shelli täielikult asendada.

Rääkides bash shell programmeerimisest, siis bash peksab jõudluse mõttes täiesti jama pythonist välja. Kuid kui võrrelda seda andmetüüpide ja muude täiustatud kraamidega, pole bashil palju ühilduvust. Bash-kesta skripti käivitusaeg on 2, 8 miljonit sekundit, pythoni käivitusaeg aga 11, 1 miljonit sekundit. Ausalt öeldes on bash üldkasutatav keel nagu Python, kuid mõlemal on oma tugevused ja nõrkused. Bash-shell programmeerimine on enamikes Linuxi distributsioonides vaikimisi kasutatav terminal ja seega on see jõudluse osas alati kiirem. Kuid kas see tähendab, et see võib Pythonit täielikult asendada? Ei. Suurte programmidega tegeledes läheb Bash keeruliseks, Python aga mitte. Pythonit saab minu teada kasutada ka objektorienteeritud keelena. Kui olete alles algaja, siis ei pruugi te isegi teada nende kahe erinevust. Python on kõige elegantsem skriptikeel, isegi rohkem kui Ruby ja Perl. Bash-kesta programmeerimine on teisest küljest tegelikult väga hea käskluse väljundi teisaldamiseks.

Shell Scripting on lihtne ja see pole nii võimas kui python. See ei käsitle raamistikke ja selle keerulist kasutamist veebis seotud programmidega, kasutades Shell Scriptingit. Kestas skriptimise tegelik jõud peitub voo tekstiredaktoris või sedis, Awki programmides ja sarnastes rakendustes.

Failide käsitlemine ja veebirakenduste arendamine

Bash Shelli skriptimine töötab failidega tegelemisel veatult ja kiiresti. Failide käitlemise all pean silmas kopeerimist, ketaste kloonimist, võrkude jaoks varukoopiarakenduste kirjutamist, ftp-servereid, failisisendite salvestamist ja neile hiljem juurdepääsu ning nende väljundite edastamist hiljem toru abil mõnele muule. Python on teisest küljest kasulikum selliste andmete tükkidega tegelemisel nagu failist andmete lugemine ja andmete töötlemine. Kui ma täpsustaksin, pole bash isegi programmeerimiskeel. See on rohkem lihtne kest, mis oli suunatud käsurida kasutades süsteemifailidega tegelemisele, et protsess oleks kiirem ja kiirem.

Seega, kui teate bashi kesta programmeerimist õigesti, siis teate ka, et muutujad ja ulatused bashis on äärmiselt piiratud. Python on seevastu pigem kesta skriptikeel kui programmeerimiskeel. Kui me nimetame Bashit programmeerimiskeeleks, on selle Python ütlemine pigem objektorienteeritud kesta programmeerimiskeel. Pythoniga saab tegeleda objektorienteeritud viisil, kuid see pole kunagi puhtalt objektile orienteeritud nagu C või Java. Samamoodi on Bash küll skriptikeel; seda on parem kasutada kui midagi, mida on vaja failidega kiireks käsitlemiseks, selle asemel, et sinna suuri programme kirjutada. Ehkki Python on kesta skriptikeel, tegeleb see tegelikult omaenda kestaga. Näiteks kogu töölaual oleva faili teisaldamine mõnda teise juhuslikku kataloogi Bash-kesta kaudu läheks umbes nii:

$ cd Desktop $ mv * randomDirectory

Kuid teisalt on pythonis sama asja tegemine natuke keerulisem. See läheb umbes nii:

impordi os, glob nime jaoks glo.glob ('*'): os.rename (fname, 'randomdirectory')

Parimal juhul saab selle sel viisil kõige kompaktsemaks muuta:

import os, glob (os.rename (fname, 'randomdirectory') fname jaoks glo.glob ('*'))

Mis tahes keele õppimisel ütlevad inimesed teile sageli, kuidas põhitõed ja kõik need asjad puhtaks saada, kuid nad ei ütle teile, kuidas kõigepealt kõige tähtsama süsteemiga hakkama saada. Ja lisaks on Python ja Bash mõlemad Shelli skriptikeel, mis tähendab, et mõlemad on välja töötatud peamiselt süsteemi ja selle failide käsitlemiseks.

Bash Pythoni sees?

Jah, sa lugesid seda õigesti. Siiani oleme lugenud, kuidas saaksime Pythli skripte Shelli sees tutvustada. Kuid saame ka pythoni skripte tutvustada pythoni skriptide sees. Võtame selle näiteks: - Tippige pythoni kesta 'apt-get update'? Ilmselt saate viga, näiteks kehtetu süntaks. Asi on selles, et kui soovite kasutada pyhhi bash-koode nagu 'ls, cd, mv' või midagi muud, peate OS-i mooduli importima. Nüüd tehke üks asi, kopeerige järgmine kood ja kleepige see pythoni kestasse ja kontrollige, kuidas see töötab: -

$ python >>> os import * >>> süsteemist ('sudo apt-get update')

Ja nüüd see töötab … jah. See on veel üks viis, kuidas saada pythoni ja bashi skriptid koos töötama. Lisaks on veel üks python-moodul, mis on spetsiaalselt ehitatud bashiga töötamiseks. Seda moodulit nimetatakse pexpectiks. Pexpect on python-moodul, mida kasutatakse lapseprotsesside kudemiseks, nende juhtimiseks ja tulemuste tagastamiseks vastavalt lapseprotsesside taotlusele. Pexpect-moodulil on äärmiselt lihtne liides vajalike moodulite ja alamprotsesside importimiseks ning selle sisendamiseks. Pexpekti installimiseks on vaja ainult pipi oma süsteemi installida ja mooduli saab installida järgmiselt:

$ pip install pexpect

Pexpetsi versioon vajab pütoni versiooni, mis on suurem kui 3.3 või täpsemalt 2.7.

Pythoni ja bashi segamiseks on tegelikult palju enamat ja miski ei tööta nii hästi kui Pythoni ja Bashi skriptide segu. See segu muudab skripti bashi tõttu kiireks ja Pythoni tõttu täiustatud funktsioonide hulka. Pexpekti ja selle dokumentatsiooni kohta saab lugeda aadressil https://pexpect.readthedocs.org/online.

Soovitatavad artiklid

Siin on mõned artiklid, mis aitavad teil Bash-skriptide ja Pythoni kohta üksikasjalikumat teavet saada, nii et lihtsalt minge lingi kaudu.

  1. Python vs JavaScript - väärtuslikud erinevused
  2. 25 parimat hämmastavat Pythoni intervjuu küsimust ja vastust
  3. Python vs JavaScripti erinevused
  4. R programmeerimine vs Python
  5. PHP-faili käsitlemine

Kategooria: