Программирование оболочки - это весело. Но так же и Python. Люди с фоном C или, что важнее всего, люди, использующие окна, не согласятся. Люди часто предпочитают использовать графический интерфейс, а не командную строку. Но это так совершенно неправильно. Графический интерфейс пользователя предназначен для людей, которые думают, что программное обеспечение делает то, что написано в его описании. Но это не всегда так. Особенно в случае окон программирования оболочки, где вирусы и вредоносные программы создают хаос размером с торнадо. Поэтому люди, использующие интерфейс командной строки, обычно соглашаются с тем, что они делают правильно, и я согласен с ними, что они правы.

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

Кроме того, написание программ на C или Java на самом деле было бы намного хуже, чем использование программного обеспечения на основе графического интерфейса пользователя в Windows. Я не ругаю C или Java здесь, просто они не подходят для повседневного использования. И именно здесь превосходят языки сценариев, такие как программирование Shell и языки Python. Итак, сегодня мы находимся в состоянии войны, которая больше подходит для малых и больших приложений. Или это то, что мы можем на самом деле объединить их вместе и сделать что-то новое и лучшее из них. Давайте глубже посмотрим на них обоих и посмотрим, куда нас это приведет.

Скрипты Bash Shell

Shell Scripting действительно потрясающий. Вы можете выполнить почти всю свою работу здесь всего за одну строку кода. Например, возьмите этот кусок кода:

$ touch file.txt | echo -e 'hello \ n Новый \ n World \ n hello \ n Hello' >> file.txt | кошка file.txt | сортировать | uniq | туалет

Итак, как вы видите, здесь происходит множество сценариев оболочки, но что именно происходит? Первый '| 'известен как труба. Он используется для передачи вывода одного файла в другой. Синтаксис «touch» используется для создания любого файла, а синтаксис echo - для печати любого оператора. Двойные правосторонние стрелки «>>» используются для вставки вывода в любой файл или программу. Синтаксис 'cat' используется для чтения содержимого файла. Сортировка используется для сортировки всего по порядку, а 'uniq' используется для удаления дубликатов из сортировки. 'Wc' используется для подсчета строк, а -l - просто флаг для их печати. Таким образом, все эти цепочечные команды делают следующее.

  1. Сначала создается файл с именем файла с расширением txt, чтобы сообщить, что это текстовый файл.
  2. Во-вторых, echo -e используется для печати нескольких слов внутри файла file.txt, а 'slash n' или '\ n' используется для ввода новой строки или перехода на следующую строку.
  3. После ввода строк в файл, файл читается, сортируется по порядку и переносится в синтаксис uniq для удаления любых существующих дубликатов, здесь в нашем случае это «привет».
  4. Наконец, мы печатаем количество строк с помощью 'wc -l' для подсчета и печатаем его на экране терминала.

Таким образом, хотя вышеприведенный код представляет собой всего одну строку кода, он может усложняться, когда вставляется больше условий. Таким образом, сценарии оболочки хороши, но они не могут использоваться для выполнения новых задач все время. Иногда вы хотите, чтобы все было проще, так же просто, как графический пользовательский интерфейс. Сценарии оболочки на самом деле очень хороши для запуска пакетных сценариев и выполнения повторяющихся заданий, но в то же время они имеют ряд недостатков:

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

Тем не менее, здесь есть Python для спасения, и наиболее подходящая замена для того же. Но полностью ли заменяемы сценарии Bash Shell? Давайте взглянем.

Рекомендуемые курсы

  • Сертификационный онлайн-тренинг по J2EE
  • Профессиональное обучение программированию R
  • Онлайн сертификационный тренинг по программированию на Go
  • Тренинг по программе Haskell

Сценарии оболочки Python

Python устанавливается по умолчанию практически во всех системах Linux и UNIX. Иногда дистрибутив может иметь более старую версию, но ее можно обновить с помощью простой команды. Программирование на Python Shell намного проще для понимания и написания даже для начинающих. Кроме того, по умолчанию Python имеет стиль Read Eval Print Loop, который помогает опробовать новые коды в интерпретаторе. Но просто использование python может быть немного сложным без помощи сценариев оболочки bash. Кроме того, в нашей предыдущей однострочной программе мы использовали синтаксис uniq для удаления дубликатов, но он не показал нам, что это за дубликаты. Итак, давайте напишем программу на python для того же:

#! / usr / bin / env pythonimport sys # импорт системных модулей для работы с файлами каталогов, если __name__ == «__main __»: # Начиная с пустого словаря. Это называется порядком # Все ключи в этом словаре отображаются в виде имени, и указанные значения для них # будут указывать количество раз, когда будет отображаться конкретное имя .order = () # sys.stdin - это объект, используемый для файлов. Все те функции, которые применяются к

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

для заказа в sys.stdin.readlines ():

order = order.strip ()

если заказ в заказах:

заказы (заказ) + = 1

еще:

заказы (заказ) = 1

для заказа считайте в orders.iteritems ():

sys.stdout.write («% d \ t% s \ n»% (количество, порядок))

Теперь этот файл сначала читает входные данные из объекта sys.stdin. Весь вывод записывается в объект sys.stdout. После создания этого сценария, предполагая, что вы назвали его как order.py, вы можете просто выполнить следующий сценарий оболочки в терминале, и вы найдете общее количество всех повторяющихся строк.

$ cat file.txt | python order.py

Точно так же мы можем отсортировать это, используя синтаксис th sort:

$ cat file.txt | python order.py | сортировать

Python Shell против сценариев программирования Bash Shell

Теперь мы увидели, как мы можем комбинировать скрипты python и shell, чтобы создать цепочку команд и выполнить их вместе. Теперь давайте сделаем еще один шаг и посмотрим, сможет ли Python полностью заменить Bash Shell.

Говоря о программировании оболочки bash, с точки зрения производительности, bash полностью превосходит всякую ерунду Python. Но если вы сравните его с типами данных и другими дополнительными вещами, bash не имеет большой совместимости. Время запуска сценария оболочки bash составляет 2, 8 мили секунды, а Python - 11, 1 мили секунды. Чтобы быть более откровенным, bash является языком общего назначения, как и Python, но оба имеют свои сильные и слабые стороны. Программирование оболочки Bash является терминалом по умолчанию в большинстве дистрибутивов Linux, и поэтому оно всегда будет быстрее с точки зрения производительности. Но значит ли это, что он может полностью заменить Python? Нет. При работе с большими программами Bash будет усложняться, а Python - нет. Насколько я знаю, Python также может использоваться как объектно-ориентированный язык. Если вы только начинающий, то вы можете даже не знать разницу между ними. Python - самый элегантный язык сценариев, даже больше, чем Ruby и Perl. С другой стороны, программирование оболочки Bash отлично справляется с передачей одной команды в другую.

Сценарии оболочки просты и не так мощны, как Python. Он не имеет отношения к фреймворкам и его трудно освоить с веб-программами, использующими Shell Scripting. Настоящая сила сценариев оболочки заключается в редакторе Stream Text или sed, программах Awk и подобных приложениях.

Обработка файлов и разработка веб-приложений

Скрипты Bash Shell работают безупречно и быстро при работе с файлами. Под обработкой файлов я имею в виду копирование, клонирование дисков, написание приложений резервного копирования для сетей, ftp-серверов, хранение файловых входов и последующий доступ к ним, а затем передачу этих выходных данных в другое место с помощью конвейера. Python, с другой стороны, более полезен для работы с кусками данных, такими как чтение данных из файла и обработка данных. Если быть более конкретным, bash даже не является языком программирования. Это скорее простая оболочка, предназначенная для работы с системными файлами с использованием командной строки, чтобы процесс был более быстрым и быстрым.

Таким образом, если вы хорошо знаете программирование оболочки bash, то вы также знаете, что переменные и области действия в bash чрезвычайно ограничены. С другой стороны, Python - это скорее язык сценариев оболочки, чем язык программирования. Если мы называем Bash языком программирования, это больше похоже на сообщение Python - это объектно-ориентированный язык программирования оболочки. С python можно иметь дело с объектно-ориентированным способом, но он никогда не будет чисто объектно-ориентированным, как C или Java. Точно так же Bash - это язык сценариев; лучше использовать его как нечто, что требуется для быстрой работы с файлами, а не для написания в нем больших программ. Кроме того, хотя Python является языком сценариев оболочки, он фактически работает в своей собственной оболочке. Например, перемещение всего файла, находящегося на рабочем столе, в другой случайный каталог с помощью оболочки Bash будет выглядеть примерно так:

$ cd Desktop $ mv * randomDirectory

Но с другой стороны, делать то же самое в Python немного сложнее. Это выглядит примерно так: -

импортировать os, glob для fname в glob.glob ('*'): os.rename (fname, 'randomdirectory')

Однако, в лучшем случае, можно сделать его наиболее компактным таким образом:

импортировать os, glob (os.rename (fname, 'randomdirectory') для fname в glob.glob ('*'))

Изучая любой язык, люди часто говорят вам, как очистить основы и все эти вещи, но они не скажут вам, как сначала разобраться с самой системой, которая является наиболее важной. Кроме того, Python и Bash оба являются языком сценариев Shell, что означает, что оба они разработаны в основном для работы с системой и ее файлами.

Bash внутри Python?

Да, вы правильно прочитали. До сих пор мы читали о том, как мы можем вводить скрипты Python внутри Shell. Но мы также можем ввести сценарии оболочки в сценарии Python. Возьмем для примера: - Введите «apt-get update» в оболочке python? Очевидно, вы получите какую-то ошибку, например, неверный синтаксис. Итак, дело в том, что если вы хотите использовать bash-коды типа 'ls, cd, mv' или что-то еще в python, вам придется импортировать модуль ОС. Теперь сделайте одну вещь, скопируйте следующий код и вставьте его в оболочку python и проверьте, как он работает:

$ python >>> из операционной системы os import * >>> ('sudo apt-get update')

И теперь это работает … ууу. Это еще один способ, как заставить скрипты python и bash работать вместе. Кроме того, есть еще один модуль python, специально созданный для работы с bash. Этот модуль известен как pexpect. Pexpect - это модуль Python, который используется для порождения дочерних процессов, управления ими и возврата результатов в соответствии с запросом дочернего процесса. Модуль pexpect имеет чрезвычайно простой интерфейс для импорта необходимых модулей и дочерних процессов внутри него и выполнения их соответствующим образом. Для установки pexpect достаточно установить пипс в их систему, а модуль можно установить следующим образом:

$ pip install 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 Interview
  3. Различия между Python и JavaScript
  4. R Программирование против Python
  5. Обработка файлов PHP