Какой язык сценариев лучше?
Для написания сценариев для автоматизации процессов на платформе Linux, какой язык сценариев будет лучше? Shell script, Perl или Python или что-нибудь еще? Я новичок во всех них. Итак, я просто думаю, к кому идти?
Ответы
Ответ 1
Ответ: что бы ни было лучше всего подходит для работы!
Мое правило,
Bash - для короткого script, которому может понадобиться цикл for, чтобы что-то повторить.
Perl - все, что связано с обработкой текста или обработкой файлов, особенно если это один. Просто сделайте грязный противный perl script и сделайте с ним
Python. Если это то, что вы захотите сделать снова или что-то очень похожее. Тогда, по крайней мере, у вас есть шанс повторно использовать script.
Ответ 2
Идите для всех трех, начинайте с bash/awk/sed plus fileutils (grep, find и т.д.), а затем переместите иерархию абстракций с помощью perl и python.
Таким образом, вы сможете сами решить, какой из них лучше всего подходит вашим потребностям. Я говорю, начинаем с bash и друзей, потому что они вездесущие, на некоторых машинах не будет установлен perl или python, и вы будете чувствовать себя беспомощными там, особенно в традиционной земле unix (то есть не linux)
Ответ 3
При выборе языка сценариев для автоматизации вашей среды linux/unix самая важная вещь, на мой взгляд, - это... ваша замена: -)
Под этим я подразумеваю следующих/других системных администраторов, которым, возможно, придется поддерживать ваши сценарии. В настоящее время я работаю в среде, где ведущий парень Unix - настоящая голова script, но он в основном сдерживал себя использованием bash, с некоторыми perl и vbscript файлами, брошенными для удачи. По крайней мере, это заставило меня почистить мой перл.
Соглашаясь с другими комментариями здесь, мое предложение состояло в том, чтобы осваивать bash - по возможности сделать как можно больше в bash, поскольку большинство людей это знает, и может поддерживать/отлаживать его. И он будет самым портативным. Использовать с sed и awk особенно эффективно.
Когда у вас это освоено, вы можете вернуться сюда и спросить: "Какой язык сценариев я должен узнать после bash?": -)
JB
Ответ 4
Я бы рекомендовал bash, awk и sed.
bash - http://tldp.org/LDP/abs/html/
awk - http://www.uga.edu/~ucns/wsg/unix/awk/
http://www.grymoire.com/Unix/Awk.html
sed - http://www.ce.berkeley.edu/~kayyum/unix_tips/sedtips.html
http://www.grymoire.com/Unix/Sed.html
Только некоторые идеи.
Ответ 5
Я думаю, это зависит от того, насколько сложны задачи, которые вы хотите автоматизировать. Лично я всегда встречался с shell-скриптами, который позволяет вам вызывать awk, sed, grep, find, ls, cat и т.д., Которые могут быть объединены вместе, чтобы сделать практически все, что вы можете достичь, используя perl или python. С другой стороны, если процессы, которые вы хотите автоматизировать, сложны (например, не только линейная последовательность шагов), вы, вероятно, обнаружите, что писать скрипты в perl или python (или даже ruby!) Намного быстрее и делает их легче поддерживать.
Ответ 6
Я использую Perl для чего-либо, кроме чрезвычайно простых скриптов.
Я также 'use warnings'
, 'use strict'
, избегаю обратных ссылок, система вызовов как 'system($command, @and_args)'
. И потому, что мне нравится ремонтировать: IPC:: Run (для труб), File:: Fu (для имен файлов, tempfiles и т.д.), YAML (для конфигураций или разных данных) и Getopt:: Helpful (так что я могу помнить какие были варианты.)
Ответ 7
Зависит от сложности и проблемной области задачи.
Bash скрипты бывают быстрыми и грязными для простых задач автоматизации системы. Для более сложных вещей, чем перемещение файлов вокруг и запускаемых команд, я бы лично сказал, что Perl находится в очереди в качестве инструмента автоматизации defacto sys-admin goto. Чтобы больше сосредоточиться на повторном использовании кода и удобочитаемости/ремонтопригодности, я бы хотел поднять его до Python или Ruby.
PHP также может использоваться для автоматизации задач, однако он не широко принят для этой цели в моем опыте.
На самом деле, на каком языке вас больше всего интересует обучение, большинство из них можно использовать для автоматизации, помимо многих других.
Ответ 8
Я предпочитаю shell-скрипты только для очень маленьких задач. Написание надежных сценариев оболочки требует большого количества знаний о возможных ловушках, которые вы только изучаете. Но обучение даже основам значительно повысит вашу производительность!
Если мне нужна сложная логика, я обычно использую Python. По комплексу я имею в виду все, что имеет более двух, если -statements =)
Perl в порядке, но следует предупредить, что многие из изученных perlisms не применимы нигде.
Python и Ruby примерно эквивалентны. Я бы рекомендовал вам хорошо изучить один из них и проверить учебник на другом. Я предпочитаю Python, но это действительно сводится к личным предпочтениям.
Подводя итог: Изучите основы сценариев оболочки. Узнайте, по крайней мере, Python или Ruby.
Ответ 9
Я всегда получал Python. Это должно позволить вам сделать что угодно. Однако для небольших задач я использую сценарии оболочки.
Ответ 10
Обычно я бы сказал тот, который вы знаете лучше всего, который может достичь желаемых результатов. Как и во всех религиозных войнах, и после изучения большого количества языков вы понимаете, что можете делать большинство вещей на большинстве языков (обратите внимание, что я сказал больше всего). Я использую Perl. Возможно, это не так актуально, как Python или Ruby, но имеет огромную библиотечную поддержку от CPAN. И я еще ничего не нашел в этом. Когда я это сделаю, я посмотрю на другие языки, чтобы узнать, какой из них можно заполнить.
Если бы я начал сегодня, возможно, я бы выбрал Python или Ruby, но я не знаю достаточно о них, чтобы вынести решение. Кто-нибудь из ваших друзей/коллег знает языки сценариев. Это может помочь вам в массовом порядке, поскольку поддержка при изучении нового языка очень важна.
Удачи.
Ответ 11
Ну, вот так:
Perl не самый удобный для пользователя язык сценариев, но у него есть CPAN (Comprehensive Perl Archive Network), который содержит тысячи библиотек, которые реализуют почти все, что вы можете придумать, и Perl действительно эффективен, когда дело доходит до обработки текста. Недостатком было бы то, что код perl довольно сложно поддерживать (если вы не очень хорошо это знаете).
Python - это язык сценариев, который становится все более популярным среди сценаристов. У него нет сообщества, такого как CPAN (пока), но он более читабельный, и его легче поддерживать. Это так же быстро, как perl.
Ruby - это новейшая тенденция в языках сценариев. Ruby - полный OOP, что означает, что все является объектом. Его преимущество в том, что код очень читабельен, и его довольно легко узнать, если вы новичок. Основным недостатком является скорость его выполнения, которая выглядит как s * x.
Ответ 12
Это зависит от того, какой тип автоматизации вы делаете, например, если он тестирует аутоиммутацию. Perl предлагается, потому что Perl - это очень мощные модули расширения через CPAN, онлайн-ресурс модуля Perl. Если вам нужен только удобный инструмент для завершения простого исходного файла, awk очень удобен. Если вы планируете использовать сценарии для автоматизации большого проекта, Perl - лучший выбор с большим количеством функций.
Снова Python был разработан с самого начала как объектно-ориентированный язык. В Perl 5 есть некоторые функции o-o, но мне кажется, что это неудобная модификация. Python имеет хорошо реализованные функции oo для множественного наследования, полиморфизма и инкапсуляции. В целом мне кажется, что Python доминирует над Perl в большинстве приложений, за исключением довольно коротких оболочек - script видов приложений, и там они примерно сопоставимы.
Ответ 13
В зависимости от того, что вы хотите сделать, я регулярно использую все из них:
- Shell для простой пакетной обработки команд, возможно, с помощью цикла или оператора if.
- Perl, когда я собираю файлы и делаю некоторые замены текста и суффиксы.
- Python, когда требуется больше логики.
В разделе * nix вы должны использовать правильный инструмент для правильной работы, что может быть трудным для новичка, так как так много вещей, чтобы учиться (через 15 лет как пользователь * nix я все еще нахожу новые вещи). Моя рекомендация - быстро взглянуть на все языки, чтобы увидеть, что они могут сделать, а затем начать с использования оболочки для всего, когда ваши скрипты становятся неуклюжими, перемещая их на что-то еще.
Ответ 14
Просто запишите свои команды один за другим, поместите его в файл и запустите этот файл с помощью
promp> bash file
и у вас есть первая автоматизация. Затем узнайте о bash переменных, циклах и структурах управления.
Ответ 15
I второй Python - мощный, простой, эффективный и... на самом деле довольно забавный, по сравнению с perl или bash. Кроме того, если вы это знаете, вы найдете другие виды использования, которые используются во многих проектах.
И не только как "классический" язык сценариев, возьмите, например, скрученный проект. Это правда для Perl тоже, я думаю, но мне нравится Python лучший порядок величин себя
Нижняя строка, хотя, как было сказано, beofre, убедитесь, что у вас есть правильный инструмент для работы...
Ответ 16
Если бы мне пришлось выбрать один, это был бы AWK. Он легкий, имеет небольшую кривую обучения и имеет множество полезных функций, таких как index и substr.
Ответ 17
Если вы нацелены на то, чтобы простая программа script "контролировала" другую (программу командной строки, конечно) программу, вам следует рассмотреть Tcl/Tk, особенно ее диалект ожидать - они просты и ориентированы на эту цель - очень легко создать script, который управляет ftp и даже делает su с ними!
Awk очень приятно обрабатывать текстовые файлы - не так сильно, как perl, но гораздо более простой и понятный (и без ужасного синтаксиса).
Конечно, ваш пробег может отличаться, поэтому я думаю, лучший ответ - спросить вас: для чего вы хотите писать сценарии? И тогда: Вы знакомы с любым языком script? Ответы на эти вопросы укажут вам на язык сценариев, который вы должны использовать, в соответствии с плюсами/минусами каждого из них и их главной целью.
Ответ 18
Если вы хотите минималистичное, компактное и быстрое решение (быстрее, чем Python/Ruby), тогда → перейдите на язык сценариев LUA:-)
Однако скорость Lua и компактность кода достигаются с помощью релятивистского малогабаритного ядра Lua, поэтому, если вы хотите включить "батареи" (ака очень большие "стандартные" библиотеки), то Lua не для вас. В противном случае, ребята, которые приходят из мира C/С++, очень любят скорость Lua: -)
p.s.
Тест Lua vs Ruby 1.9 (вы также можете посмотреть Lua Vs Python 3):
http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=lua&lang2=yarv
Ответ 19
В Linux? Выбирай яд, в основном. Мне нравится Python, другие Ruby, другие Perl. Выберите один и пойдите для него.: -)
Ответ 20
Я бы сказал, Python - он имеет очень высокую читаемость, он прост (нет фигурных скобок, ключевых слов как можно ближе к английскому) и вы можете делать почти все в нем, от простых до очень сложных вещей, Он также популярен и интересен для кода.
Ответ 21
Это может показаться немного странным, я использовал bash более 10 лет. Я начал использовать PHP5, и сначала было сложно, но теперь у меня есть гораздо лучшая база для многократного использования.
Я бы не стал рекомендовать его в качестве отправной точки!