
Lesley Fowler
0
4227
1232
Могу поспорить, вы не знали, что вы могли бы написать сценарии оболочки на Python.
Для любого программиста или системного администратора создание сценариев является жизненно важным навыком. Это позволяет автоматизировать утомительные задачи, превращая их в последовательные, повторяемые действия. Проблема в том, что это может быть немного сложным, особенно если учесть, что большинству диалектов, использующих сценарии оболочки, не хватает синтаксической утонченности, присущей Python и Ruby..
Я буду еще грубее. Большинство сценариев оболочки более страшны, чем средний мопс.
Кроме того, существует множество оболочек для UNIX-подобных платформ, включая Bash, CSH, KSH и (мой любимый) FISH. В результате написание непротиворечивых сценариев оболочки, которые работают на каждой платформе, может оказаться сложной задачей..
Должен быть лучший способ, верно?
Представляем ш.пи
Есть. Когда я пишу не для MakeUseOf, я пишу код на Python для удовольствия и выгоды. Мне действительно нравится Python из-за его гибкости, присущей ему красоты и того, как он требует написания хорошего кода при разработке. Если это звучит хорошо для вас, но вы еще не знаете этот удивительный язык, почему бы вам не проверить эти пять замечательных сайтов для изучения программирования на Python 5 лучших сайтов для изучения программирования на Python 5 лучших сайтов для изучения программирования на Python Хотите научиться программированию на Python? Вот лучшие способы изучения Python онлайн, многие из которых абсолютно бесплатны. ?
Несколько месяцев назад я натолкнулся на эту действительно потрясающую библиотеку, которая называется sh.py, которая позволяет вам вызывать программы, передавать параметры и обрабатывать выходные данные - все в рамках программы Python..
Итак, что это значит? Проще говоря, это означает, что у вас есть полная функциональность сценариев оболочки, но внутри языка, который легко читается, имеет модульный характер и поддерживает объектно-ориентированное программирование. Круто, верно?
Итак, как мы это используем?
Я делаю несколько предположений о вас. Во-первых, вы используете Linux, OS X или FreeBSD. Как и сейчас, sh.py не работает в Windows. Однако при необходимости вы всегда можете установить виртуальную машину Linux. Мой коллега Джастин Пот написал довольно полезную статью об этом, которую вы можете прочитать здесь. Как использовать бесплатные изображения VirtualBoxes для тестирования и запуска операционных систем с открытым исходным кодом [Linux] Как использовать бесплатные изображения VirtualBoxes для тестирования и запуска операционных систем с открытым исходным кодом [Linux] Быстро опробуйте широкий спектр операционных систем с открытым исходным кодом, некоторые из которых вам знакомы, а некоторые нет. Вы можете начать просмотр прямо сейчас на Virtualboxes, веб-сайте, который занимает почти всю работу ... .
Второе предположение, которое я делаю, заключается в том, что вы используете последнюю версию Python (2.7 или 3.2) и у вас установлен менеджер пакетов PIP. Если это не так, посмотрите официальную документацию по Python.
Все хорошо? Тогда продолжим.
Начнем кодирование
В терминале установите sh.py с помощью следующей команды.
sudo pip install sh
Причина, по которой мы используем 'sudo', заключается в том, что нам нужно повысить наши разрешения для добавления новых пакетов Python. Если sh.py установлен правильно, вы увидите следующие строки в вашем терминале.
Загрузка / распаковка sh Загрузка sh-1.09.tar.gz Запуск setup.py egg_info для пакета sh Установка собранных пакетов: sh Запуск setup.py install для sh Успешно установленный sh Очистка…
Если это не говорит об этом, вероятно, установка не удалась. Печальный. Если это так, попробуйте проверить ваши разрешения и убедитесь, что вы действительно установили PIP. Если его по-прежнему нет, попробуйте задать вопрос о переполнении стека (которое ранее обсуждалось 10 веб-сайтов, которые могут помочь начинающему программисту с примерами фрагментов кода 10 веб-сайтов, которые могут помочь начинающему программисту с примерами фрагментов кода нашим интернет-редактором Saikat Basu) или MakeUseOf Ответы.
Теперь это отсортировано, создайте новый каталог. Именно здесь мы собираемся разместить весь наш код. Откройте текстовый редактор и создайте файл с именем 'shtest.py'. Здесь мы просто создадим новый файл, а затем перечислим содержимое каталога, в котором мы находимся. Звучит хорошо?
В shtest.py добавьте следующие строки.
#! / usr / bin / env python import sh
sh.touch ('hello') print (sh.ls ('- l'))
Простые вещи здесь. Давайте разберем это.
#! / usr / bin / env python
Эта строка называется hash-bang и указывает вашей оболочке открыть этот файл как программу на Python. Это позволяет вам открывать его, как и скрипт оболочки (./shtest.py), вместо того, чтобы открывать его непосредственно с помощью Python (python shtest.py). Круто, верно?
импорт ш
Эта строка импортирует библиотеку sh, которую мы установили несколько минут назад. Мы не можем продолжать без этого, поэтому убедитесь, что это в вашем коде!
sh.touch ( 'привет')
Возможно, вы знакомы с командой Linux «touch». Это создаст пустой файл с именем файла, которое вы укажете. Здесь мы прямо называем «touch» из Python. Как видите, мы предваряем это «sh.» И передаем ему параметр «привет».
печать (sh.ls ( '- л'))
Возможно, вы знакомы с командой «print», которая выводит текст на консоль. Здесь мы передаем его как sh.ls в качестве параметра. Это вызывает программу Linux ls, которая перечисляет содержимое каталога. Мы также передаем этот параметр '-l', который выводит более подробную информацию о содержимом каталога, в котором мы его выполняем.
Это работает? Посмотреть на себя.
Те из вас, у кого есть ястребиные глаза, заметят, что в этом каталоге есть еще один файл с именем «gitsh.py». Что может быть там?
Подкоманды
У sh.py есть несколько хуков для популярных программ, которые уже есть. К ним относятся git, sudo и значительное количество утилит Linux. Это делает взаимодействие с этими службами из Python еще проще.
Как легко? Что ж, я покажу вам, как инициализировать пустой Git-репозиторий всего за три строки кода. Сначала создайте файл с именем «gitsh.py» и откройте его в своем любимом текстовом редакторе..
Внутри напишите следующие три строки.
#! / usr / bin / env python из sh import git print (git.init ())
Большая часть этого должна быть вам знакома. Вы заметите, что мы импортировали «git» из «sh». Это просто означает, что мы импортировали определенную часть функциональности из модуля, игнорируя при этом все остальное.
После этого мы инициализируем наш репозиторий.
печать (git.init ())
Мы говорили о печати. Вы должны заметить, что мы называем «git» без «.sh». Это потому, что мы специально импортировали функциональность git из библиотеки 'sh'.
И это все. Когда мы запустим gitsh.py, мы должны увидеть следующие строки в вашем терминале.
Заключение
Это было довольно простое введение в sh.py. Если вы хотите узнать больше об этом, ознакомьтесь с официальной документацией здесь. Однако, если вы застряли, не стесняйтесь, напишите мне комментарий ниже, и я постараюсь помочь вам.