Kuoriohjelmointi on hauskaa. Mutta niin on myös Python. Ihmiset, joilla on C-tausta, tai mikä tärkeintä, ikkunat käyttävät ihmiset eivät ole samaa mieltä. Usein ihmiset mieluummin käyttävät graafista käyttöliittymää kuin komentoriviliittymiä. Mutta se on niin täysin väärin. Graafinen käyttöliittymä on tarkoitettu ihmisille, jotka ajattelevat ohjelmiston tekevän sen, mitä sen kuvaus sanoo. Mutta niin ei aina ole. Erityisesti kuoriohjelmointi-ikkunoissa, joissa virukset ja haittaohjelmat ovat aiheuttaneet tuhoa, joka on Tornadon kokoinen. Joten komentoriviliittymää käyttävät ihmiset ovat yleensä yhtä mieltä siitä, että heidän tekemänsä on oikein, ja olen heidän kanssaan samaa mieltä siitä, että he ovat oikeassa.

Monta kertaa yleensä juuttunut ja koko tietokone jumittuu yksinkertaisen graafisen käyttöliittymän pohjaisen ohjelmiston ansiosta. Komentoriviliittymän parissa työskenteleminen on usein tyylikästä, nopeaa ja mikä tärkeintä, tiedät mitä suoritat. Mutta taas, kuorien käyttäminen ja ohjelmien kirjoittaminen ei ole jotain, jota kaikki haluaisivat tehdä.

Lisäksi ohjelmien kirjoittaminen C- tai Java-ohjelmissa olisi itse asiassa paljon pahempaa kuin graafisen käyttöliittymäpohjaisen ohjelmiston käyttäminen Windowsissa. En kirota täällä C: tä tai Java: ta, vain että ne eivät sovellu päivittäiseen käyttöön. Ja tässä komentosarjojen kielet, kuten Shell-ohjelmointi ja Python-kielet, ovat erinomaisia. Joten tänään olemme sodassa täällä, mikä sopii paremmin pienempiin kuin isompiin sovelluksiin. Vai onko se, että voimme todella yhdistää molemmat yhdessä ja tehdä niistä uutta ja parempaa. Tarkastellaan syvempää molempia ja katsotaan, mihin se vie meidät.

Bash Shell -käyttö

Shell Scripting on todella mahtava. Voit melkein tehdä suurimman osan töistäsi täällä vain yhdellä koodirivillä. Otetaan esimerkiksi tämä koodi: -

$ touch file.txt | echo -e 'hei \ n Uusi \ n maailma \ n hei \ n Hei' >> tiedosto.txt | kissatiedosto.txt | lajitella | uniq | wc-l

Joten, kuten näette, täällä on meneillään paljon komentosarjoja, mutta mitä oikein tapahtuu? Ensin '| 'tunnetaan nimellä putki. Sitä käytetään tiedoston tulosteen siirtämiseen toiseen. 'Kosketus' -sintaksia käytetään minkä tahansa tiedoston luomiseen ja kaikusyntaksia käytetään minkä tahansa lauseen tulostamiseen. Kaksois oikealla puolella olevia nuolia '>>' käytetään ulostulon lisäämiseen mihin tahansa tiedostoon tai ohjelmaan. 'kissa' -sintaksia käytetään tiedoston sisällön lukemiseen. Lajittelua käytetään kaiken lajitteluun järjestyksessä ja 'uniq' -sovellusta käytetään kopioiden poistamiseen lajittelusta. Wc: tä käytetään rivien laskemiseen ja -l on vain lippu niiden tulostamiseen. Joten kaikki nämä ketjutut komennot tekevät seuraavat.

  1. Ensin luodaan tiedosto nimitiedostolla, jonka tunnus on txt, jotta tiedotetaan siitä, että se on tekstitiedosto.
  2. Toiseksi kaiku-e käytetään monien sanojen tulostamiseen file.txt-tiedoston sisällä ja 'viiva n' tai '\ n' käytetään uuden rivin syöttämiseen tai seuraavalle riville siirtymiseen.
  3. Kun merkkijonot on syötetty tiedostoon, tiedosto luetaan, lajitellaan järjestyksessä ja siirretään uniq-syntaksiin olemassa olevien kaksoiskappaleiden poistamiseksi, mikä tässä tapauksessa on "hello".
  4. Lopuksi tulostamme rivien määrän 'wc-l' avulla laskemaan ja tulostamaan sen päätelaitteelle.

Joten, vaikka yllä oleva on vain yksi koodirivi, se voi yleensä tulla monimutkaiseksi, kun lisää ehtoja lisätään. Siksi komentosarjat ovat hyviä, mutta niitä ei voida käyttää uusien töiden tekemiseen koko ajan. Joskus haluat, että asiat ovat yksinkertaisempia, yhtä yksinkertaisia ​​kuin graafinen käyttöliittymä. Shell-skriptit ovat oikeasti erittäin hyviä suorittamaan eräkäsikirjoituksia ja tekemään toistuvia töitä, mutta samalla niillä on joitain haittoja: -

  1. Shell-skriptit ovat yleensä erittäin monimutkaisia, kun niistä tulee suuria.
  2. Komentosarjojen uudelleenkäyttöä ei ole ollenkaan. Tarkoitan tässä, että bash-skriptejä on erittäin vaikea lisätä C- tai muihin Java-koodeihin.
  3. Lisätoiminnot, kuten HTML-jäsennys, eivät ole helposti saatavissa bash-tiedostolle.

Tässä on kuitenkin Python pelastamiseksi, ja sopivin korvaava siihen. Mutta onko Bash Shell -komentosarja täysin korvattavissa? Katsotaanpa.

Suositellut kurssit

  • Online-sertifiointikoulutus J2EE: ssä
  • Ammatillinen R-ohjelmoinnin koulutus
  • Online-sertifiointikoulutus Go-ohjelmoinnissa
  • Koulutus Haskell-ohjelmasta

Python Shell Scripting

Python on asennettu oletuksena melkein kaikkiin Linux- ja UNIX-järjestelmiin. Joskus jakelulla voi olla vanhempi versio, mutta se voidaan päivittää vain yksinkertaisella komennolla. Python Shell -ohjelmointi on paljon helpompaa ymmärtää ja puhtaampaa kirjoittaa jopa aloittelijoille. Lisäksi Python on oletusarvoisesti Read Eval Print Loop -tyyli, joka auttaa uusien koodien kokeilemisessa tulkissa. Mutta vain pythonin käyttäminen voi olla hiukan vaikeaa ilman bash shell -komentosarjojen apua. Lisäksi edellisessä yhden rivin ohjelmassamme käytimme 'uniq' -systaksia kaksoiskappaleiden poistamiseksi, mutta se ei osoittanut meille, mitkä kopiot olivat. Joten kirjoitetaan python-ohjelma tehdä sama: -

#! / usr / bin / env pythonimport sys # järjestelmämoduulien tuominen hakemistotiedostojen kanssaifif __name__ == “__main __”: # Alkaen tyhjästä sanakirjasta tässä. Tätä kutsutaan tilaukseksi # Kaikki tämän sanakirjan näppäimet näkyvät nimellä ja niille määritetyt arvot # ovat määrä, jolloin tietty nimi ilmestyy.order = () # sys.stdin on tiedostoihin käytetty objekti. Kaikkiin niihin toimintoihin, joihin sovelletaan

# tiedostoobjektia voidaan käyttää myös sys.stdin-tiedostoon.

tilaukselle sys.stdin.readlines ():

order = order.strip ()

jos tilaukset tilauksissa:

tilaukset (tilaukset) + = 1

else:

tilaukset (tilaukset) = 1

tilaa tilauksesta, laske tilaukset.iteritems ():

sys.stdout.write (“% d \ t% s \ n”% (laske, tilaa))

Nyt tämä tiedosto lukee ensin sisääntulon sys.stdin -objektista. Kaikki lähtö kirjoitetaan sys.stdout-objektiin. Kun olet luonut tämän komentosarjan, olettaa, että olet nimennyt sen order.py: ksi, voit suorittaa seuraavan komentosarjan komentosarjan terminaalissa ja löydät kaikkien päällekkäisten merkkijonojen kokonaismäärän.

$ kissatiedosto.txt | python order.py

Samoin voimme myös lajitella tämän käyttämällä lajittelusyntaksia: -

$ kissatiedosto.txt | python order.py | lajitella -rn

Python Shell vs Bash Shell -ohjelmointi

Nyt olemme nähneet kuinka voimme yhdistää python- ja shell-komentosarjat komentoketjun luomiseksi ja suorittamiseksi yhdessä. Otetaan nyt askel eteenpäin ja katsotaan, voidaanko Python korvata Bash Shell kokonaan.

Bash shell-ohjelmoinnista puhumalla suorituskyvyn suhteen bash lyö täysin jakson pythonilta. Mutta jos vertaat sitä tietotyyppeihin ja muihin edistyneisiin juttuihin, bashilla ei ole paljon yhteensopivuutta. Bash-komentosarjan käynnistysaika on 2, 8 miljoonaa sekuntia, kun pythonin on 11, 1 mili sekuntia. Rehellisemmin sanottuna bash on yleiskieli, kuten Python, mutta molemmilla on omat vahvuutensa ja heikkoutensa. Bash-shell-ohjelmointi on oletuspäätelaite useimmissa Linux-jakeluissa, ja siten se on aina suorituskyvyn kannalta nopeampi. Mutta tarkoittaako se, että se voi korvata Pythonin kokonaan? Ei. Kun käsittelee suuria ohjelmia, Bash jatkaa monimutkaisuutta, kun taas Python ei. Pythonia voidaan käyttää myös objektisuuntautuneena kielenä sikäli kuin tiedän. Jos olet vasta aloittelija, et ehkä edes tiedä eroa näiden kahden välillä. Python on tyylikkäin skriptikieli, jopa enemmän kuin Ruby ja Perl. Bash-kuoriohjelmointi on toisaalta tosiasiassa erittäin erinomainen ohjaamalla yhden komennon lähtö toiseen.

Shell Scripting on yksinkertainen, eikä se ole niin voimakas kuin python. Se ei käsittele puitteita ja vaikeaa siirtyä verkkoon liittyviin ohjelmiin Shell Scripting -sovelluksen avulla. Shell-komentosarjojen todellinen voima on Stream-tekstieditorissa tai sed-ohjelmassa, Awk-ohjelmissa ja vastaavissa sovelluksissa.

Tiedostojen käsittely ja verkkosovellusten kehittäminen

Bash Shell Scripting toimii virheetömästi ja nopeasti käsitellessään tiedostoja. Tiedostojen käsittelyllä tarkoitan kopiointia, kloonaamista levyjä, varmuuskopiointisovellusten kirjoittamista verkostoitumiseen, ftp-palvelimia, tiedostojen syöttämistä ja niiden käyttämistä myöhemmin sekä näiden lähtöjen siirtämistä myöhemmin johonkin muuhun putken avulla. Python on sitä vastoin hyödyllisempi käsiteltäessä datan palasia, kuten tietojen lukemista tiedostosta ja tietojen käsittelyä. Jos olen tarkempi, bash ei ole edes ohjelmointikieli. Se on enemmän kuin yksinkertainen kuori, joka oli suunnattu käsittelemään järjestelmätiedostoja komentorivillä prosessin nopeamman ja nopeamman toimittamiseksi.

Siten, jos tiedät bash-kuoriohjelmoinnin oikein, tiedät myös, että bash-muuttujat ja laajuudet ovat erittäin rajalliset. Python taas on pikemminkin komentosarjojen kieli kuin ohjelmointikieli. Jos nimitämme Bash: n ohjelmointikieleksi, se muistuttaa enemmän Pythonin kertomista oliokeskeisestä shell-ohjelmointikielestä. Pythonilla voidaan käsitellä oliopohjaisesti, mutta se ei tule koskaan olemaan puhtaasti oliokeskeistä, kuten C tai Java. Samoin Bash on kuitenkin skriptikieli; sitä käytetään paremmin tiedostoina nopeaan käsittelemiseen kuin sen kirjoittamiseen suuriin ohjelmiin. Vaikka Python on shell-skriptikieli, se todellakin käsittelee omaa shellään. Esimerkiksi kaikkien työpöydällä olevien tiedostojen siirtäminen johonkin toiseen satunnaiseen hakemistoon Bash-kuoren kautta menisi noin:

$ cd Desktop $ mv * randomDirectory

Mutta toisaalta, saman asian tekeminen pythonissa on vähän monimutkaisempaa. Se menee noin: -

Tuo os, glob fnamelle osoitteessa glob.glob ('*'): os.rename (fname, 'randomdirectory')

Parhaimmillaan siitä voidaan kuitenkin tehdä kompaktiin tällä tavalla: -

Tuo os, glob (os.rename (fname, 'satunnaishakemisto') fname: lle glo.glob ('*'))

Kieltä oppiessaan ihmiset usein kertovat sinulle, kuinka perusasiat saadaan puhtaaksi ja kaikki nämä asiat, mutta he eivät kerro, miten käsitellä ensin itse järjestelmää, joka on tärkein. Ja lisäksi, Python ja Bash ovat kumpikin Shell-skriptikieli, mikä tarkoittaa, että molemmat on kehitetty pääasiassa käsittelemään järjestelmää ja sen tiedostoja.

Bash Pythonin sisällä?

Kyllä, luit sen oikein. Tähän asti olemme lukeneet kuinka voimme esitellä Python-skriptit Shellin sisällä. Mutta voimme esitellä myös Shell Scripts -koodin python-skripteissä. Otetaan esimerkiksi: - Kirjoita python-kuoreen 'apt-get update'? Saat selvästi virheitä, kuten virheellisen syntaksin. Joten, asia on, jos haluat käyttää bash-koodeja, kuten 'ls, cd, mv' tai jotain muuta pythonissa, sinun on tuotava OS-moduuli. Nyt tee yksi asia, kopioi seuraava koodi ja liitä se pythonin Shelliin ja tarkista sen toiminta: -

$ python >>> os import * >>> -järjestelmästä ('sudo apt-get update')

Ja nyt se toimii … yay. Tämä on toinen tapa saada python- ja bash-skriptit toimimaan yhdessä. Lisäksi on olemassa toinen python-moduuli, joka on erityisesti rakennettu toimimaan bashin kanssa. Tämä moduuli tunnetaan nimellä pexpect. Pexpect on python-moduuli, jota käytetään lapsiprosessien kutomiseen, niiden hallintaan ja tulosten palauttamiseen lapsiprosessin pyynnön mukaisesti. Pexpect-moduulilla on erittäin helppo käyttöliittymä, jonka avulla voidaan tuoda tarvittavat moduulit ja alaprosessit sen sisälle ja suorittaa ne vastaavasti. Yksi tarvitsee vain pip-laitteen asennuksen järjestelmäänsä pexpectin asentamiseksi ja moduuli voidaan asentaa seuraavasti: -

$ pip install pexpect

Pexpect-versio tarvitsee python-version, joka on suurempi kuin 3.3 tai erityisesti 2.7.

Pythonin ja bashin sekoittamiseen on oikeastaan ​​paljon enemmän, ja mikään ei toimi yhtä hyvin kuin Pythonin ja Bashin käsikirjoitus. Tämä sekoitus tekee skriptin nopeaksi Bashin takia ja mukaan lukien edistyneet ominaisuudet Pythonin takia. Peppektistä ja sen dokumentaatiosta voi lukea osoitteessa https://pexpect.readthedocs.org/online.

Suositellut artikkelit

Tässä on artikkeleita, jotka auttavat sinua saamaan lisätietoja Bash-komentosarjoista ja Pythonista, joten mene vain linkin läpi.

  1. Python vs. JavaScript-arvokkaat erot
  2. 25 suosituinta Python-haastattelua koskevaa kysymystä ja vastausta
  3. Python vs JavaScript -erot
  4. R Ohjelmointi vs Python
  5. PHP-tiedostojen käsittely