Shell-programmeren is leuk. Maar zo is Python. Mensen met de achtergrond van C, of ​​vooral mensen die Windows gebruiken, zijn het daar niet mee eens. Mensen hebben vaak de neiging om liever een grafische interface te gebruiken dan een opdrachtregel. Maar dat is zo helemaal verkeerd. Grafische gebruikersinterface is voor mensen die denken dat de software doet wat de beschrijving zegt dat het doet. Maar dat is niet altijd het geval. Vooral in het geval van shell-programmeervensters waarbij virussen en malware een ravage hebben aangericht ter grootte van een Tornado. Dus mensen die een opdrachtregelinterface gebruiken, zijn het er meestal over eens dat wat ze doen goed is, en ik ben het wel met hen eens dat ze gelijk hebben.

Vaak loopt u meestal vast en loopt de hele computer vast vanwege een eenvoudige grafische interface-gebaseerde software. Werken aan een opdrachtregelinterface is vaak eleganter, sneller en vooral weet u wat u uitvoert. Maar nogmaals, het gebruik van shells en het schrijven van programma's is niet iets dat iedereen zou willen doen.

Trouwens, het schrijven van programma's in C of Java zou eigenlijk veel slechter zijn dan het gebruik van een grafische gebruikersinterface-gebaseerde software in Windows. Ik vervloek C of Java hier niet, het is alleen dat ze niet geschikt zijn voor dagelijks gebruik. En dit is waar scripttalen zoals Shell-programmering en Python-talen uitblinken. Dus vandaag zijn we hier in oorlog, welke meer geschikt is voor zowel kleinere als grotere toepassingen. Of kunnen we ze allebei combineren en iets nieuws en beter van de twee maken. Laten we ze allebei eens nader bekijken en kijken waar het ons naartoe brengt.

Bash Shell Scripting

Shell Scripting is echt geweldig. U kunt de meeste van uw taken hier bijna in slechts één regel code uitvoeren. Neem bijvoorbeeld dit stukje code: -

$ touch file.txt | echo -e 'hallo \ n Nieuw \ n Wereld \ n hallo \ n Hallo' >> file.txt | cat file.txt | sorteren | uniq | wc -l

Dus, zoals je ziet, is hier veel shell-scripting aan de gang, maar wat gebeurt er precies? Eerst de '| 'staat bekend als de pijp. Het wordt gebruikt om de uitvoer van het ene bestand naar het andere over te dragen. De 'touch'-syntaxis wordt gebruikt om elk bestand te maken en de echo-syntaxis wordt gebruikt om elke instructie af te drukken. De dubbelzijdige pijlen '>>' worden gebruikt om de uitvoer in een bestand of programma in te voegen. 'cat' syntaxis wordt gebruikt om de inhoud van een bestand te lezen. Sorteren wordt gebruikt om alles in volgorde te sorteren en 'uniq' wordt gebruikt om duplicaten uit de sortering te verwijderen. De 'wc' wordt gebruikt voor het tellen van lijnen en -l is slechts een vlag om ze af te drukken. Dus al deze gekoppelde commando's doen het volgende.

  1. Eerst wordt een bestand gemaakt met het naambestand met de extensie txt om aan te geven dat het een tekstbestand is.
  2. Ten tweede wordt echo -e gebruikt om meerdere woorden in het bestand file.txt af te drukken en wordt 'slash n' of '\ n' gebruikt om een ​​nieuwe regel in te voeren of naar de volgende regel te gaan.
  3. Na het invoeren van strings in het bestand, wordt het bestand gelezen, in volgorde gesorteerd en overgebracht naar de syntaxis van uniq om bestaande duplicaten te verwijderen, hier in ons geval 'hallo'.
  4. Ten slotte drukken we het aantal regels af met 'wc -l' om het te tellen en op het terminalscherm af te drukken.

Dus hoewel het bovenstaande slechts één regel code is, kan het de neiging hebben om ingewikkeld te worden wanneer meer voorwaarden worden ingevoegd. Shell-scripts zijn dus goed, maar kunnen niet worden gebruikt om steeds nieuwe taken uit te voeren. Soms wilt u dat dingen eenvoudiger zijn, net zo eenvoudig als een grafische gebruikersinterface. Shell-scripts zijn eigenlijk heel goed voor het uitvoeren van batch-scripts en het uitvoeren van herhaalde taken, maar tegelijkertijd hebben ze enkele nadelen: -

  1. Shell-scripts worden vaak extreem ingewikkeld naarmate ze groter worden.
  2. Hergebruik van scripts is bijna geen. Wat ik hier bedoel is dat bash-scripts extreem moeilijk zijn om in C of andere Java-codes in te voegen.
  3. Geavanceerde functies zoals HTML-parsing zijn niet gemakkelijk beschikbaar voor bash.

Er is echter hier Python voor de redding en de meest geschikte vervanging voor hetzelfde. Maar is Bash Shell-scripting volledig vervangbaar? Laten we kijken.

Aanbevolen cursussen

  • Online certificeringstraining in J2EE uitgebreid
  • Professionele R-programmeertraining
  • Online certificeringstraining in Go-programmering
  • Training op Haskell-programma

Python Shell Scripting

Python wordt standaard geïnstalleerd op bijna alle Linux- en UNIX-systemen. Soms heeft de distributie een oudere versie, maar deze kan worden bijgewerkt met slechts een eenvoudige opdracht. Python Shell-programmering is veel gemakkelijker te begrijpen en schoner om te schrijven, zelfs voor beginners. Ook heeft Python standaard de stijl van Read Eval Print Loop die helpt bij het uitproberen van nieuwe codes in de interpreter. Maar alleen het gebruik van python kan een beetje moeilijk zijn zonder de hulp van bash shell scripting. Bovendien gebruikten we in ons vorige eenregelige programma de syntaxis 'uniq' om duplicaten te verwijderen, maar het liet ons niet zien wat de duplicaten waren. Dus laten we een python-programma schrijven om hetzelfde te doen: -

#! / usr / bin / env pythonimport sys # systeemmodules importeren om te werken met mapbestanden als __name__ == “__main __”: # Beginnend met een leeg woordenboek hier. Die wordt aangeduid als de volgorde # Alle sleutels in dit woordenboek verschijnen als een naam en de opgegeven waarden voor hen # zullen het aantal keren zijn dat die specifieke naam zal verschijnen. Order = () # sys.stdin is een object dat wordt gebruikt voor bestanden. Al die functies waarop wordt toegepast

# een bestandsobject kan ook worden gebruikt voor sys.stdin.

voor bestelling in sys.stdin.readlines ():

order = order.strip ()

bij bestelling in bestellingen:

orders (order) + = 1

anders:

orders (order) = 1

voor bestelling, tel in orders.iteritems ():

sys.stdout.write ("% d \ t% s \ n"% (aantal, volgorde))

Nu leest dit bestand eerst de invoer van het sys.stdin-object. Alle uitvoer wordt naar het sys.stdout-object geschreven. Nadat u dit script hebt gemaakt, ervan uitgaande dat u het als order.py hebt genoemd, kunt u gewoon het volgende shellscript in de terminal uitvoeren en vindt u het totale aantal van alle dubbele tekenreeksen.

$ cat file.txt | python order.py

Op dezelfde manier kunnen we dit ook oplossen door de syntaxis van de sortering te gebruiken: -

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

Python Shell versus Bash Shell Programmering Scripting

Nu hebben we gezien hoe we python- en shell-scripts kunnen combineren om een ​​reeks opdrachten te maken en ze samen uit te voeren. Laten we nu een stap verder gaan en kijken of Python Bash Shell volledig kan vervangen.

Over bash shell-programmering gesproken, qua prestaties verslaat bash de onzin van python. Maar als je het vergelijkt met gegevenstypen en andere geavanceerde dingen, is bash niet veel compatibel. De opstarttijd van een bash-shellscript is 2, 8 mili seconden, terwijl die van python 11, 1 mili seconden is. Eerlijk gezegd is bash een taal voor algemene doeleinden, net als Python, maar beide hebben hun eigen sterke en zwakke punten. Bash shell-programmering is de standaardterminal in de meeste Linux-distributies en zal dus altijd sneller zijn qua prestaties. Maar betekent dat dat het Python volledig kan vervangen? Nee. Wanneer het om grote programma's gaat, blijft Bash gecompliceerd, terwijl Python dat niet doet. Python kan ook worden gebruikt als een objectgeoriënteerde taal voor zover ik weet. Als je slechts een beginner bent, weet je misschien niet eens het verschil tussen de twee. Python is de meest elegante scripttaal, zelfs meer dan Ruby en Perl. Bash shell-programmering daarentegen is eigenlijk uitstekend om de uitvoer van het ene commando naar het andere te leiden.

Shell Scripting is eenvoudig en het is niet zo krachtig als python. Het houdt zich niet bezig met frameworks en het is moeilijk om aan de slag te gaan met webgerelateerde programma's met Shell Scripting. De echte kracht van shell scripting ligt in de Stream Text-editor of sed, de Awk-programma's en vergelijkbare apps.

Bestandsafhandeling en ontwikkeling van webapplicaties

Bash Shell Scripting werkt feilloos en snel bij het omgaan met bestanden. Met bestanden behandelen, bedoel ik kopiëren, klonen van schijven, back-up apps schrijven voor netwerken, ftp-servers, bestandsinvoer opslaan en ze later openen en deze uitvoer later naar iets anders overbrengen met behulp van een pipe. Python daarentegen is nuttiger voor het verwerken van brokken gegevens, zoals het lezen van gegevens uit een bestand en het verwerken van gegevens. Als ik specifieker ben, is bash zelfs geen programmeertaal. Het is meer een eenvoudige shell die gericht was op het omgaan met systeembestanden met behulp van de opdrachtregel om het proces sneller en sneller te laten verlopen.

Dus als je bash shell-programmering goed kent, weet je ook dat variabelen en scopes in bash extreem beperkt zijn. Python daarentegen is meer een shell-scripttaal dan programmeertaal. Als we Bash een programmeertaal noemen, lijkt het er meer op dat Python een objectgeoriënteerde shell-programmeertaal is. Je kunt python object-georiënteerd aanpakken, maar het zal nooit puur object-georiënteerd zijn zoals C of Java. Evenzo is Bash echter een scripttaal; het wordt beter gebruikt als iets dat nodig is om snel met bestanden om te gaan in plaats van er grote programma's in te schrijven. Hoewel Python een shell-scripttaal is, handelt het ook binnen zijn eigen shell. Als u bijvoorbeeld alle bestanden op het bureaublad naar een andere willekeurige map via Bash-shell verplaatst, gaat dit ongeveer als volgt:

$ cd Desktop $ mv * randomDirectory

Maar aan de andere kant is hetzelfde doen in python een beetje ingewikkelder. Het gaat ongeveer zo: -

import os, glob voor fname in glob.glob ('*'): os.rename (fname, 'randomdirectory')

Op zijn best kan men het op deze manier echter het meest compact maken: -

import os, glob (os.rename (fname, 'randomdirectory') voor fname in glob.glob ('*'))

Bij het leren van een taal zullen mensen je vaak vertellen hoe je de basis en al die dingen schoon kunt krijgen, maar ze zullen je niet vertellen hoe je eerst met het systeem zelf omgaat, wat het belangrijkste is. En trouwens, Python en Bash zijn beide Shell-scripttaal, wat betekent dat ze beide hoofdzakelijk zijn ontwikkeld om met het systeem en de bestanden om te gaan.

Bash in Python?

Ja, je leest het goed. Tot nu toe hebben we gelezen hoe we Python-scripts in Shell kunnen introduceren. Maar we kunnen ook Shell Scripts introduceren in de scripts van python. Neem bijvoorbeeld: - Typ 'apt-get update' in de python-shell? U krijgt uiteraard een foutmelding zoals ongeldige syntaxis. Dus het ding is, als je de bash-codes zoals 'ls, cd, mv' of iets anders in python wilt gebruiken, moet je de OS-module importeren. Doe nu één ding, kopieer de volgende code en plak deze in de Shell van python en controleer hoe het werkt: -

$ python >>> van os import * >>> systeem ('sudo apt-get update')

En nu werkt het … ja. Dit is een andere manier om python- en bash-scripts samen te laten werken. Bovendien is er nog een python-module die specifiek is gebouwd om met bash te werken. Deze module staat bekend als pexpect. Pexpect is een python-module die wordt gebruikt voor het uitzetten van onderliggende processen, het besturen ervan en het retourneren van resultaten volgens het verzoek van het onderliggende proces. De pexpect-module heeft een uiterst eenvoudige interface om vereiste modules en onderliggende processen erin te importeren en dienovereenkomstig uit te voeren. Je hoeft alleen de pip in hun systeem te installeren om pexpect te installeren en je kunt de module als volgt installeren: -

$ pip install pexpect

De versie van Pexpect heeft een python-versie nodig die groter is dan 3.3 of specifiek 2.7.

Python en bash mengen is eigenlijk veel meer en niets werkt zo beter als een mix van script van Python en Bash. Deze mix maakt het script snel vanwege Bash en inclusief geavanceerde functies vanwege Python. Men kan over pexpect en zijn documentatie lezen op https://pexpect.readthedocs.org/online.

Aanbevolen artikelen

Hier zijn enkele artikelen die je zullen helpen om meer details over de Bash Scripting en Python te krijgen, dus ga gewoon via de link.

  1. Python versus JavaScript-waardevolle verschillen
  2. Top 25 geweldige vragen en antwoorden over het interview met Python
  3. Python versus JavaScript-verschillen
  4. R Programmering versus Python
  5. PHP Bestandsafhandeling