Shell-programmering er sjovt. Men det er Python også. Mennesker med baggrunden i C, eller vigtigst af alt folk, der bruger windows, er ikke enige. Folk har ofte en tendens til at foretrække at bruge en grafisk baseret grænseflade end kommandolinjetrin. Men det er så totalt forkert. Grafisk brugergrænseflade er til folk, der tror, ​​at softwaren gør, hvad dens beskrivelse siger, at den gør. Men det er ikke altid tilfældet. Især i tilfælde af shell-programmeringsvinduer, hvor vira og malwares har skabt en ødelæggelse, der er på størrelse med en Tornado. Så folk, der bruger en kommandolinjegrænseflade, er normalt enige om, at det, de laver, er rigtigt, og jeg er enig med dem i, at de har ret.

Mange gange vil du normalt sætte dig fast, og hele computeren hænger på grund af en simpel grafisk interface baseret software. Arbejde med en kommandolinjegrænseflade er ofte mere elegant, hurtig og vigtigst af alt, at du ved, hvad du udfører. Men igen er det at bruge skaller og skrive programmer ikke noget, som alle foretrækker at gøre.

Desuden ville skrivning af programmer i C eller Java faktisk være meget mere værre end at bruge en grafisk brugergrænsefladebaseret software i windows. Jeg forbander ikke C eller Java her, det er bare at de ikke er egnede til daglig brug. Og det er her scripting-sprog som Shell-programmering og Python-sprog udmærker sig. Så i dag er vi i krig her, hvilken er mere velegnet til mindre såvel som større applikationer. Eller er det, at vi faktisk kan kombinere dem begge sammen og gøre noget nyt og bedre ud af de to. Lad os se nærmere på dem begge og se, hvor det tager os.

Bash Shell-scripting

Shell-scripting er virkelig fantastisk. Du kan næsten udføre de fleste af dine job her på kun en kodelinje. For eksempel at sige, tag dette stykke kode: -

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

Så som du kan se, foregår der en masse shell-scripting her, men hvad sker der nøjagtigt? Først '| 'er kendt som røret. Det bruges til at overføre output fra en fil til en anden. Syntaks 'touch' bruges til at oprette en hvilken som helst fil, og ekkosyntaxen bruges til at udskrive en hvilken som helst sætning. De dobbelt højre-sidede pile '>>' bruges til at indsætte output til enhver fil eller program. 'kat' syntaks bruges til at læse indholdet af en fil. Sortering bruges til at sortere alt i rækkefølge, og 'uniq' bruges til at fjerne duplikater fra sorteringen. 'Wc' bruges til at tælle linjer, og -l er bare et flag til at udskrive dem. Så alle disse sammenkoblede kommandoer gør følgende.

  1. Først oprettes en fil med navnefilen med udvidelse txt for at informere om, at det er en tekstfil.
  2. For det andet bruges echo -e til at udskrive flere ord inde i filen fil.txt, og 'skråstreg n' eller '\ n' bruges til at indtaste en ny linje eller gå til næste linje.
  3. Efter indtastning af strenge i filen læses filen, sorteres i rækkefølge og overføres til uniq-syntaks for at fjerne eventuelle eksisterende duplikater, her som i vores tilfælde er 'hej'.
  4. Endelig udskriver vi antallet af linjer ved hjælp af 'wc -l' til at tælle og udskrive det på terminalskærmen.

Så selvom ovenstående kun er en kodelinie, kan det have en tendens til at blive kompliceret, når flere betingelser indsættes. Således er shell-scripts gode, men de kan ikke bruges til at udføre nye job hele tiden. Nogle gange vil du have, at tingene skal være enklere, så enkle som en grafisk brugergrænseflade. Shell-scripts er faktisk meget gode til at køre batch-scripts og udføre gentagne job, men på samme tid kommer de med nogle ulemper: -

  1. Shell-scripts har en tendens til at blive ekstremt komplicerede, da de bliver store.
  2. Genbrug af manuskripter er næsten ingen. Det, jeg mener her, er, at bash-scripts er ekstremt svære at indsætte i C eller andre Java-koder.
  3. Avancerede funktioner såsom HTML-parsing er ikke let tilgængelige til bash.

Der er dog Python her til redning, og den bedst egnede erstatning for den samme. Men er Bash Shell-scripting fuldstændigt udskifteligt? Lad os se.

Anbefalede kurser

  • Online certificeringstræning i J2EE Comprehensive
  • Professionel R-programmeringstræning
  • Online certificeringstræning i Go-programmering
  • Træning på Haskell-programmet

Python Shell-scripting

Python er som standard installeret på næsten alle Linux- og UNIX-systemer. Nogle gange kan distributionen have en ældre version, men den kan opdateres ved blot en enkel kommando. Python Shell-programmering er meget lettere at forstå og renere at skrive, selv for begyndere. Som standard har Python typografien Read Eval Print Loop, som hjælper med at prøve nye koder i tolken. Men bare det at bruge python kan være lidt hårdt uden hjælp af bash shell scripting. Desuden brugte vi i vores forrige enkeltlinjeprogram 'uniq' syntaks til at fjerne duplikater, men det viste os ikke, hvad duplikaterne var. Så lad os skrive et python-program for at gøre det samme: -

#! / usr / bin / env pythonimport sys # importerer systemmoduler til at arbejde med biblioteksfiler hvis __navn__ == “__main __”: # Start med en tom ordbog her. Som kaldes ordren # Alle taster i denne ordbog vises som et navn, og de angivne værdier for dem # vil være den mængde gange, det specifikke navn vises.order = () # sys.stdin er et objekt, der bruges til filer. Alle de funktioner, der anvendes til

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

for ordre i sys.stdin.readlines ():

order = order.strip ()

hvis ordre i ordrer:

ordrer (ordre) + = 1

andet:

ordrer (ordre) = 1

for ordre, tæl i ordrer.iteritems ():

sys.stdout.write (“% d \ t% s \ n”% (tæller, rækkefølge))

Nu læser denne fil først input fra sys.stdin-objektet. Alt output skrives til sys.stdout-objektet. Når du har oprettet dette script, hvis du antager, at du har navngivet det som order.py, kan du bare udføre følgende shell-script i terminalen, og du finder det samlede antal af alle duplikatstrenge.

$ cat file.txt | python order.py

Tilsvarende kan vi også sortere dette ved hjælp af syntaks til sortering: -

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

Python Shell vs Bash Shell-programmering af scripting

Nu har vi set, hvordan vi kan kombinere python- og shell-scripts for at oprette en kæde af kommandoer og udføre dem sammen. Lad os tage et skridt videre og se, om Python fuldstændigt kan erstatte Bash Shell.

Apropos bash shell-programmering, hvad angår ydeevne, slår bash fuldstændigt crap ud af python. Men hvis du sammenligner det med datatyper og andre avancerede ting, har bash ikke meget kompatibilitet. Starttidspunktet for et bash shell-script er 2, 8 mili sekunder, mens det for python er 11, 1 mili sekunder. For at være mere ærlig er bash et generelt sprog ligesom Python, men begge har deres egne styrker og svagheder. Bash shell-programmering er standardterminalen i de fleste Linux-distributioner, og det vil derfor altid være hurtigere med hensyn til ydeevne. Men betyder det, at det helt kan erstatte Python? Nix. Når man beskæftiger sig med store programmer, vil Bash fortsætte med at blive kompliceret, mens Python ikke gør det. Python kan også bruges som et objektorienteret sprog så vidt jeg ved. Hvis du bare er nybegynder, ved du måske ikke engang forskellen mellem de to. Python er det mest elegante skriftsprog, endda mere end Ruby og Perl. Bash shell-programmering er på den anden side faktisk meget fremragende til at føre output fra en kommando til en anden.

Shell-scripting er enkel, og den er ikke så kraftig som python. Det beskæftiger sig ikke med rammer og det er svært at komme i gang med webrelaterede programmer ved hjælp af Shell Scripting. Den virkelige magt med shell-scripting ligger i Stream Text editor eller sed, Awk-programmer og lignende apps.

Filhåndtering og webapplikationsudvikling

Bash Shell-scripting fungerer fejlfrit og hurtigt, når du håndterer filer. Ved at håndtere filer mener jeg kopiering, kloning af diske, skrivning af apps til netværk, ftp-servere, lagring af filindgange og adgang til dem senere og overførsel af disse output senere til noget andet ved hjælp af pipe. Python er på den anden side mere nyttig til at håndtere bunker af data, såsom at læse data fra en fil og behandle data. Hvis jeg er mere specifik, er bash ikke engang et programmeringssprog. Det er mere en simpel skal, der var målrettet mod at håndtere systemfiler ved hjælp af kommandolinjen for at processen skal være hurtigere og hurtigere.

Så hvis du kender bash shell-programmering korrekt, ved du også, at variabler og scopes i bash ekstremt begrænset. Python er på den anden side mere et shell-scriptingsprog end programmeringssprog. Hvis vi betegner Bash som et programmeringssprog, er det mere som at fortælle Python et objektorienteret shell-programmeringssprog. Man kan håndtere python på en objektorienteret måde, men det bliver aldrig rent objektorienteret som C eller Java. Tilsvarende er Bash dog et scriptingsprog; det er mere af bedre brugt som noget, der kræves for at håndtere filer hurtigt snarere end at skrive store programmer i det. Selvom Python også er et script-sprog for shell, handler det faktisk inden for sit eget shell. For eksempel ville det at flytte al fil, der findes på skrivebordet til et andet tilfældigt bibliotek via Bash shell, noget lignende:

$ cd Desktop $ mv * randomDirectory

Men på den anden side er det lidt mere kompliceret at gøre det samme i python. Det går sådan:

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

Imidlertid kan man i bedste fald gøre det til den mest kompakte på denne måde: -

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

Når man lærer et hvilket som helst sprog, vil folk ofte fortælle dig, hvordan man får det grundlæggende rene og alle disse ting, men de vil ikke fortælle dig, hvordan man først skal håndtere det system, der er det vigtigste. Og desuden er både Python og Bash Shell-scriptingsprog, hvilket betyder, at begge er hovedsageligt udviklet til at håndtere systemet og dets filer.

Bash inde i Python?

Ja, du læser det rigtigt. Indtil nu har vi læst om, hvordan vi kan introducere Python-scripts inde i Shell. Men vi kan også introducere Shell-scripts inden for python-scripts. Tag dette for eksempel: - Skriv 'apt-get update' i python-shell? Du får selvfølgelig nogle fejl som ugyldig syntaks. Så tinget er, hvis du vil bruge bash-koder som 'ls, cd, mv' eller noget andet i python, bliver du nødt til at importere OS-modulet. Gør nu en ting, kopier følgende kode og indsæt den i Shell of python, og kontroller, hvordan den fungerer: -

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

Og nu fungerer det… yay. Dette er en anden måde at få python- og bash-scripts til at arbejde sammen. Derudover er der et andet pythonmodul, der er specifikt bygget til at arbejde med bash. Dette modul er kendt som pexpect. Pexpect er et python-modul, der bruges til at gyde børneprocesser, kontrollere dem og returnere resultater i henhold til barneprocessens anmodning. Pexpect-modulet har en ekstremt nem grænseflade til at importere nødvendige moduler og underordnede processer inde i det og udføre dem i overensstemmelse hermed. Man har bare brug for at pip skal installeres i deres system for at installere pexpect, og man kan installere modulet som følger: -

$ pip installere pexpect

Den version af Pexpect har brug for python version større end 3, 3 eller specifikt 2, 7.

Der er faktisk meget mere at blande python og bash, og intet fungerer så bedre som en blanding af script af Python og Bash. Denne blanding gør scriptet hurtigt på grund af Bash og inkluderer avancerede funktioner på grund af Python. Man kan læse om pexpect og dens dokumentation på https://pexpect.readthedocs.org/online.

Anbefalede artikler

Her er nogle artikler, der hjælper dig med at få flere detaljer om Bash-scripting og Python, så bare gå gennem linket.

  1. Python vs JavaScript-værdifulde forskelle
  2. Top 25 fantastiske Python-interviewspørgsmål og svar
  3. Forskelle mellem Python og JavaScript
  4. R-programmering vs Python
  5. PHP filhåndtering

Kategori: