Я только что перешел на рабочую станцию UNIX. Моя память о сценариях оболочки Bash исчезла со школы, и я нахожу синтаксис весьма запутанным. Мне интересно, какие еще языки сценариев используются для автоматизации задач. Два самых популярных из тех, о которых я слышал, это Perl и Python.
- Какой язык сценариев наиболее широко используется в реальных магазинах?
- Какой язык сценариев наиболее похож на синтаксис C / C ++?
- Есть ли другой язык сценариев, который я не знаю?
Спасибо за вашу помощь,
Скотт
Ответы:
В какой-то степени это вопрос личных предпочтений. Perl и Python определенно находятся там с точки зрения популярности.
Чтобы ответить на два из трех ваших вопросов, однако:
Моя рекомендация, хотя Python. Его легко читать и писать, он невероятно мощный, и в Интернете есть множество полезных ресурсов для его изучения, не говоря уже о коде, который вы можете копировать и перенаправлять.
источник
sh
делает возможным использование python в качестве языка сценариев оболочки; Однако, если вы столкнетесь с крайними случаями (например, многопроцессорность), вам придется изучить модуль подпроцесса, который я до сих пор считаю слишком сложным для использования.Perl и Python - очевидные ответы; но каждый из них используется для выполнения разных задач:
Что касается того, что изучать прямо сейчас (так как вы, вероятно, не знаете ни одного из них), я бы выучил Python. Это самый простой и полезный способ узнать.
А что касается ответов на ваши вопросы:
Какой язык сценариев наиболее широко используется в реальных магазинах?
Все они, но я полагаю, что Perl имеет здесь небольшое преимущество (то, что он используется в системном администрировании гораздо дольше).
Какой язык сценариев наиболее похож на синтаксис C / C ++?
Perl
Есть ли другой язык сценариев, который я не знаю?
Ruby, Tcsh / Csh, http://en.wikipedia.org/wiki/Interpreted_language
источник
awk для небольших рабочих мест, python для тех, кто больше чем один.
Python (если вы не используете определенные API и другие зависящие от платформы вещи) имеет богатую «стандартную библиотеку», которая доступна на всех платформах, где вы используете версию Python. Это очень хорошо, так как вы можете легко повторно использовать свои сценарии, и это означает, что ваши знания - это хорошая инвестиция, даже если вы измените свою платформу.
В нашей компании мы используем python для всех сценариев, мониторинга и ... и Java для приложений, и мы преуспели в гетерогенной среде.
источник
Я бы сказал, что Perl и Python, вероятно, две лучшие альтернативы. Вы можете многое сделать с помощью sed и awk.
источник
Sh (bourne shell), grep, awk и sed - это всегда хорошая вещь, чтобы снова взять в руки. Perl отлично подходит, если вам не нужно много регулярных выражений текста, и удобство сопровождения не так важно (не говоря о том, что это невозможно). Python; если для вас важна читабельность Я предпочитаю Python, но все эти инструменты хороши для большинства вещей, которые вы в него бросаете. Возможно, вы захотите пересмотреть свои требования к синтаксису c / c ++, но если вы будете придерживаться этого, это не поможет вам в долгосрочной перспективе.
источник
Если вы хотите научиться чему-то с нуля, вероятно, лучше (пере) изучить bash.
Кроме того, Perl и Python популярны в наши дни; Я неравнодушен к Perl, но мой стиль сценариев Perl не сильно изменился с тех пор, как вышел Perl 4.
Я не знаю ни о каких "c-синтаксисоподобных" скриптовых языках.
источник
Perl, руки вниз, если только за невероятный ресурс CPAN ( http://search.cpan.org/ ). Преимущество использования языка сценариев в таком огромном сообществе способствует тому, что вам вряд ли когда-нибудь понадобится что-то изобретать самостоятельно.
Преимущество Perl в том, что он настолько сложен, насколько вам нужно в текущей ситуации. Вы можете обращаться с ним как с простым языком сценариев для быстрого администрирования или одноразовых сценариев, но вы можете использовать объектно-ориентированные концепции или обширные мета-объектные системы, когда вы хотите создавать более крупные и простые в обслуживании приложения (например, демоны, серверы, клиенты).
Различия между языками сценариев не являются достаточно серьезными, чтобы выбрать явного победителя, но вы должны прежде всего посмотреть, насколько легко вам будет найти информацию по темам, которые вас интересуют.
Синтаксис Perl также может быть поразительно близок к C, если только вы можете обойти отсутствие ввода и сигил; расширенное использование Perl будет естественным, если вы в конце концов изучите сильные стороны языка.
И для скептиков в области читабельности: вы можете писать трудный для чтения код на любом языке. Если вы посмотрите на свой код 4 месяца назад и не можете его понять, вы делаете что-то не так.
ps Это сообщение было заполнено ссылками на различные дружественные для администрирования модули на CPAN, но очевидно, что новые пользователи могут публиковать только одну ссылку, поэтому используйте эту ссылку CPAN для поиска таких вещей, как «CVS», «SVN», «Cron» и «Moose» ( обширная объектная система)
источник
источник
[общие советы по написанию сценариев см. в других ответах]
Этот ответ касается использования программ командной строки, а также их больших цепочек.
Для запуска цепочек программ CLI и, возможно, для многих цепочек в последовательности, bash является самым простым. Perl может делать то же самое, но язык гораздо сложнее выучить, он гораздо сложнее, и, как отмечают многие, легко написать понятный Perl.
Если вы перебираете файлы и параметры, bash проще всего начать, поскольку вы можете создать прототип в оболочке, затем скопировать в скрипт и добавить несколько массивов и циклов с минимальными издержками.
Примеры того, что я имею в виду:
В bash легко обернуть это в несколько циклов по некоторым из этих параметров. Тем не менее , код становится трудно читать, когда сценарий занимает более нескольких десятков строк. --- представьте себе 30 наборов команд (по несколько строк в каждой) для тридцати различных графиков данных ---
Perl и Python могут быть лучше для больших сценариев, потому что они имеют более чистый синтаксис для циклов и переменных, но команды bash должны быть сгенерированы как строки, запущены как подпроцессы, а stdin зафиксирован как stdout. Это может быть сделано, но не может полностью заменить нативную среду оболочки.
Если бы у снарядов был лучший язык, всего этого можно было бы избежать.
источник
Наиболее используемый: Perl, в основном по историческим причинам. Python широко доступен во всех дистрибутивах Linux и BSD (он даже установлен на Mac OSX) и гораздо приятнее изучать / программировать. Конечно, как только вы получите синтаксис, Bash станет проще для всего, что вы можете сделать в командной строке. В конце концов, это командная строка.
Синтаксис C: есть csh , но вы можете легко установить TCC и использовать настоящий C в качестве языка сценариев, скомпилированного из исходного кода за меньшее время, чем при запуске других языков.
другие языки сценариев: много! Lua , Ruby , JavaScript ...
источник
Вы должны использовать комбинацию всех тех, где это уместно. Мне действительно не нравится Perl (читабельность), но он хорош для многих вещей. С другой стороны, Python был для меня чем-то новым с точки зрения системного администрирования, пока мне не пришлось управлять (и все еще должен) несколькими машинами KVM. Запуск, остановка, сохранение, загрузка, миграция всех этих машин с помощью сценария стали реальностью после 1 часа возни с привязками python в libvirt.
И последнее, но не менее важное: я бы не стал использовать perl или python, если бы мне приходилось, скажем, каждый вечер выгружать все базы данных с сервера mysql (каждая база данных в своем собственном файле дампа), архивировать их и rsync на другой сервер. Почему ? Потому что это быстрее и проще написать в bash :)
В конце концов, вы должны использовать любой язык, который лучше всего соответствует вашей текущей задаче, и не использовать только данный язык сценариев только потому, что он вам больше нравится.
источник
Мне нравится рубин Это просто и легко для программирования. Есть отличная книга по системному администрированию с использованием ruby .
Ruby используется в нескольких системах управления конфигурациями (capistrano, chef, puppet) и в последней версии metasploit.
Вы можете использовать rush , замену оболочки Unix с синтаксисом ruby и делать такие вещи:
источник
Пример с одной строкой в Ruby:
Я бы использовал рубин.
Сравните с sh, это современно и мощно.
Сравните с python, это согласованность, одна редакция, один менеджер пакетов. И мне не нравится синтаксис отступа.
Сравните с Perl, немного старой школы, и синтаксис для меня слишком сложен.
источник