Programiranje školjaka je zabavno. Ali takav je i Python. Ljudi s podrijetlom C ili najvažnije ljudi koji koriste Windows ne slažu se. Ljudi često više vole grafičko sučelje nego one u naredbenom retku. Ali to je tako potpuno pogrešno. Grafičko korisničko sučelje namijenjeno je osobama koje misle da softver radi ono što opisuje. Ali to nije uvijek slučaj. Pogotovo u slučaju prozora programiranja školjaka gdje su virusi i zlonamjerni uređaji stvorili pustoš koji ima veličinu Tornada. Dakle, ljudi koji se koriste sučeljem naredbenog retka obično se slažu da je ono što rade ispravno, a ja se slažem s njima da su u pravu.

Obično biste se zaglavili i čitavo računalo visi zbog jednostavnog softverskog grafičkog sučelja. Rad na sučelju naredbenog retka često je elegantniji, brži, a što je najvažnije znate što izvršite. Ali opet, korištenje školjki i pisanje programa nije nešto što bi svi voljeli raditi.

Osim toga, pisanje programa na C ili Javi zapravo bi bilo puno gore od korištenja softvera na bazi grafičkog korisničkog sučelja u sustavu Windows. Ovdje ne psujem ni C ni Javu, samo što oni nisu prikladni za svakodnevnu upotrebu. Ovdje se izvrsno nazivaju skriptni jezici kao što su Shell programiranje i Python. Dakle, danas smo ovdje u ratu koji je prikladniji za manje i veće aplikacije. Ili se zapravo možemo oboje spojiti i od njih napraviti nešto novo i bolje. Pogledajmo dublje oba i vidimo gdje nas vodi.

Bash Shell Scripting

Shell Scripting je zaista strašan. Ovdje možete gotovo raditi većinu svojih poslova u samo jednom retku koda. Na primjer, uzmite ovaj dio koda: -

$ touch file.txt | echo -e 'zdravo \ n Novi \ n Svijet \ n zdravo \ n Zdravo' >> file.txt | mačka file.txt | sortirati | uniq | wc -l

Dakle, kao što vidite, ovdje se događa puno skriptiranja granata, ali što se točno događa? Prvo je '| 'poznata je kao cijev. Koristi se za prijenos rezultata jedne datoteke u drugu. Sintaksa "dodir" koristi se za stvaranje bilo koje datoteke, a sintaksa eha koristi se za ispis bilo koje izjave. Dvostruke desne bočne strelice '>>' koriste se za umetanje izlaza u bilo koju datoteku ili program. sintaksa 'cat' koristi se za čitanje sadržaja datoteke. Sort se koristi za razvrstavanje svega po redoslijedu, a 'uniq' se koristi za uklanjanje duplikata iz sortiranja. 'Wc' se koristi za brojanje linija, a -l je samo zastava za ispis. Dakle, sve ove lančane naredbe čine sljedeće.

  1. Prvo se stvara datoteka s imenskom datotekom s nastavkom txt da biste je obavijestili da je tekstualna datoteka.
  2. Drugo, echo -e se koristi za ispis više riječi unutar file.txt datoteke, a 'kosa n' ili '\ n' se koristi za unos novog retka ili prijelaz na sljedeći redak.
  3. Nakon unošenja stringova u datoteku, datoteka se čita, razvrstava po redoslijedu i prenosi u uniq sintaksu kako bi se uklonili postojeći duplikati, što je u našem slučaju 'zdravo'.
  4. Konačno ispisujemo broj redaka pomoću broja 'wc-l' za brojanje i ispisujemo na zaslonu terminala.

Iako je gore navedeno samo jedna linija koda, može se dogoditi da se složi kad se uvede više uvjeta. Stoga su skripte školjka dobre, ali ne mogu se stalno koristiti za obavljanje novih poslova. Ponekad želite da stvari budu jednostavnije, jednostavne poput grafičkog korisničkog sučelja. Skripte Shell-a zapravo su vrlo dobre za pokretanje serijskih skripti i obavljanje opetovanih poslova, ali istovremeno imaju i neke nedostatke: -

  1. Skripte školjki postaju vrlo komplicirane kako postanu velike.
  2. Ponovno korištenje skripti gotovo da i nema. Ono što ovdje mislim je da je bash skripte izuzetno teško umetnuti u C ili druge Java kodove.
  3. Napredne značajke, poput HTML raščlanjivanja, nisu lako dostupne za bash.

Međutim, ovdje je Python za spašavanje i najprikladnija zamjena za isti. No, je li scenarij Bash Shell-a potpuno zamjenjiv? Pogledajmo.

Preporučeni tečajevi

  • Obuka za internetsko certificiranje u sveobuhvatnom J2EE
  • Stručna obuka za R programiranje
  • Obuka za online certificiranje u programu Go
  • Trening o Haskell programu

Python Shell Scripting

Python je instaliran prema zadanim postavkama na gotovo svim Linux i UNIX sustavima. Ponekad distribucija može imati stariju verziju, ali može se ažurirati jednostavnom naredbom. Programiranje Python Shell-a mnogo je lakše razumljivo i čistije za pisanje čak i za početnike. Također, Python prema zadanom ima stil Read Eval Print Loop koji pomaže u isprobavanju novih kodova u tumaču. Ali samo korištenje pythona može biti malo naporno bez pomoći skripta bash shell-a. Osim toga, u prethodnom programu s jednim retkom koristili smo sintaksu 'uniq' za uklanjanje duplikata, ali nije nam pokazalo što su duplikati. Dakle, hajde da napišemo python program za to isto: -

#! / usr / bin / env pythonimport sys # uvoz sistemskih modula za rad s datotekama direktorija __name__ == "__main __": # Počinje s ovdje praznim rječnikom. Što se naziva redom # Svi se ključevi u ovom rječniku prikazuju kao ime, a određene vrijednosti za njih # bit će koliko će se puta pojaviti određeno ime.order = () # sys.stdin je objekt koji se koristi za datoteke. Sve one funkcije na koje se primjenjuje

# datotečni objekt se također može koristiti za sys.stdin.

za narudžbu u sys.stdin.readlines ():

order = order.strip ()

ako je red u narudžbama:

naloga (nalog) + = 1

drugo:

naloga (nalog) = 1

za narudžbu, računati u order.iteritems ():

sys.stdout.write ("% d \ t% s \ n"% (broj, redoslijed))

Sada ova datoteka prvo čita unos iz sys.stdin objekta. Sav izlaz se upisuje u sys.stdout objekt. Nakon stvaranja ove skripte, pod pretpostavkom da ste je imenovali kao order.py, u terminalu možete izvršiti sljedeću skriptu ljuske i naći ćete ukupan broj svih duplikata žice.

$ cat file.txt | python order.py

Slično tome, možemo to riješiti i koristeći sintaksu sortiranja: -

$ cat file.txt | python order.py | sortirati -rn

Python Shell vs Bash Shell Programiranje skripti

Sada smo vidjeli kako možemo kombinirati skripte pythona i ljuske kako bismo stvorili lanac naredbi i zajedno ih izvršavali. A sada, idemo korak dalje i vidimo možemo li Python u potpunosti zamijeniti Bash Shell.

Govoreći o bash programiranju školjki, u smislu performansi, bash totalno prebija sranje iz pythona. Ali ako ga usporedite s vrstama podataka i ostalim naprednim stvarima, bash nema puno kompatibilnosti. Vrijeme pokretanja skripte bash shell-a je 2, 8 mili sekundi, dok vrijeme pythona 11, 1 mili sekundi. Da budem iskreniji, bash je jezik opće namjene baš kao i Python, ali obojica imaju svoje snage i slabosti. Programiranje Bash shell-a zadani je terminal u većini Linux distribucija, pa će uvijek biti brži u pogledu performansi. Ali znači li to da može potpuno zamijeniti Python? Ne. Kada se bavite velikim programima, Bash će se i dalje komplicirati dok Python to ne čini. Koliko znam, Python se može koristiti i kao objektno orijentirani jezik. Ako ste tek početnik, možda možda ni ne znate razliku između to dvoje. Python je najelegantniji scenaristički jezik, čak i više od Ruby i Perl. S druge strane, Bash shell programiranje zapravo je vrlo izvrsno u ispisivanju izlaza jedne naredbe u drugu.

Pisanje školjki jednostavno je i nije tako moćno kao pyton. Ne bavi se okvirima i teško je ići s web povezanim programima pomoću Shell Scriptinga. Stvarna snaga skriptiranja školjki nalazi se u uređivaču teksta Stream Tekst ili sed, Awk Programu i sličnim aplikacijama.

Rukovanje datotekama i razvoj web aplikacija

Bash Shell Scripting djeluje besprijekorno i brzo kada se bavite datotekama. Pod rukovanjem datotekama mislim na kopiranje, kloniranje diskova, pisanje sigurnosnih kopija aplikacija za umrežavanje, ftp poslužitelje, spremanje ulaznih datoteka i pristup njima kasnije te prijenos tih rezultata kasnije na nešto drugo uz pomoć cijevi. Python je s druge strane korisniji za rješavanje delova podataka kao što su čitanje podataka iz datoteke i obrada podataka. Ako budem precizniji, bash nije čak ni programski jezik. Radi se više o jednostavnoj ljusci koja je bila usmjerena na obradu sistemskih datoteka pomoću naredbenog retka kako bi proces bio brži i brži.

Dakle, ako znate pravilno programiranje bash školjki, tada također znate da su varijable i dosezi u bashu izuzetno ograničeni. Python je s druge strane više skriptni jezik nego programski jezik. Ako Bash nazivamo programskim jezikom, više je to reći kao Python objektno orijentirani programski jezik školjke. S pythonom se može baviti na objektno orijentirani način, ali to nikada neće biti čisto objektno orijentirano poput C ili Java. Slično tome, Bash je skriptni jezik; više se koristi kao nešto što je potrebno za brzu obradu datoteka, a ne za pisanje velikih programa u njima. Također, iako je Python skriptni jezik za školjku, on zapravo ima unutar svoje ljuske. Na primjer, premještanje sve datoteke koja se nalazi na radnoj površini u neki drugi slučajni direktorij preko Bash-ove ljuske prešao bi ovako:

$ cd Desktop $ mv * randomDirectory

Ali s druge strane, raditi istu stvar u pythonu malo je složenije. Ide ovako: -

import os, glob za fname u glob.glob ('*'): os.rename (fname, 'randomdirectory')

Međutim, u najboljem slučaju jedan je kompaktniji na ovaj način:

import os, glob (os.rename (fname, 'randomdirectory') za fname u glob.glob ('*'))

Kada učite bilo koji jezik, ljudi će vam često reći kako da očistite osnove i sve te stvari, ali neće vam reći kako da se prvo nosite sa samim sustavom koji je najvažniji. Osim toga, Python i Bash su Shell skriptni jezik što znači da su oboje razvijeni uglavnom za rad sa sustavom i njegovim datotekama.

Bash unutar Pythona?

Da, dobro ste pročitali. Do sada smo čitali o tome kako možemo uvesti Python skripte u Shell. Ali mi također možemo uvesti skripte Shell-a u skripte pythona. Uzmimo za primjer: - Upišite "apt-get update" u ljusci pythona? Očito ćete dobiti neku pogrešku poput nevaljane sintakse. Dakle, stvar je u slučaju da želite koristiti bash kodove poput 'ls, cd, mv' ili bilo što drugo u pythonu, morat ćete uvesti OS modul. Učinite jedno, kopirajte sljedeći kôd i zalijepite ga u Shell of python i provjerite kako to funkcionira: -

$ python >>> iz os import * >>> sustava ('sudo apt-get update')

I sada djeluje … da. Ovo je još jedan način kako postići suradnike python i bash skripte. Osim toga, postoji još jedan python modul koji je posebno izgrađen za rad s bashom. Ovaj modul je poznat kao pexpect. Pexpect je python modul koji se koristi za mriještenje dječjih procesa, njihovo upravljanje i vraćanje rezultata prema zahtjevu dječjeg procesa. Pexpect modul ima izuzetno jednostavno sučelje za uvoz potrebnih modula i podređenih procesa unutar njega i njihovo izvršavanje u skladu s tim. Jednostavno je potrebna instalacija pipa u njihov sustav da bi se instalirao pexpect, a modul može biti instaliran na sljedeći način:

$ pip instaliraj pexpect

Verzija Pexpecta treba verziju pythona veću od 3.3 ili točnije 2.7.

Zapravo je mnogo više za miješanje pythona i basha i ništa ne djeluje bolje kao mješavina skripte Pythona i Bash-a. Ova smjesa čini scenarij brzim zbog Bash-a i uključivanjem naprednih značajki i zbog Pythona. O Pexpect-u i njegovoj dokumentaciji možete pročitati na https://pexpect.readthedocs.org/online.

Preporučeni članci

Evo nekoliko članaka koji će vam pomoći da saznate više detalja o Bash skriptu i Python-u, pa samo prođite vezu.

  1. Python vs JavaScript-vrednosne razlike
  2. 25 najboljih pitanja i odgovora za nevjerojatan Python intervju
  3. Razlike Python-a i JavaScript-a
  4. R Programiranje vs Python
  5. PHP obrada datoteka

Kategorija: