Programovanie prostredia je zábavné. Ale aj Python. Ľudia s pozadím C alebo najdôležitejšie ľudia, ktorí používajú okná, nesúhlasia. Ľudia často preferujú použitie grafického rozhrania pred príkazovým riadkom. Ale to je úplne zlé. Grafické užívateľské rozhranie je pre ľudí, ktorí si myslia, že softvér robí to, čo jeho popis hovorí. Nie je to však vždy tak. Najmä v prípade okien programovania shellu, kde vírusy a škodlivé programy spôsobili zmätok, ktorý má veľkosť Tornáda. Ľudia používajúci rozhranie príkazového riadka by preto zvyčajne súhlasili, že to, čo robia, je správne, a ja s nimi súhlasím, že majú pravdu.

Mnohokrát by ste sa zvyčajne zasekli a celý počítač visí v dôsledku jednoduchého softvéru založeného na grafickom rozhraní. Práca na rozhraní príkazového riadku je často elegantnejšia, rýchlejšia a čo je najdôležitejšie, viete, čo vykonávate. Ale opäť, použitie škrupín a písanie programov nie je niečo, čo by každý uprednostnil.

Okrem toho by písanie programov v jazyku C alebo Java bolo v skutočnosti oveľa horšie ako používanie softvéru založeného na grafickom používateľskom rozhraní v systéme Windows. Nebudem nadávať C alebo Java, len preto, že nie sú vhodné na každodenné použitie. A to je miesto, kde vynikajú skriptovacie jazyky ako programovanie Shell a Python. Dnes sme tu teda vo vojne, ktorá je vhodnejšia pre menšie i väčšie aplikácie. Alebo je to tak, že ich dokážeme spojiť dokopy a urobiť z nich niečo nové a lepšie. Pozrime sa hlbšie do oboch a uvidíme, kam nás to zavedie.

Bash Shell skriptovanie

Shell Scripting je naozaj úžasné. Väčšinu svojich pracovných miest tu môžete urobiť takmer v jednom riadku kódu. Napríklad povedzte tento kód: -

$ touch file.txt | echo -e 'ahoj \ n Nový \ n svet \ n ahoj \ n Dobrý deň' >> file.txt | cat file.txt | radiť uniq | wc -l

Ako vidíte, tu sa deje veľa skriptov shellu, ale čo sa presne deje? Najprv „ 'sa nazýva potrubie. Používa sa na prenos výstupu jedného súboru do druhého. Syntax dotyku sa používa na vytvorenie ľubovoľného súboru a syntax echa sa používa na tlač ľubovoľného príkazu. Obojstranné šípky „>>“ na pravej strane sa používajú na vloženie výstupu do ľubovoľného súboru alebo programu. Syntax „cat“ sa používa na čítanie obsahu súboru. Zoradenie sa používa na usporiadanie všetkého v poradí a „uniq“ sa používa na odstránenie duplikátov z triedenia. 'Wc' sa používa na počítanie riadkov a -l je iba príznak na ich vytlačenie. Takže všetky tieto pripútané príkazy robia nasledujúce.

  1. Najprv sa vytvorí súbor s názvom súboru s príponou txt, ktorý informuje, že ide o textový súbor.
  2. Po druhé, echo -e sa používa na tlač viacerých slov vo vnútri súboru file.txt a 'lomítko n' alebo '\ n' sa používa na zadanie nového riadku alebo prechod na ďalší riadok.
  3. Po zadaní reťazcov do súboru sa súbor načíta, usporiada v poradí a prenesie sa do syntaxe uniq, aby sa odstránili všetky duplikáty, tu v našom prípade „ahoj“.
  4. Nakoniec vytlačíme počet riadkov pomocou 'wc -l', aby sme ich spočítali a vytlačili na obrazovku terminálu.

Takže hoci je vyššie uvedený text iba jedným riadkom kódu, pri vložení viacerých podmienok môže mať sklon sa skomplikovať. Skripty shellu sú teda dobré, ale nemôžu sa používať na vykonávanie nových úloh. Niekedy chcete, aby boli veci jednoduchšie, rovnako jednoduché ako grafické používateľské rozhranie. Skripty Shell sú vlastne veľmi dobré na spustenie dávkových skriptov a vykonávanie opakovaných úloh, ale zároveň prichádzajú s niektorými nevýhodami: -

  1. Shell skripty majú tendenciu byť extrémne komplikované, keď sa zväčšujú.
  2. Opätovné použitie skriptov nie je takmer žiadne. Čo mám na mysli tu je to, že bash skripty sa dajú veľmi ťažko vložiť do C alebo iných Java kódov.
  3. Pokročilé funkcie, ako je analýza HTML, nie sú pre bash ľahko dostupné.

Na záchranu je tu však Python a najvhodnejšia náhrada za to. Je však skriptovanie Bash Shell úplne nahraditeľné? Pozrime sa.

Odporúčané kurzy

  • Online certifikačné školenie v komplexnom J2EE
  • Odborné školenie v oblasti programovania R
  • Online certifikačné školenie v programovaní Go
  • Školenie o programe Haskell

Skriptovanie v jazyku Python

Python je predvolene nainštalovaný na takmer všetkých systémoch Linux a UNIX. Distribúcia môže mať staršiu verziu, ale dá sa aktualizovať jednoduchým príkazom. Programovanie Python Shell je oveľa ľahšie pochopiteľné a čistejšie písať aj pre začiatočníkov. V predvolenom nastavení má Python štýl Read Eval Print Loop, ktorý pomáha pri vyskúšaní nových kódov v tlmočníkovi. Ale iba použitie pythonu môže byť trochu ťažké bez pomoci skriptovania v bash shell. Okrem toho sme v predchádzajúcom jednom riadkovom programe použili syntax 'uniq' na odstránenie duplikátov, ale neukazovali nám, aké duplikáty boli. Umožňuje napísať program python, ktorý bude robiť to isté: -

#! / usr / bin / env pythonimport sys # import systémových modulov na prácu s adresármi filesif __name__ == “__main __”: # Počínajúc prázdnym slovníkom. Ktorý sa nazýva poradie # Všetky kľúče v tomto slovníku sa zobrazujú ako názov a zadané hodnoty pre ne budú predstavovať počet zobrazení konkrétneho mena.order = () # sys.stdin je objekt používaný pre súbory. Všetky tie funkcie, na ktoré sa vzťahujú

# objekt súboru možno použiť aj pre sys.stdin.

pre objednávku na sys.stdin.readlines ():

order = order.strip ()

ak objednávka v objednávke:

objednávky (objednávka) + = 1

else:

objednávky (objednávka) = 1

pri objednávke počítať v objednávkach.iteritems ():

sys.stdout.write (“% d \ t% s \ n”% (počet, objednávka))

Teraz tento súbor najskôr načíta vstup z objektu sys.stdin. Celý výstup sa zapíše do objektu sys.stdout. Po vytvorení tohto skriptu, za predpokladu, že ste ho pomenovali ako order.py, stačí v termináli spustiť nasledujúci skript shellu a nájdete celkový počet všetkých duplicitných reťazcov.

$ cat file.txt | python order.py

Podobne to môžeme vyriešiť aj pomocou syntaxe zoradenia: -

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

Programovacie skriptovanie Python Shell vs Bash Shell

Teraz sme videli, ako môžeme kombinovať skripty python a shell, aby sme vytvorili reťaz príkazov a spoločne ich vykonávali. Poďme ešte o krok ďalej a uvidíme, či Python dokáže úplne nahradiť Bash Shell.

Keď už hovoríme o programovaní bash shell, čo sa týka výkonu, bash úplne zbije kecy z pythonu. Ale ak ho porovnáte s dátovými typmi a ďalšími pokročilými vecami, bash nemá veľkú kompatibilitu. Čas spustenia skriptu pre bash shell je 2, 8 milióna sekúnd, zatiaľ čo čas Pythonu je 11, 1 milióna sekúnd. Aby som bol úprimnejší, bash je jazyk na všeobecné použitie rovnako ako Python, ale oba majú svoje silné a slabé stránky. Programovanie shellu Bash je predvolený terminál vo väčšine distribúcií Linuxu, a preto bude vždy rýchlejší z hľadiska výkonu. Znamená to však, že môže úplne nahradiť Python? Nie. Pri práci s veľkými programami bude Bash stále komplikovaný, zatiaľ čo Python nie. Pokiaľ je mi známe, Python sa dá použiť aj ako objektovo orientovaný jazyk. Ak ste len začiatočník, možno ani neviete rozdiel medzi nimi. Python je najelegantnejší skriptovací jazyk, dokonca viac ako Ruby a Perl. Programovanie shellu Bash na druhej strane je vlastne veľmi vynikajúce pri vytváraní výstupu jedného príkazu do druhého.

Shell Scripting je jednoduchý a nie je taký výkonný ako python. Nezaoberá sa rámcami a je ťažké ísť s webovými programami pomocou skriptovania Shell. Skutočná sila skriptovania shellu spočíva v editore Stream Text alebo sedu, programoch Awk a podobných aplikáciách.

Spracovanie súborov a vývoj webových aplikácií

Skriptovanie Bash Shell funguje pri práci so súbormi bezchybne a rýchlo. Manipuláciou so súbormi mám na mysli kopírovanie, klonovanie diskov, písanie záložných aplikácií pre sieť, ftp servery, ukladanie vstupov súborov a ich neskorší prístup a tieto výstupy neskôr pomocou potrubia prenášať na niečo iné. Na druhej strane je Python užitočnejší pri práci s kúskami údajov, ako je napríklad čítanie údajov zo súboru a spracovanie údajov. Ak budem konkrétnejší, bash nie je ani programovací jazyk. Je to skôr jednoduchý shell, ktorý bol zameraný na prácu so systémovými súbormi pomocou príkazového riadku, aby bol proces rýchlejší a rýchlejší.

Ak teda viete správne programovať bash shell, potom tiež viete, že premenné a rozsahy v bash sú extrémne obmedzené. Na druhej strane Python je skôr skriptovací jazyk shellu ako programovací jazyk. Ak nazývame Bash ako programovací jazyk, je to skôr povedané, že Python je objektovo orientovaný shell programovací jazyk. S pythonom sa dá zaobchádzať objektovo orientovaným spôsobom, ale nikdy nebude čisto objektovo orientovaný ako C alebo Java. Podobne je Bash skriptovacím jazykom; lepšie sa používa ako niečo, čo je potrebné na rýchle zvládnutie súborov, než na písanie veľkých programov. Aj keď Python je skriptovací jazyk shellu, v skutočnosti sa zaoberá v rámci svojho vlastného shellu. Napríklad presunutie všetkého súboru, ktorý je na pracovnej ploche, do iného náhodného adresára pomocou shellu Bash, by mohlo ísť napríklad takto:

$ cd Desktop $ mv * randomDirectory

Ale na druhej strane, robiť to isté v Pythone je trochu komplikovanejšie. Vyzerá to takto: -

import os, glob pre fname v glob.glob ('*'): os.rename (fname, 'randomdirectory')

Avšak v najlepšom prípade sa dá urobiť to najkompaktnejšie týmto spôsobom: -

importovať os, glob (os.rename (fname, 'randomdirectory') pre fname v glob.glob ('*'))

Keď sa učíte akýkoľvek jazyk, ľudia vám často povedia, ako si vyčistiť základy a všetky tie veci, ale nepovedia vám, ako sa najprv vysporiadať so samotným systémom, ktorý je najdôležitejší. A okrem toho, Python a Bash sú skriptovací jazyk Shell, čo znamená, že obidve sú vyvinuté hlavne na prácu so systémom a jeho súbormi.

Bash vnútri Pythonu?

Áno, čítate to správne. Doteraz sme čítali o tom, ako môžeme predstaviť skripty Pythonu vo vnútri Shell. Ale môžeme tiež predstaviť skripty Shell v skriptoch pythonu. Vezmite si napríklad toto: - Zadajte 'apt-get update' do shellu python? Zrejme dostanete nejakú chybu, napríklad neplatnú syntax. Ide teda o to, že ak chcete používať bash kódy ako 'ls, cd, mv' alebo čokoľvek iné v Pythone, budete musieť importovať modul OS. Teraz urobte jednu vec, skopírujte nasledujúci kód a vložte ho do shellu pythonu a skontrolujte, ako to funguje: -

$ python >>> zo systému os import * >>> ('sudo apt-get update')

A teraz to funguje … yay. Toto je ďalší spôsob, ako spolu pracovať python a bash skripty. Okrem toho existuje ďalší python modul, ktorý je špeciálne vyrobený na prácu s bash. Tento modul je známy ako pexpect. Pexpect je python modul, ktorý sa používa na vytváranie podriadených procesov, ich riadenie a vracanie výsledkov podľa požiadavky podriadeného procesu. Modul pexpect má veľmi ľahké rozhranie na import požadovaných modulov a podradených procesov vo vnútri a na ich vykonanie. Jeden potrebuje len nainštalovať pip vo svojom systéme na inštaláciu pexpect a jeden môže nainštalovať modul nasledovne: -

$ pip install pexpect

Verzia Pexpect potrebuje python verziu väčšiu ako 3, 3 alebo špecificky 2, 7.

V skutočnosti je omnoho viac miešať python a bash a nič nefunguje tak dobre ako mix skriptov Pythona a Basha. Vďaka tejto zmesi je skript rýchly vďaka Bash a vďaka pokročilým funkciám vďaka Pythonu. O pexpecte a jeho dokumentácii si môžete prečítať na https://pexpect.readthedocs.org/online.

Odporúčané články

Tu je niekoľko článkov, ktoré vám pomôžu získať viac podrobností o skriptovaní Bash a Pythone, takže stačí prejsť na odkaz.

  1. Python verzus hodnotiteľné rozdiely jazyka JavaScript
  2. 25 najúžasnejších otázok a odpovedí na rozhovor v Pythone
  3. Rozdiely v jazyku Python a JavaScript
  4. R Programovanie verzus Python
  5. Spracovanie súborov PHP

Kategórie: