Сценарии альтернатив сценариям оболочки Bash

Проверьте Netstat Page CommandLineFu на некоторые полезные способы использовать netstat в ударе.

16
задан 4 September 2009 в 18:34
15 ответов

До некоторой степени это - вопрос персонального предпочтения. Perl и Python определенно там с точки зрения популярности.

Отвечать на два из Ваших трех вопросов, хотя:

  1. Я предположил бы, что удар наиболее широко используется, вероятно, сопровождается жемчугом. Просто предположение, хотя, не знайте, сделал ли кто-либо обзор.:)
  2. Там существует огромное количество языков сценариев.:)

Моей рекомендацией является Python все же. Легко читать и записать, очень мощный, и существуют тонны полезных ресурсов в сети для изучения его, не говоря уже о коде, который можно скопировать и перецель.

12
ответ дан 2 December 2019 в 20:40
  • 1
    Я второй это. Я нахожу Python легким учиться и способный сделать что-либо, что я бросаю в него как it' s в старые добрые дни ОС/2 с REXX. –  slovon 4 September 2009 в 18:47
  • 2
    +1 для Python... питание C в языке сценариев. Можно сделать сценарии столь простыми или сложными, как Вы хотите ;) –  KFro 5 September 2009 в 02:01
  • 3
    на не системы NT модуль Python sh делает Python использования как язык сценариев оболочки доступным; Однако, если Вы сталкиваетесь с пограничными случаями (как многопроцессорная обработка) you' ll должны изучить модуль подпроцесса, который я по сей день нахожу слишком трудно, чтобы просто использовать. –  ThorSummoner 13 November 2014 в 01:20

Perl и Python, очевидно, ответы; но каждый из них используется для выполнения различных задач:

  1. Bash - Передает самое легкое для изучения. Со сценариями Bash Вы команды выполнения и управляйте выводом.
  2. Python - Второй самый легкий учиться. Python является путем, более полезным, чем Bash, так как можно использовать Python для записи полных программ, и он хорошо поддерживается сообществом. Python также чрезвычайно читаем и легок отредактировать несколько месяцев спустя.
  3. Perl - лучший из трех (для сценариев), но легко самая крутая кривая обучения. Имеет очень хорошую поддержку регулярного выражения (который является главной причиной, она все еще используется сегодня), и Вы будете, вероятно, сталкиваться с большим количеством сценариев Perl со временем. Основными проблемами с Perl является удобочитаемость кода - спустя месяцы после написания кода, Вы не сможете выяснить то, что это делает. Таким образом, необходимо прокомментировать в большой степени.
  4. Awk/Sed - Оба очень полезные, но оба очень трудно для изучения. Я предложил бы заняться, они длятся, если Вы не способны к шаблонам.

Касающееся, какой учиться прямо сейчас (так как Вы, по-видимому, не знаете ни одного из них), я изучил бы Python. Это является самым простым и самым полезным знать.

И что касается ответов на Ваши вопросы:

Какой язык сценариев наиболее широко используется магазинами реального мира?

Все они, но я предположил бы, что Perl имеет определенное преимущество здесь (являющийся этим, это использовалось в системном администрировании для намного дольше).

Какой язык сценариев наиболее тесно напоминает синтаксис C/C++?

Perl

Есть ли другой язык сценариев, о котором я не знаю?

Ruby, Tcsh/Csh, http://en.wikipedia.org/wiki/Interpreted_language

5
ответ дан 2 December 2019 в 20:40
  • 1
    При помещении некоторого времени в жемчуг можно записать совершенно читаемый жемчуг. Люди, которые пишут запутанный код, слишком быстры для обвинения Perl в их отказах. –  Cian 4 September 2009 в 19:10
  • 2
    I' m, только говоря на основе событий как системный администратор; I' ve должен был поддержать код, другие люди записали, что это было чертовски почти невозможно считать. Обычно я заканчиваю тем просто, что переписал код в Python. –  Michael Pobega 4 September 2009 в 19:25

awk для небольших заданий, Python для больше, чем остроты.

Python (если Вы не используете определенные API и другие зависимые вещи платформы) имеет богатую "стандартную библиотеку", которая доступна на всех платформах, где Вы получаете используемую версию Python. Это очень хорошо, поскольку Вы можете снова использовать свои сценарии легко и подразумеваете, что Ваше знание является хорошими инвестициями даже при изменении платформы.

В нашей компании мы используем Python для всех сценариев, контроля... и Java для приложения, и мы - богатый в разнородной среде.

3
ответ дан 2 December 2019 в 20:40

Я сказал бы, что жемчуг и Python являются, вероятно, двумя лучшими альтернативами. Можно сделать много с sed и awk также.

1
ответ дан 2 December 2019 в 20:40

Sh (оболочка Bourne), grep, awk и sed всегда является хорошей вещью справиться снова. Perl превосходен, если Вы wan't, много текста regexing и пригодности для обслуживания не настолько важно (не говорящий, что это не возможно). Python; если удобочитаемость важна для Вас. Моим предпочтением является Python, но все эти инструменты хороши для большей части вещи, которую Вы бросаете в него. Вы могли бы хотеть пересмотреть Вас c/c ++, требование синтаксиса, сохраняя застрявшим на нем не поможет Вам в конечном счете.

1
ответ дан 2 December 2019 в 20:40
  • 1
    Спасибо Martin. I' ve заметил (от образцов в сети), тот Perl имеет замечательное сходство с PHP (хотя I' m уверенный это был Perl перед PHP, исторически). Действительно ли это - справедливый оператор? –  Scott Davies 4 September 2009 в 18:55
  • 2
    PHP 1.0 был сценарием жемчуга, таким образом, it' s не совпадение :) –  Bill Weiss 5 September 2009 в 00:43

Если Вы надеетесь изучать что-то с нуля, это является, вероятно, лучшим к (пере-), изучают удар.

Кроме того, жемчуг и Python популярны в эти дни; я неравнодушен к жемчугу, но мой стиль сценариев жемчуга не изменился очень, так как Perl 4 отсутствовал.

Я не знаю ни о каких "подобных синтаксису C" языках сценариев.

1
ответ дан 2 December 2019 в 20:40

Perl, передает, если только для невероятного ресурса CPAN (http://search.cpan.org/). Преимущество использования языка сценариев с таким крупным сообществом содействия - то, что Вы будете когда-либо должны вряд ли изобрести что-то сами.

Perl также обладает преимуществом того, чтобы быть столь сложным, как Вам нужно для текущей ситуации. Можно рассматривать его как простой язык сценариев для быстрого администрирования или единственных сценариев цели, но можно использовать объектно-ориентированные понятия или обширные системы метаобъекта, когда Вы хотите создать больше, легкий поддержать приложения (как демоны, серверы, клиенты).

Различия среди одних только языков сценариев не достаточно серьезны для выбора явного победителя, но необходимо, прежде всего, посмотреть на то, насколько легкий это будет для Вас для нахождения информации о темах, о которых Вы заботитесь.

Синтаксис Perl может также быть поразительно близко к C, пока можно обойти отсутствие ввода и символов; усовершенствованное использование жемчуга произошло бы естественно, поскольку Вы в конечном счете изучаете преимущества языка.

И для голосующих против на передней стороне удобочитаемости: можно записать трудно для чтения кода на любом языке. Если Вы оглядываетесь назад на свой код от 4 месяца назад и не можете понять это, Вы делаете что-то не так.

p.s. Это сообщение было заполнено ссылками на различное администрирование дружественные модули на CPAN, но по-видимому новые пользователи могут только отправить одну ссылку, так использование, которое CPAN связывают для поиска вещей как 'CVS' 'SVN' 'Крон' и 'Американский лось' (обширная объектная система)

1
ответ дан 2 December 2019 в 20:40
  1. большинство используемое: Perl, главным образом по историческим причинам. Python широко доступен во всем Linux и дистрибутивах BSD (он даже установлен на MAC OSX), и намного более хорошо изучать/программировать. Конечно, после того как Вы получаете синтаксис, Bash более прост почти для чего-либо, что Вы могли сделать в командной строке. В конце концов, это - командная строка.

    • Синтаксис C: существует csh, но можно легко установить TCC и использовать реальный C в качестве языка сценариев, скомпилированного из источника за меньшее время, чем другой запуск языков.

    • другие языки сценариев: партии! Lua, Ruby, JavaScript...

0
ответ дан 2 December 2019 в 20:40

Необходимо использовать комбинацию всех тех, где это является соответствующим. Мне действительно не нравится жемчуг (удобочитаемость), но это хорошо для большого количества вещей. Python, с другой стороны, был чем-то плохо мне знакомым с точки зрения системного администрирования, пока я не должен был управлять (и все еще иметь к), несколько машин KVM. Запуск, останавливаясь, сохраняя, загружаясь, перемещая все те машины с помощью сценария стал действительностью после 1 часа бездельничания с привязкой Python libvirt.

Наконец, что не менее важно, я не использовал бы жемчуг или Python, если я должен, скажем, вывести все базы данных с mysql сервера каждую ночь (каждая база данных в своем собственном файле дампа), смолить их и rsync это к некоторому другому серверу. Почему? Поскольку это быстрее и легче записать это в ударе :)

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

0
ответ дан 2 December 2019 в 20:40

Мне нравится рубин. Это просто и легко к программе с. Существует превосходная книга по системному администрированию с помощью рубина.

Ruby используется в нескольких системах управления конфигурацией (capistrano, шеф-повар, марионетка) и последняя версия metasploit.

Можно использовать порыв, замену для оболочки Unix с рубиновым синтаксисом и сделать вещи как это:

local = Rush::Box.new('localhost') 
remote = Rush::Box.new('my.remote.server.com')     
local_dir = local['/Users/adam/myproj/']
remote_dir = remote['/home/myproj/app/']

local_dir.copy_to remote_dir
remote_dir['**/.svn/'].each { |d| d.destroy }
0
ответ дан 2 December 2019 в 20:40
  • 1
    Спасибо chmeee. Я понятия не имел, что Вы могли использовать Ruby для системного администратора - я всегда думал, что это было веб-ориентированным. I' m поиск чего-то используемого в большинстве организаций. Действительно ли справедливо сказать, что Ruby для системного администратора является все еще слишком новейшим? –  Scott Davies 4 September 2009 в 18:58
  • 2
    Shell/Perl является только двумя языками, которые можно надежно найти установленным везде. Python' s, вероятно, следующее наиболее распространенное, с рубином, выполняющим очень удаленную четверть (на самом деле, вероятно, пятый, позади awk). –  Cian 4 September 2009 в 19:12
  • 3
    @ScottDavies PHP и ASP.net являются единственными веб-ориентированными языками, о которых я знаю; даже JavaScript, разработанный для выполнения исключительно в сети, назрел мимо того, чтобы быть lackie для проверки формы. Однако можно диспетчеризировать HTML с любым языком, даже удар , по-видимому. –  ThorSummoner 13 November 2014 в 01:24
  • Ruby
  • Python
  • Go - кроссплатформенный язык, сценарии упоминаются как одна из сильных сторон Go .
  • Node.js - см. Grunt.js, Gulp.js. Многие проекты сейчас используют Node.js в качестве инструмента автоматизации оболочки.
  • Perl
1
ответ дан 2 December 2019 в 20:40

[общие советы по созданию сценариев см. В других ответах]

Этот ответ касается использования программ командной строки, а также их больших цепочек.

Для запуска цепочек программ CLI , и, возможно, несколько последовательностей, bash - самый простой. Perl может делать то же самое, но этот язык намного труднее выучить и он намного сложнее, и, как многие отмечали, легко написать понятный Perl.

Если вы перебираете файлы и параметры , bash проще всего запустить b / c, вы можете создать прототип в оболочке, затем скопировать в сценарий и добавить несколько массивов и циклов с минимальными накладными расходами.

Примеры того, что я имею в виду:

$ cat input.dat | numerical_model source_data ${SRC} grid_size ${GRID_SIZE} param1 ${P1} param2 ${P2} | tee ${OUTPUT} | plotter title ${TITLE} ylabel ${YLABEL} xlabel ${XLABEL} > ${OUTPUT_FIG}
$ cat ${OUTPUT} | stats_cmd bin_size ${BINSIZE} dist_type ${DIST_TYPE} | tee ${OUTPUT_STATS} | plotter plot_type ${PLOT_TYPE} title ${TITLE_STATS} > ${OUTPUT_FIG_STATS}

В bash легко обернуть это в несколько циклов по некоторым из этих параметров. Однако код становится трудночитаемым, если длина сценария превышает несколько десятков строк. --- представьте себе 30 наборов команд (по несколько строк в каждом) для тридцати различных графиков данных ---

Perl и Python могут быть лучше для больших скриптов, потому что они имеют более чистый синтаксис для циклов и переменных, но команды bash должны быть генерируются как строки, запускаются как подпроцессы, а stdin, stdout фиксируются. Это можно сделать, но это не может полностью заменить родную среду оболочки.

Если бы оболочки имели лучший язык, всего этого можно было бы избежать.

1
ответ дан 2 December 2019 в 20:40

Пример однострочников на Ruby:

> echo 'Shell is the best!' | ruby -pe 'gsub("Shell", "Ruby")' 

Ruby is the best!

> printf "foo\nbar\nbaz\n" |  ruby -ne 'BEGIN { i = 1 }; puts "#{i} #{$_}"; i += 1'

1 foo
2 bar
3 baz

Я бы использовал ruby.

Сравните с sh, это современно и мощно.

Сравните с python, это согласованность, одна редакция, один менеджер пакетов. И мне не нравится синтаксис отступов.

Сравните с Perl, немного старой школы, и синтаксис слишком сложен для меня.

0
ответ дан 2 December 2019 в 20:40

Чтобы добавить еще одну интересную опцию в кучу, проверьте Closh

https://github.com/dundalek/closh

Это замена bash, которая запускает полный Clojure(Script). Вы можете использовать все краткие и мощные инструменты Clojure в своей командной строке. Это все еще молодой проект, но довольно интересная и привлекательная альтернатива ..недоброму синтаксису bash.

0
ответ дан 20 August 2020 в 17:25

Чтобы добавить еще один язык, я настоятельно рекомендую Раку. Raku (первоначально Perl 6) должен был стать следующей версией языка Perl, но в итоге отделился из-за серьезных изменений дизайна, направленных на то, чтобы сделать его более современным.

Несколько изменений:

  • Используется . вместо ->
  • В языке удалены некоторые странные макеты пробелов
  • Несколько настроек реализации, чтобы сделать язык более разумным

https://raku.org

0
ответ дан 18 March 2021 в 18:07

Теги

Похожие вопросы