Програмирането на Shell е забавно. Но такъв е и Python. Хората с произход на C или най-важното хора, които използват Windows, няма да се съгласят. Хората често предпочитат да използват графичен интерфейс, отколкото интерфейсите на командния ред. Но това е толкова напълно погрешно. Графичният потребителски интерфейс е за хора, които смятат, че софтуерът прави това, което в описанието му казва, че го прави. Но това не винаги е така. Особено в случая на прозорци за програмиране на черупки, където вирусите и зловредните програми създават поразия, която е с размерите на Торнадо. Така че хората, които използват интерфейс на командния ред, обикновено са съгласни, че това, което правят е правилно, и аз съм съгласен с тях, че са прави.

Много пъти обикновено се забивате и целият компютър виси поради прост софтуер, базиран на графичен интерфейс. Работата по интерфейс на командния ред често е по-елегантна, бърза и най-важното знаете какво изпълнявате. Но отново, използването на черупки и писане на програми не е нещо, което всеки би предпочел да прави.

Освен това писането на програми на C или Java всъщност ще бъде много по-лошо от използването на софтуер, базиран на графичен потребителски интерфейс в Windows. Тук не проклинам C или Java, само че те не са подходящи за ежедневна употреба. И тук се отличават езици за скриптове като програмиране на Shell и езици Python. И така, днес ние сме във война тук кой е по-подходящ както за по-малки, така и за по-големи приложения. Или е, че всъщност можем да комбинираме и двете заедно и да направим нещо ново и по-добро от двете. Нека да разгледаме по-задълбочено и двете и да видим къде ни отвежда.

Скриптове на Bash Shell

Shell Scripting е наистина страхотно. Почти можете да вършите повечето си задачи тук само в един ред код. Например, за да кажем, вземете този код: -

$ touch file.txt | echo -e 'здравей \ n Нов \ n Свят \ n здравей \ n Здравейте' >> file.txt | cat file.txt | сортиране | uniq | wc -l

И така, както виждате, тук се случва много скриптове на черупките, но какво точно се случва? Първо '| 'е известна като тръбата. Използва се за прехвърляне на изхода на един файл в друг. Синтаксисът „докосване“ се използва за създаване на всеки файл, а синтаксисът „ехо“ се използва за отпечатване на всяко изявление. Двойните десностранни стрелки '>>' се използват за поставяне на изхода към всеки файл или програма. синтаксисът 'cat' се използва за четене на съдържанието на файл. Сортирането се използва за сортиране на всичко по ред и 'uniq' се използва за премахване на дубликати от сортирането. 'Wc' се използва за броене на редове и -l е само флаг за отпечатването им. Така че всички тези верижни команди правят следното.

  1. Първо се създава файл с файла с име с разширение txt, за да се информира, че е текстов файл.
  2. Второ, echo -e се използва за отпечатване на няколко думи във файла file.txt, а 'slash n' или '\ n' се използва за въвеждане на нов ред или за преминаване към следващия ред.
  3. След въвеждането на низове във файла, файлът се чете, подрежда по ред и се прехвърля в синтаксиса uniq, за да се премахнат всички съществуващи дубликати, тук в нашия случай е „здравей“.
  4. И накрая, отпечатваме броя на реда, използвайки 'wc-l', за да ги броим и отпечатваме на екрана на терминала.

Така че, въпреки че горното е само един ред код, той може да има тенденция да се усложнява, когато се добавят повече условия. По този начин скриптите с черупки са добри, но не могат да се използват за извършване на нови задачи през цялото време. Понякога искате нещата да са по-прости, толкова прости, колкото графичния потребителски интерфейс. Скриптите на Shell всъщност са много добри за стартиране на пакетни скриптове и извършване на многократни задачи, но в същото време те имат някои недостатъци: -

  1. Сценариите на шел са склонни да стават изключително сложни, тъй като стават големи.
  2. Повторното използване на скриптове почти няма. Това, което искам да кажа тук, е, че bash скриптовете са изключително трудни за поставяне в C или други Java кодове.
  3. Разширените функции, като HTML синтаксиса, не са лесно достъпни за bash.

Въпреки това тук има Python за спасяването и най-подходящата замяна на същото. Но сценариите на Bash Shell напълно заменими ли са? Нека да разгледаме.

Препоръчителни курсове

  • Онлайн обучение за сертифициране в J2EE
  • Професионално обучение по R програмиране
  • Обучение за онлайн сертифициране по програмиране Go
  • Обучение по програма Haskell

Python Shell Scripting

Python се инсталира по подразбиране в почти всички Linux и UNIX системи. Понякога дистрибуцията може да има по-стара версия, но тя може да бъде актуализирана само с обикновена команда. Програмирането на Python Shell е много по-лесно за разбиране и по-чисто за писане дори за начинаещи. Също така, по подразбиране Python има стила на Read Eval Print Loop, който помага при изпробването на нови кодове в интерпретатора. Но само използването на python може да бъде малко трудно без помощта на скриптове на bash shell. Освен това в предишната ни програма с един ред използвахме синтаксиса 'uniq' за премахване на дубликати, но не ни показа какви са дублиращите. Така че, нека да напишем програма python да направи същото: -

#! / usr / bin / env pythonimport sys # импортиране на системни модули за работа с директория filesif __name__ == “__main __”: # Започвайки с празен речник тук. Което се обозначава като ред # Всички клавиши в този речник се показват като име и посочените стойности за тях # ще са количеството пъти, когато конкретното име ще се появи.order = () # sys.stdin е обект, използван за файлове. Всички онези функции, към които се прилага

# файлов обект може да се използва и за sys.stdin.

за поръчка в sys.stdin.readlines ():

order = order.strip ()

при поръчка:

поръчки (поръчка) + = 1

друго:

поръчки (поръчка) = 1

за поръчка, бройте в order.iteritems ():

sys.stdout.write ("% d \ t% s \ n"% (брой, ред))

Сега този файл първо чете входа от обекта sys.stdin. Целият изход се записва към обекта sys.stdout. След създаването на този скрипт, ако приемем, че сте го нарекли като order.py, можете просто да изпълните следния скрипт на обвивката в терминала и ще намерите общия брой на всички дублиращи низове.

$ cat file.txt | python order.py

По подобен начин можем да разрешим това, използвайки синтаксиса на сортиране th: -

$ cat file.txt | python order.py | сортиране -rn

Python Shell срещу Bash Shell програмиране на скриптове

Сега видяхме как можем да комбинираме скриптове на python и shell, за да създадем верига от команди и да ги изпълним заедно. Сега, нека направим крачка напред и да видим дали Python може напълно да замени Bash Shell.

Говорейки за програмиране на bash shell, по отношение на производителността, bash напълно бие глупостите от python. Но ако го сравните с типове данни и други модерни неща, bash няма голяма съвместимост. Времето за стартиране на скрипта на bash shell е 2.8 мили секунди, докато това на python е 11.1 мили секунди. За да бъда по-откровен, баш е език с общо предназначение, подобно на Python, но и двете имат своите силни и слаби страни. Програмирането на Bash shell е терминалът по подразбиране в повечето Linux дистрибуции и по този начин винаги ще бъде по-бърз по отношение на производителността. Но това означава ли, че може напълно да замени Python? Не. Когато се занимавате с големи програми, Bash ще продължи да се усложнява, докато Python не. Python може да се използва и като обектно ориентиран език, доколкото знам. Ако сте само начинаещ, тогава може би дори не знаете разликата между двете. Python е най-елегантният скриптов език, дори повече от Ruby и Perl. Програмирането на Bash shell от друга страна всъщност е много отлично за прехвърляне на изхода на една команда в друга.

Shell Scripting е проста и не е толкова мощна, колкото python. Той не се занимава с рамки и е трудно да се движи с уеб програми, използващи Shell Scripting. Истинската сила на скриптовия скрипт се крие в редактора на Stream Text или sed, Awk Programs и други подобни приложения.

Работа с файлове и разработка на уеб приложения

Bash Shell Scripting работи безотказно и бързо при работа с файлове. Под обработка на файлове имам предвид копиране, клониране на дискове, писане на резервни приложения за работа в мрежа, ftp сървъри, съхраняване на файлови входове и достъп до тях по-късно и прехвърляне на тези изходи по-късно на нещо друго с помощта на pipe. Python от друга страна е по-полезен за справяне с парчета данни като четене на данни от файл и обработка на данни. Ако съм по-конкретен, bash дори не е език за програмиране. Това е по-скоро обикновена обвивка, която е била насочена към работа със системни файлове, използвайки командния ред, за да може процесът да е по-бърз и бърз.

По този начин, ако знаете правилно програмиране на bash shell, тогава също знаете, че променливите и обхвата в bash са изключително ограничени. Python от друга страна е по-скоро скриптов език на черупките, отколкото език за програмиране. Ако ние наречем Bash като език за програмиране, то по-скоро като казва Python е обектно ориентиран език за програмиране на черупки. Човек може да се справи с python по обектно ориентиран начин, но той никога няма да бъде чисто обектно ориентиран като C или Java. По същия начин Баш е скриптов език; по-добре е да се използва като нещо, което е необходимо да се работи бързо с файлове, а не да се пишат големи програми в него. Също така, макар Python да е скриптов език на черупките, той всъщност се занимава със собствена обвивка. Например, преместването на целия файл, който е на Desktop, в някаква друга случайна директория чрез черупка на Bash, ще премине нещо подобно:

$ cd Desktop $ mv * randomDirectory

Но от друга страна, правенето на същото нещо в python е малко по-сложно. Има нещо подобно: -

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

Въпреки това, в най-добрия случай, човек може да го направи най-компактен по този начин: -

import os, glob (os.rename (fname, 'randomdirectory') за fname в glob.glob ('*'))

Когато изучавате какъвто и да е език, хората често ще ви кажат как да изчистите основите и всички тези неща, но няма да ви кажат как да се справите първо със самата система, която е най-важна. Освен това Python и Bash са скриптов език на Shell, което означава, че и двамата са разработени главно за работа със системата и нейните файлове.

Bash вътре в Python?

Да, добре сте го прочели. До сега прочетохме за това как можем да въведем Python скриптове в Shell. Но можем също да въведем Shell Scripts в скриптовете на python. Вземете това за пример: - Въведете „apt-get update“ в обвивката на python? Очевидно ще получите грешка като невалиден синтаксис. Така че, нещо е, ако искате да използвате bash кодове като 'ls, cd, mv' или нещо друго в python, ще трябва да импортирате OS модула. Сега направете едно нещо, копирайте следния код и го поставете в Shell of python и проверете как работи: -

$ python >>> от os import * >>> система ('sudo apt-get update')

И сега работи … да. Това е друг начин за това как да накараме python и bash скриптове да работят заедно. Освен това има още един модул python, който е специално изграден, за да работи с bash. Този модул е ​​известен като pexpect. Pexpect е модул на python, който се използва за хвърляне на хайвера на детски процеси, контролирането им и връщането на резултати според заявката на дъщерния процес. Модулът pexpect има изключително лесен интерфейс за импортиране на необходимите модули и дъщерни процеси вътре в него и тяхното изпълнение. Един просто се нуждае от инсталиране на пипса в тяхната система, за да инсталирате pexpect и може да инсталирате модула, както следва: -

$ pip инсталирате pexpect

Версията на Pexpect се нуждае от версия python, по-голяма от 3.3, или по-специално 2.7.

Всъщност има много повече за смесване на python и bash и нищо не работи толкова по-добре, колкото смесица от скрипт на Python и Bash. Тази смес прави сценария бърз заради Bash и включващ разширени функции заради Python. Човек може да прочете за pexpect и неговата документация на https://pexpect.readthedocs.org/online.

Препоръчителни статии

Ето няколко статии, които ще ви помогнат да получите повече подробности за Bash Scripting и Python, така че просто преминете през линка.

  1. Python срещу JavaScript-ценни разлики
  2. Топ 25 Въпроси и отговори за невероятно интервю от Python
  3. Разлики в Python срещу JavaScript
  4. R Програмиране срещу Python
  5. PHP обработка на файлове