Shell-programmering er morsomt. Men det samme er Python. Personer med bakgrunn i C, eller viktigst av alt folk som bruker vinduer, vil ikke være enige. Folk har ofte en tendens til å foretrekke å bruke et grafisk basert grensesnitt enn en kommandolinje. Men det er så helt feil. Grafisk brukergrensesnitt er for folk som tror at programvaren gjør som beskrivelsen sier at den gjør. Men det er ikke alltid tilfelle. Spesielt når det gjelder shell-programmeringsvinduer der virus og malwares har skapt en ødeleggelse som er på størrelse med en Tornado. Så folk som bruker et kommandolinjegrensesnitt vil vanligvis være enige om at det de gjør er riktig, og jeg er enig med dem i at de har rett.

Mange ganger vil du vanligvis bli sittende fast og hele datamaskinen henger på grunn av en enkel grafisk grensesnittbasert programvare. Å jobbe med et kommandolinjegrensesnitt er ofte mer elegant, raskt og viktigst av alt at du vet hva du kjører. Men igjen, å bruke skjell og skrive programmer er ikke noe som alle foretrekker å gjøre.

Dessuten ville det å skrive programmer i C eller Java faktisk være mye mer verre enn å bruke et grafisk brukergrensesnittbasert programvare i Windows. Jeg forbanner ikke C eller Java her, det er bare at de ikke egner seg til daglig bruk. Og det er her skriptspråk som Shell-programmering og Python-språk utmerker seg. Så i dag er vi i krig her, hvilken som er mer egnet for mindre så vel som større applikasjoner. Eller er det slik at vi faktisk kan kombinere begge sammen og gjøre noe nytt og bedre ut av de to. La oss se nærmere på dem begge og se hvor den tar oss.

Bash Shell-scripting

Shell Scripting er virkelig fantastisk. Du kan nesten utføre de fleste jobbene dine her på bare en kodelinje. Ta for eksempel dette koden: -

$ touch file.txt | echo -e 'hallo \ n Ny \ n Verden \ n hallo \ n Hallo' >> file.txt | cat file.txt | sorter | uniq | wc -l

Så, som du kan se, det skjer mye shell-scripting her, men hva skjer egentlig? Først '| 'er kjent som røret. Den brukes til å overføre utgangen fra en fil til en annen. Syntaks 'touch' brukes til å opprette en hvilken som helst fil, og ekkosyntaxen brukes til å skrive ut en hvilken som helst setning. Dobbelte høyresidige pilene '>>' brukes til å sette inn utdataene i hvilken som helst fil eller program. 'katt' syntaks brukes til å lese innholdet i en fil. Sortering brukes til å sortere alt i rekkefølge, og 'uniq' brukes til å fjerne duplikater fra sorteringen. 'Wc' brukes til å telle linjer og -l er bare et flagg for å trykke dem. Så alle disse lenede kommandoene gjør følgende.

  1. Først opprettes en fil med navnefilen med utvidelse txt for å informere om at det er en tekstfil.
  2. For det andre brukes echo -e til å skrive ut flere ord inne i filen.txt-filen og 'skråstrek n' eller '\ n' brukes til å legge inn en ny linje eller gå til neste linje.
  3. Etter å ha lagt inn strenger i filen, blir filen lest, sortert i rekkefølge og overført til uniq-syntaks for å fjerne eksisterende duplikater, her som i vårt tilfelle er 'hei'.
  4. Til slutt skriver vi ut antall linjer ved å bruke 'wc -l' for å telle og skrive ut det på terminalskjermen.

Så selv om ovenstående bare er en kodelinje, kan det ha en tendens til å bli komplisert når flere forhold blir satt inn. Dermed er skallskript bra, men de kan ikke brukes til å gjøre nye jobber hele tiden. Noen ganger vil du at ting skal være enklere, så enkle som et grafisk brukergrensesnitt. Shell-skript er faktisk veldig bra for å kjøre batch-skript og gjøre gjentatte jobber, men samtidig har de noen ulemper:

  1. Skallskript har en tendens til å bli ekstremt kompliserte når de blir store.
  2. Gjenbruk av manus er nesten ingen. Det jeg mener her er at bash-skript er ekstremt vanskelig å sette inn i C eller andre Java-koder.
  3. Avanserte funksjoner som HTML-parsing er ikke lett tilgjengelig for bash.

Imidlertid er det Python her for redning, og den mest passende erstatningen for den samme. Men er Bash Shell-skript helt utskiftbart? La oss ta en titt.

Anbefalte kurs

  • Online Certification Training in J2EE Comprehensive
  • Profesjonell R-programmeringstrening
  • Online Certification Training in Go programmering
  • Trening på Haskell-programmet

Python Shell-scripting

Python er som standard installert på nesten alle Linux- og UNIX-systemer. Noen ganger kan distribusjonen ha en eldre versjon, men den kan oppdateres ved bare en enkel kommando. Python Shell-programmering er mye lettere å forstå og renere å skrive selv for nybegynnere. Som standard har Python stilen til Read Eval Print Loop som hjelper til med å prøve ut nye koder i tolken. Men bare det å bruke python kan være litt tøft uten hjelp av bash shell scripting. Dessuten brukte vi i det forrige linjeprogrammet 'uniq' syntaks for å fjerne duplikater, men det viste ikke hva duplikatene var. Så kan vi skrive et python-program for å gjøre det samme: -

#! / usr / bin / env pythonimport sys # importere systemmoduler for å jobbe med katalogfiler hvis __navn__ == “__main __”: # Starter med en tom ordbok her. Som blir betegnet som rekkefølgen # Alle nøkler i denne ordboken vises som et navn, og de angitte verdiene for dem # vil være hvor mange ganger det spesifikke navnet vises.order = () # sys.stdin er et objekt som brukes til filer. Alle funksjonene som blir brukt på

# et filobjekt kan også brukes til sys.stdin.

for bestilling i sys.stdin.readlines ():

order = order.strip ()

hvis ordre i ordre:

bestillinger (ordre) + = 1

ellers:

ordrer (ordre) = 1

for ordre, telle inn ordrer.iteritems ():

sys.stdout.write (“% d \ t% s \ n”% (antall, rekkefølge))

Nå leser denne filen først inndataene fra sys.stdin-objektet. All output skrives til sys.stdout-objektet. Etter å ha opprettet dette skriptet, forutsatt at du har navngitt det som order.py, kan du bare utføre følgende skallskript i terminalen, og du vil finne det totale antallet av alle duplikatstrengene.

$ cat file.txt | python order.py

På samme måte kan vi også sortere dette ved å bruke syntaks til sortering:

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

Python Shell vs Bash Shell-programmering av scripting

Nå har vi sett hvordan vi kan kombinere python- og shell-skript for å lage en kjede med kommandoer og utføre dem sammen. La oss nå ta et skritt videre og se om Python helt kan erstatte Bash Shell.

Apropos bash shell-programmering, når det gjelder ytelse, slår bash fullstendig crap ut av python. Men hvis du sammenligner det med datatyper og andre avanserte ting, har ikke bash mye kompatibilitet. Oppstarttiden for et bash shell-skript er 2, 8 mili sekunder, mens det for python er 11, 1 mili sekunder. For å være mer åpenhjertig, er bash et generelt språk, akkurat som Python, men begge har sine egne styrker og svakheter. Bash shell-programmering er standardterminalen i de fleste Linux-distribusjoner, og dermed vil den alltid være raskere med tanke på ytelse. Men betyr det at den helt kan erstatte Python? Nei. Når du arbeider med store programmer, vil Bash fortsette å bli komplisert mens Python ikke gjør det. Python kan også brukes som et objektorientert språk så vidt jeg vet. Hvis du bare er en nybegynner, vet du kanskje ikke en gang forskjellen mellom de to. Python er det mest elegante skriftspråket, enda mer enn Ruby og Perl. Bash shell-programmering er derimot veldig utmerket når det gjelder å lede utdataene fra en kommando til en annen.

Shell Scripting er enkelt, og det er ikke så kraftig som python. Det omhandler ikke rammer og det er vanskelig å komme i gang med nettrelaterte programmer ved bruk av Shell Scripting. Den virkelige kraften til shell-scripting ligger i Stream Text-editoren eller sed, Awk-programmene og lignende apper.

Filhåndtering og utvikling av webapplikasjoner

Bash Shell Scripting fungerer feilfritt og raskt når du arbeider med filer. Ved å håndtere filer, mener jeg å kopiere, klone disker, skrive backup-apper for nettverk, ftp-servere, lagre filinnganger og få tilgang til dem senere og overføre disse utgangene senere til noe annet ved hjelp av pipe. Python er derimot mer nyttig for å håndtere biter av data som å lese data fra en fil og behandle data. Hvis jeg er mer spesifikk, er bash ikke en gang et programmeringsspråk. Det er mer et enkelt skall som var målrettet mot å håndtere systemfiler ved å bruke kommandolinjen for at prosessen skal bli raskere og raskere.

Så hvis du kjenner bash shell-programmering ordentlig, vet du også at variabler og omfang i bash ekstremt begrenset. Python er derimot mer et skriptspråk enn programmeringsspråk. Hvis vi betegner Bash som et programmeringsspråk, er det mer som å fortelle Python som et objektorientert programmeringsspråk. Man kan takle python på en objektorientert måte, men det kommer aldri til å være rent objektorientert som C eller Java. På samme måte er Bash imidlertid et skriptspråk; det er mer av bedre brukt som noe som kreves for å håndtere filer raskt i stedet for å skrive store programmer i det. Selv om Python er et skriptspråk for skall, handler det faktisk innenfor sitt eget skall. Hvis du for eksempel flytter alle filene som er på skrivebordet til en annen tilfeldig katalog via Bash shell, vil det gå slik:

$ cd Desktop $ mv * randomDirectory

Men på den annen side er det litt mer komplisert å gjøre det samme i python. Det går slik:

import os, glob for fname i glob.glob ('*'): os.rename (fname, 'randomdirectory')

Imidlertid kan man i beste fall gjøre det mest kompakt på denne måten: -

import os, glob (os.rename (fname, 'randomdirectory') for fname i glob.glob ('*'))

Når du lærer noe språk, vil folk ofte fortelle deg hvordan du får det grunnleggende rent og alle disse tingene, men de vil ikke fortelle deg hvordan du først skal takle systemet selv som er det viktigste. Og dessuten er både Python og Bash Shell-skriftspråk, som betyr at begge er hovedsakelig utviklet for å håndtere systemet og filene.

Bash inni Python?

Ja, du har lest den riktig. Til nå har vi lest om hvordan vi kan introdusere Python-skript inne i Shell. Men vi kan også introdusere Shell Scripts i skriptet til python. Ta dette for eksempel: - Skriv inn 'apt-get update' i python-skallet? Du vil åpenbart få noen feil som ugyldig syntaks. Saken er at hvis du vil bruke baskodene som 'ls, cd, mv' eller noe annet i python, må du importere OS-modulen. Nå, gjør en ting, kopier følgende kode og lim den inn i Shell of python, og sjekk hvordan den fungerer: -

$ python >>> fra os import * >>> system ('sudo apt-get update')

Og nå fungerer det… ja. Dette er en annen måte å få python- og bash-skript til å jobbe sammen. Dessuten er det en annen pythonmodul som er spesielt bygd for å jobbe med bash. Denne modulen er kjent som pexpect. Pexpect er en pytonmodul som brukes til gyteprosesser for barn, kontrollere dem og returnere resultater i henhold til barneprosessens forespørsel. Pexpect-modulen har et ekstremt enkelt grensesnitt for å importere nødvendige moduler og underordnede prosesser inni den og utføre dem deretter. Man trenger bare at pipen skal installeres i systemet deres for å installere pexpect, og man kan installere modulen som følger: -

$ pip installere pexpect

Versjonen av Pexpect trenger pythonversjon større enn 3.3 eller spesifikt 2.7.

Det er faktisk mye mer å blande sammen python og bash, og ingenting fungerer like bedre som en blanding av manus av Python og Bash. Denne blandingen gjør skriptet raskt på grunn av Bash og inkluderer avanserte funksjoner på grunn av Python. Man kan lese om pexpect og dokumentasjonen på https://pexpect.readthedocs.org/online.

Anbefalte artikler

Her er noen artikler som vil hjelpe deg å få mer detaljert informasjon om Bash Scripting og Python, så bare gå gjennom lenken.

  1. Python vs JavaScript-verdifulle forskjeller
  2. Topp 25 fantastiske spørsmål om Python-intervju og svar
  3. Forskjeller mellom Python og JavaScript
  4. R-programmering vs Python
  5. PHP-filhåndtering