A kagyló programozás szórakoztató. De a Python is. A C háttérrel rendelkező emberek, vagy ami a legfontosabb, az a Windows használó emberek nem értenek egyet. Az emberek általában inkább a grafikus alapú felületet használják, mint a parancssori. De ez teljesen rossz. A grafikus felhasználói felület azoknak szól, akik úgy gondolják, hogy a szoftver azt teszi, amit a leírás szerint csinál. De nem mindig ez a helyzet. Különösen a shell programozási ablakok esetében, ahol a vírusok és a rosszindulatú programok a Tornado méretű pusztítást okoztak. Tehát a parancssori felületet használó emberek általában egyetértenek abban, hogy amit csinálnak, helyes, és egyetértek velük abban, hogy igazuk van.

Sokszor általában elakad, és az egész számítógép lefagy egy egyszerű grafikus felületen alapuló szoftver miatt. A parancssori felületen történő munka gyakran elegánsabb, gyorsabb, és ami a legfontosabb, tudja, hogy mit futtat. De a héjak használata és a programok írása nem minden, amit mindenki szívesebben tenne.

Emellett a programok írása C vagy Java nyelven valójában sokkal rosszabb lenne, mint egy grafikus felhasználói felületen alapuló szoftver használata Windowsban. Nem átok itt a C-t vagy a Java-t, csak az, hogy nem alkalmasak mindennapi használatra. És ez az, ahol a szkriptnyelv, például a Shell programozás és a Python nyelv kiváló. Tehát ma háborúban állunk itt, melyik alkalmasabb kisebb és nagyobb alkalmazásokhoz. Vagy az, hogy valóban összekapcsolhatjuk mindkettőt, és készíthetünk valami újat és jobbat a két közül. Vizsgáljuk meg mélyebben mindkettőt, és nézzük meg, hová visz.

Bash Shell szkriptek

A Shell Scripting nagyon fantasztikus. Szinte a legtöbb munkát itt elvégezheti, csak egy sor sorban. Például, hogy ezt a kódot veszi: -

$ touch file.txt | echo -e 'hello \ n új \ n világ \ n hello \ n Hello' >> file.txt | macska fájl.txt | rendezés | uniq | wc-l

Tehát, mint láthatja, sok shell-szkriptelés folyik itt, de mi történik pontosan? Először a '| "csőként ismert. Az egyik fájl kimenetének átvitelére szolgál a másikra. A „touch” szintaxist bármilyen fájl létrehozására használják, a visszhang szintaxist pedig bármilyen utasítás kinyomtatásához. A jobb oldali kettős '>>' nyilakkal szolgál a kimenet beillesztésére bármilyen fájlba vagy programba. A 'cat' szintaxist a fájl tartalmának olvasására használják. A Rendezés segítségével mindent sorrendbe rendezhetünk, az 'uniq' pedig a másolatok eltávolítását szolgálja a rendezésből. A 'wc' a sorok számlálására szolgál, az -l pedig csak egy zászló a nyomtatáshoz. Tehát ezek a láncolt parancsok a következőket hajtják végre.

  1. Először létrejön egy fájl a txt kiterjesztéssel rendelkező névfájllal, hogy ez egy szöveges fájl legyen.
  2. Másodszor, az echo -e több szót nyomtat a file.txt fájl belsejében, és az 'slash n' vagy '\ n' új sor beírására vagy a következő sorra lépéshez használható.
  3. A karakterláncok beírása után a fájlt leolvassa, sorrendbe rendezi és áthelyezi az uniq szintaxisba a meglévő másolatok eltávolítása érdekében, amely esetünkben „hello”.
  4. Végül kinyomtatjuk a sorok számát a 'wc -l' használatával, hogy megszámoljuk és kinyomtassuk a terminál képernyőjén.

Tehát, bár a fenti csak egy sor sor, a bonyolultabbá válhat, ha több feltételt beillesztenek. Így a shell parancsfájlok jóak, de nem használhatók folyamatosan új feladatok elvégzésére. Néha azt akarja, hogy a dolgok egyszerűbbek legyenek, olyan egyszerűek, mint a grafikus felhasználói felület. A shell parancsfájlok valóban nagyon jóak a kötegelt parancsfájlok futtatásához és az ismételt munkák elvégzéséhez, de ugyanakkor vannak bizonyos hátrányuk is: -

  1. A héjszkriptek általában rendkívül bonyolulttá válnak, ha nagyobbak lesznek.
  2. A szkriptek újrafelhasználása szinte semmilyen. Amit itt értek, hogy a bash szkripteket nagyon nehéz beilleszteni a C vagy más Java kódokba.
  3. Az olyan fejlett funkciók, mint például a HTML elemzés, nem egyszerűen elérhetők a bash számára.

Itt van a Python is a mentéshez, és ennek legmegfelelőbb pótlása. De vajon a Bash Shell szkriptje teljesen helyettesíthető-e? Lássuk.

Ajánlott tanfolyamok

  • Online tanúsítási képzés a J2EE-ben
  • Professzionális R programozási tréning
  • Online tanúsítási képzés Go programozáshoz
  • Képzés a Haskell programról

Python Shell Scripting

A Python alapértelmezés szerint szinte minden Linux és UNIX rendszerre telepítve van. Előfordulhat, hogy a disztribúciónak van egy régebbi verziója, de csak egy egyszerű paranccsal frissíthető. A Python Shell programozását sokkal könnyebb megérteni, és tisztább a kezdők számára is. Ezenkívül alapértelmezés szerint a Python stílusa a Read Eval Print Loop, amely segít az új kódok kipróbálásában a tolmácsban. De csak a python használata kicsit nehéz lehet bash shell parancsfájl készítése nélkül. Ezenkívül az előző egysoros programunkban az 'uniq' szintaxist használtuk a másolatok eltávolítására, de ez nem mutatta meg, hogy mi volt a másolatok. Tehát hagyjuk, hogy írjunk egy python programot, hogy ugyanezt tegyük: -

#! / usr / bin / env pythonimport sys # rendszermodulok importálása a könyvtárfájlokkal való együttműködéshez __name__ == “__main __”: # Itt kezdődik egy üres szótár. Rendelésnek nevezzük. # A szótár összes kulcsa névként jelenik meg, és számukra megadott értékek # annyi alkalommal jelennek meg, hogy az adott név megjelenik.order = () # sys.stdin egy fájlhoz használt objektum. Az összes olyan funkció, amelyre alkalmazzák

# egy fájlobjektum a sys.stdin számára is használható.

rendeléshez a sys.stdin.readlines () -ben:

order = order.strip ()

megrendelés esetén:

megrendelések (megrendelés) + = 1

más:

megrendelések (rendelés) = 1

rendeléshez számoljon a order.iteritems () -ben:

sys.stdout.write (“% d \ t% s \ n”% (szám, rendelés))

Ez a fájl először a sys.stdin objektum bemenetét olvassa le. Az összes kimenetet a sys.stdout objektumra írjuk. A szkript létrehozása után, ha feltételezzük, hogy order.py-nek nevezted, akkor a terminálon csak végrehajthatja a következő héj-parancsfájlt, és meg fogja találni az összes ismétlődő karakterlánc összes számát.

$ cat file.txt | python order.py

Hasonlóképpen, ezt a rendezési szintaxis segítségével is rendezhetjük: -

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

Python Shell vs Bash Shell programozási szkriptek

Most megláttuk, hogyan lehet a python és a shell parancsfájlokat összekapcsolni a parancslánc létrehozásával és végrehajtásával együtt. Most lépjünk tovább és nézzük meg, hogy a Python képes-e teljesen helyettesíteni a Bash Shell-t.

A bash shell programozásáról beszélve, a teljesítmény szempontjából a bash teljes mértékben legyőzi a szart a pythonból. De ha összehasonlítjuk az adattípusokkal és más fejlett dolgokkal, a bash-nak nincs sok kompatibilitása. A bash shell parancsfájl indulási ideje 2, 8 millió másodperc, míg a python indulási ideje 11, 1 mili másodperc. Hogy őszinte legyek, a bash általános célú nyelv, akárcsak a Python, de mindkettőnek megvan a maga erőssége és gyengesége. A bash shell programozás az alapértelmezett terminál a legtöbb Linux disztribúcióban, így a teljesítmény szempontjából mindig gyorsabb lesz. De ez azt jelenti, hogy teljesen helyettesítheti a Python-ot? Dehogy. Nagy programokkal foglalkozva Bash továbbra is bonyolultá válik, míg a Python nem. A Python objektum-orientált nyelvként is használható, amennyire én tudom. Ha csak kezdő vagy, akkor valószínűleg nem is ismeri a kettő közötti különbséget. A Python a legelegánsabb szkriptnyelv, még több, mint a Ruby és a Perl. A bash shell programozás viszont valóban nagyon kiváló abban az esetben, ha az egyik parancs kimenetét áthelyezi a másikba.

A Shell Scripting egyszerű, és nem olyan erős, mint a python. Nem foglalkozik a keretrendszerekkel és az a nehéz, hogy a Shell Scripting használatával elinduljunk a webes programokkal. A shell parancsfájlok valódi ereje a Stream Text szerkesztőben vagy a sed-ben, az Awk programokban és hasonló alkalmazásokban rejlik.

Fájlkezelés és webes alkalmazások fejlesztése

A Bash Shell Scripting hibátlanul és gyorsan működik, amikor fájlokat kezel. A fájlok kezelése alatt a másolást, a lemezek klónozását, a hálózatra való biztonsági mentési alkalmazások írását, az ftp-kiszolgálókat, a fájlbemenetek tárolását és későbbi elérését, valamint a kimenetek későbbi átadását valami másra a pipe segítségével. A Python viszont sokkal hasznosabb az adatok daraboinak kezelésére, például adatok fájlból történő olvasására és az adatok feldolgozására. Ha pontosabban mondom, a bash még a programozási nyelv sem. Ez inkább egy egyszerű héj, amelynek célja a rendszerfájlok kezelése a parancssor segítségével annak érdekében, hogy a folyamat gyorsabb és gyorsabb legyen.

Ha tehát ismeri a bash shell programozását, akkor azt is tudja, hogy a bash-ban szereplő változók és hatókörök rendkívül korlátozottak. A Python viszont inkább shell szkriptnyelv, mint programozási nyelv. Ha a Bash-t programozási nyelvnek nevezzük, akkor az inkább azt mondja, hogy a Python objektumorientált shell programozási nyelv. A pythonnal objektumorientált módon lehet foglalkozni, de soha nem lesz pusztán objektumorientált, mint például a C vagy a Java. Hasonlóképpen, Bash ugyanakkor szkriptnyelv; inkább jobban használják, mint fájlok gyors kezelését, ahelyett, hogy nagy programokat írnának bele. Ugyanakkor, bár a Python egy shell parancsfájlok nyelve, valójában a saját shellén belül foglalkozik. Például, ha az összes Asztalon lévő fájlt áthelyezi valamilyen más véletlen könyvtárba a Bash parancsértelmezőn keresztül, ehhez hasonlóan járhat:

$ cd Desktop $ mv * randomDirectory

De másrészt, ugyanaz a lépés a python-ban egy kicsit bonyolultabb. Valami ilyen: -

import os, glob az fname számára a glob.glob-ban ('*'): os.rename (fname, 'randomdirectory')

A legjobb esetben azonban a következőkből lehet a legkisebb:

import os, glob (os.rename (fname, 'randomdirectory') az fname számára a glob.glob-ban ('*'))

Bármely nyelv megtanulásakor az emberek gyakran elmondják, hogyan kell megtisztítani az alapokat és az összes ilyen dolgot, de nem fogják mondani, hogyan kell először a legfontosabb rendszerrel foglalkozni. És emellett a Python és a Bash Shell szkriptnyelv, ami azt jelenti, hogy mindkettőt elsősorban a rendszer és a fájlok kezelésére fejlesztették ki.

Bash a Pythonban?

Igen, jól olvasod. Mostanáig olvastam arról, hogyan tudjuk bevezetni a Python szkripteket a Shell belsejében. De be tudjuk mutatni a Shell Scripts-t is a python szkripteiben. Vegyük például ezt: - Írjuk be az 'apt-get update' parancsot a python shellbe? Nyilvánvalóan hibát fog kapni, mint például az érvénytelen szintaxis. Tehát az a helyzet, ha olyan bash-kódokat szeretne használni, mint az 'ls, cd, mv' vagy bármi mást a pythonban, akkor be kell importálnia az operációs rendszer modult. Most tegye egy dolgot, másolja át a következő kódot, illessze be a python-kagylóba, és ellenőrizze, hogy működik: -

$ python >>> az os import * >>> rendszerből ('sudo apt-get update')

És most működik … igen. Ez egy másik módja annak, hogy a python és a bash szkriptek együtt működjenek. Emellett van egy másik python modul, amelyet kifejezetten a bash-nal való együttműködésre építettek. Ez a modul pexpect néven ismert. A Pexpect egy python modul, amelyet gyermekkori folyamatok ívására, vezérlésére és az eredmények visszatérítésére használnak a gyermekfolyamat kérésére. A pexpect modul rendkívül egyszerű felülettel rendelkezik a szükséges modulok és a gyermek folyamatok importálásához, és ennek megfelelő végrehajtásához. Csak arra van szükség, hogy a pip-ot telepítsék a rendszerükbe a pexpect telepítéséhez, és a következőképpen telepíthetik a modult: -

$ pip install pexpect

A Pexpect verziójának python verziójára van szükség, amely nagyobb, mint 3, 3, vagy kifejezetten 2, 7.

Valójában sokkal több van a python és a bash összekeverésében, és semmi sem működik jobban, mint a Python és Bash forgatókönyveinek keveréke. Ez a keverék gyorsítja a szkriptet Bash miatt, és a Python miatt a fejlett funkciókat is tartalmazza. A pexpectről és annak dokumentációjáról a https://pexpect.readthedocs.org/online oldalon olvashat.

Ajánlott cikkek

Íme néhány cikk, amely segít részletesebben megismerni a Bash Scripting-t és a Python-ot, tehát csak keresse meg a linket.

  1. Python vs JavaScript-érthető különbségek
  2. A 25 legnépszerűbb csodálatos Python interjú kérdése és válaszai
  3. Python vs JavaScript különbségek
  4. R Programozás vs Python
  5. PHP fájlkezelés

Kategória: