Shell-programmering är kul. Men så är Python. Personer med bakgrund av C, eller viktigast av allt människor som använder fönster, håller inte med. Folk tenderar ofta att föredra att använda ett grafiskt baserat gränssnitt än kommandorader. Men det är så helt fel. Grafiskt användargränssnitt är för människor som tror att programvaran gör som beskrivningen säger att den gör. Men det är inte alltid fallet. Speciellt när det gäller skalprogrammeringsfönster där virus och malwares har skapat ett förödelse som är storleken på en Tornado. Så personer som använder ett kommandoradsgränssnitt brukar hålla med om att det de gör är rätt, och jag håller med dem om att de har rätt.

Många gånger fastnar man vanligtvis och hela datorn hänger på grund av en enkel grafisk gränssnittsbaserad programvara. Att arbeta med ett kommandoradsgränssnitt är ofta mer elegant, snabbt och viktigast av allt vet du vad du kör. Men igen, att använda skal och skriva program är inte något som alla föredrar att göra.

Dessutom skulle det att skriva program i C eller Java faktiskt vara mycket värre än att använda ett grafiskt användargränssnitt baserat program i Windows. Jag förbannar inte C eller Java här, det är bara att de inte är lämpliga för vardagligt bruk. Och det är här som skriptspråk som Shell-programmering och Python-språk utmärker sig. Så idag är vi i krig här vilken är mer lämpad för mindre såväl som större applikationer. Eller är det så att vi faktiskt kan kombinera dem båda tillsammans och göra något nytt och bättre av de två. Låt oss ta en djupare titt på båda och se var det tar oss.

Bash Shell-skript

Shell Scripting är riktigt fantastiskt. Du kan nästan göra de flesta av dina jobb här på bara en kodrad. Ta till exempel den här kodkoden: -

$ touch file.txt | echo -e 'hej \ n Ny \ n Värld \ n hej \ n Hej' >> file.txt | katt file.txt | sortera | uniq | wc -l

Så, som ni ser, pågår en hel del shell-skript här, men vad händer exakt? Först '| "är känt som röret. Det används för att överföra utgången från en fil till en annan. Syntaxen "touch" används för att skapa vilken fil som helst och ekosyntaxen används för att skriva ut något uttalande. De dubbelsidiga pilarna ">>" används för att infoga utdata i vilken fil eller program som helst. "katt" -syntax används för att läsa innehållet i en fil. Sortering används för att sortera allt i ordning och 'uniq' används för att ta bort dubbletter från sorteringen. 'Wc' används för att räkna linjer och -l är bara en flagga för att skriva ut dem. Så alla dessa kedjade kommandon gör följande.

  1. Först skapas en fil med namnfilen med anknytningstxt för att informera om att det är en textfil.
  2. För det andra används echo -e för att skriva ut flera ord inuti filen fil.txt och 'snedstreck n' eller '\ n' används för att ange en ny linje eller gå till nästa rad.
  3. Efter att ha skrivit strängar i filen läses filen, sorteras i ordning och överförs till uniq-syntaxen för att ta bort eventuella befintliga duplikat, här som i vårt fall är 'hej'.
  4. Slutligen skriver vi ut antalet rader med 'wc -l' för att räkna och skriva ut det på terminalskärmen.

Så även om ovanstående bara är en kodrad kan det tendera att bli komplicerat när fler villkor sätts in. Således är skalskript bra, men de kan inte användas för att göra nya jobb hela tiden. Ibland vill du att saker ska vara enklare, så enkla som ett grafiskt användargränssnitt. Shell-skript är faktiskt mycket bra för att köra batch-skript och utföra upprepade jobb, men samtidigt har de vissa nackdelar: -

  1. Skalskript tenderar att bli extremt komplicerade eftersom de blir stora.
  2. Återanvändning av manus är nästan ingen. Vad jag menar här är att bash-skript är extremt svåra att infoga i C eller andra Java-koder.
  3. Avancerade funktioner som HTML-parsing är inte lätt tillgängliga för bash.

Men det finns Python här för att rädda, och den mest lämpliga ersättaren för samma. Men är Bash Shell-skript helt utbytbart? Låt oss ta en titt.

Rekommenderade kurser

  • Onlinecertifieringsträning i J2EE Comprehensive
  • Professionell R-programmeringsträning
  • Online-certifieringsträning i Go-programmering
  • Träning i Haskell-programmet

Python Shell-skript

Python installeras som standard på nästan alla Linux- och UNIX-system. Ibland kan distributionen ha en äldre version, men den kan uppdateras med bara ett enkelt kommando. Python Shell-programmering är mycket lättare att förstå och renare att skriva även för nybörjare. Som standard har Python stilen Read Eval Print Loop som hjälper till att testa nya koder i tolkaren. Men bara att använda python kan vara lite tufft utan hjälp av bash shell-skript. I vårt tidigare program med en rad använde vi dessutom "uniq" -syntaxen för att ta bort dubbletter, men det visade inte vad duplikaten var. Så låter vi skriva ett pythonprogram för att göra detsamma: -

#! / usr / bin / env pythonimport sys # importera systemmoduler för att arbeta med katalogfiler om __name__ == “__main __”: # Börjar med en tom ordbok här. Vilket kallas ordningen # Alla tangenter i den här ordboken visas som ett namn och de angivna värdena för dem # kommer att vara hur många gånger det specifika namnet kommer att visas.order = () # sys.stdin är ett objekt som används för filer. Alla de funktioner som används för

# ett filobjekt kan också användas för sys.stdin.

för beställning i sys.stdin.readlines ():

order = order.strip ()

vid beställning:

order (order) + = 1

annan:

order (order) = 1

för beställning, räkna i order.iteritems ():

sys.stdout.write ("% d \ t% s \ n"% (räkning, ordning))

Nu läser den här filen först inmatningen från sys.stdin-objektet. All utgång skrivs till sys.stdout-objektet. När du har skapat detta skript, antagit att du har namngivit det som order.py, kan du bara köra följande skalskript i terminalen och du hittar det totala antalet av alla duplicerade strängar.

$ cat file.txt | python order.py

På liknande sätt kan vi också sortera det här genom att använda syntaks:

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

Python Shell vs Bash Shell programmering scripting

Nu har vi sett hur vi kan kombinera python- och skalskript för att skapa en kedja med kommandon och utföra dem tillsammans. Låt oss nu ta ett steg längre och se om Python helt kan ersätta Bash Shell.

På tal om bash shell-programmering, vad beträffar prestanda, slår bash fullständigt skiten ur python. Men om du jämför det med datatyper och andra avancerade grejer, har bash inte mycket kompatibilitet. Starttiden för ett bash shell-skript är 2, 8 mili sekunder medan den för python är 11, 1 mili sekunder. För att vara öppenare är bash ett allmänt språk precis som Python, men båda har sina egna styrkor och svagheter. Bash shell-programmering är standardterminalen i de flesta Linux-distributioner och därför kommer den alltid att vara snabbare när det gäller prestanda. Men betyder det att det helt kan ersätta Python? Nej. När han arbetar med stora program kommer Bash att fortsätta bli komplicerat medan Python inte gör det. Python kan också användas som ett objektorienterat språk så vitt jag vet. Om du bara är nybörjare kanske du inte ens vet skillnaden mellan de två. Python är det mest eleganta manusspråket, till och med mer än Ruby och Perl. Bash shell-programmering å andra sidan är faktiskt väldigt utmärkt för att leda ut resultatet från ett kommando till ett annat.

Shell Scripting är enkelt och det är inte lika kraftfullt som python. Det handlar inte om ramar och det är svårt att komma igång med webbrelaterade program med Shell Scripting. Den verkliga kraften med shell-skript ligger i Stream Text Editor eller sed, Awk-programmen och liknande appar.

Filhantering och webbapplikationsutveckling

Bash Shell-skript fungerar felfritt och snabbt när du hanterar filer. Genom att hantera filer menar jag kopiering, kloning av skivor, skrivning av appar för nätverk, ftp-servrar, lagring av filingångar och åtkomst till dem senare och överföring av dessa utgångar senare till något annat med hjälp av pipe. Python å andra sidan är mer användbar för att hantera bitar av data som att läsa data från en fil och bearbeta data. Om jag är mer specifik är bash inte ens ett programmeringsspråk. Det är mer ett enkelt skal som var inriktat på att hantera systemfiler med hjälp av kommandoraden för att processen ska bli snabbare och snabbare.

Således, om du känner till bash shell-programmering korrekt, vet du också att variabler och omfattningar i bash är extremt begränsade. Python å andra sidan är mer ett skalskriptspråk än programmeringsspråk. Om vi ​​betecknar Bash som ett programmeringsspråk, är det mer som att berätta för Python är ett objektorienterat skalprogrammeringsspråk. Man kan hantera python på ett objektorienterat sätt, men det kommer aldrig att vara rent objektorienterat som C eller Java. På samma sätt är Bash dock ett skriptspråk; det är mer av bättre används som något som krävs för att hantera filer snabbt snarare än att skriva stora program i det. Även om Python är ett shell-skriptspråk, handlar det faktiskt inom sitt eget skal. Att till exempel flytta alla filer som finns på skrivbordet till någon annan slumpmässig katalog via Bash-skalet skulle gå så här:

$ cd Desktop $ mv * randomDirectory

Men å andra sidan är det lite mer komplicerat att göra samma sak i python. Det går något så här: -

import os, glob för fname i glob.glob ('*'): os.rename (fname, 'randomdirectory')

Men i bästa fall kan man göra det mest kompakt på detta sätt: -

import os, glob (os.rename (fname, 'randomdirectory') för fname i glob.glob ('*'))

När man lär sig något språk kommer folk ofta att berätta hur man gör grunderna rena och alla dessa grejer, men de kommer inte att berätta hur man först ska hantera själva systemet som är det viktigaste. Och dessutom är Python och Bash båda Shell-skriptspråk vilket betyder att båda utvecklas främst för att hantera systemet och dess filer.

Bash inuti Python?

Ja, du läste rätt. Hittills har vi läst om hur vi kan introducera Python-skript inuti Shell. Men vi kan också introducera Shell-skript inom pythons skript. Ta detta till exempel: - Skriv in 'apt-get update' i python-skalet? Du får uppenbarligen något fel som ogiltig syntax. Så, saken är att om du vill använda baskoder som 'ls, cd, mv' eller något annat i python, måste du importera OS-modulen. Gör nu en sak, kopiera följande kod och klistra in den i Shell of python och kolla hur det fungerar: -

$ python >>> från os import * >>> system ('sudo apt-get update')

Och nu fungerar det … ja. Detta är ett annat sätt att få python- och bash-skript att arbeta tillsammans. Dessutom finns det en annan pythonmodul som är speciellt byggd för att fungera med bash. Den här modulen kallas pexpect. Pexpect är en pythonmodul som används för att leka barnprocesser, kontrollera dem och returnera resultat enligt barnprocessens begäran. Pexpect-modulen har ett extremt enkelt gränssnitt för att importera nödvändiga moduler och underordnade processer i den och köra dem i enlighet därmed. Man behöver bara att pip ska installeras i sitt system för att installera pexpect och man kan installera modulen enligt följande: -

$ pip installera pexpect

Versionen av Pexpect behöver pythonversion större än 3, 3 eller specifikt 2, 7.

Det finns faktiskt mycket mer att blanda upp python och bash och ingenting fungerar lika bättre som en blandning av manus av Python och Bash. Denna blandning gör skriptet snabbt på grund av Bash och inkluderar avancerade funktioner på grund av Python. Man kan läsa om pexpect och dess dokumentation på https://pexpect.readthedocs.org/online.

Rekommenderade artiklar

Här är några artiklar som hjälper dig att få mer information om Bash Scripting och Python så bara gå igenom länken.

  1. Python vs JavaScript-värdefulla skillnader
  2. Topp 25 fantastiska Pythonintervjufrågor och svar
  3. Skillnader mellan Python och JavaScript
  4. R-programmering mot Python
  5. PHP-filhantering

Kategori: