5

Я пользователь Mac и веб-разработчик, и я хотел бы создать автоматизированные инструменты для управления моим рабочим процессом. Скажите одну команду, чтобы запустить тип веб-сайта.

Какие части сценариев оболочки bash я должен изучить? Существует так много:

  • СЕПГ
  • AWK
  • Grep
  • находить

Или я должен научиться чему-то еще, чтобы архивировать автоматизацию командной строки для моих веб-проектов?

3 ответа3

11

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

если вы не знакомы с оболочкой и не чувствуете необходимости в ее изучении, вам лучше использовать ваш любимый язык веб-сценариев (PHP, Ruby, Python) из командной строки. Преимущество в том, что, вероятно, более согласованный API-интерфейс для всей библиотеки функций.


В самом bash учись

  • Условия (включая использование test / [ ... ] для защитного программирования при обработке файлов)
  • Loops
  • Переменная присваивание
  • функции
  • Перенаправление ввода и вывода и трубопровод
  • Вызов программ и функций оболочки (включая способ захвата их вывода и считывания возвращаемых значений), как регулярные вызовы, так и с подстановкой команд.
  • Опции. Я люблю set -u и отказываюсь работать со сценариями, которые не могут с этим справиться.
  • Типы переменных, массивы, глобализация

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

По моему опыту * ни один раздел справочной страницы bash не нужен. Делайте это достаточно долго, и все там как-то применимо (и если это просто для ответа на вопросы по SU).


Некоторые (по моему опыту) часто используемые программы в сценариях оболочки:

  • Обработка файлов и навигация: find , ls , cd , rm , mv , cp , chmod , chown , chflags , dd , ln
  • Выполнение программы: xargs , find -exec
  • Преобразование данных: sort , wc , cat , sed , awk , grep

Специфичные для OS X, вероятно, следующие:

launchctl open dscl PlistBuddy plutil osascript automator networksetup systemsetup growlnotify (если у вас есть Growl)

И, конечно, в зависимости от того, что вы хотите сделать, есть и другие ...

date (вариант BSD - сильно отличается от GNU), mount , fsck , kill , sendmail


Некоторые, например, netcat требуют установки сторонних пакетов, например, с использованием Homebrew, MacPorts или Fink.

Если ваши сценарии интенсивно используют эти программы командной строки или могут быть написаны таким образом, сценарии bash - хороший способ автоматизировать это.


Поскольку вы работаете в OS X, посмотрите также на AppleScript (через AppleScript Editor) и Automator. И то, и другое можно комбинировать со сценариями оболочки для создания довольно хорошо интегрированных сценариев. Если вы ищете для управления другими приложениями OS X (например, ваш веб-браузер), это необходимо. Хотя вы можете открывать URL-адреса в разных браузерах, используя open в командной строке, для извлечения данных, например, из загруженных вкладок, требуется Automator или AppleScript.

Кроме того, другие языки сценариев, такие как ruby , python , также предварительно установлены на вашем Mac и могут использоваться для простого создания простых вспомогательных утилит. Это скорее замена bash и обычных утилит UNIX. Это зависит от характера того, что вы хотите сделать.

Если вы хотите переместить несколько файлов по вашему диску, сжать их и передать по SSH, вероятно, bash - лучший выбор. Как только у вас появится реальная логика программирования (что-либо, включающее много объектов или чисел), вам, вероятно, следует поискать другие языки сценариев.

1

Я разместил список (OS X и bash-centric) закладок в OS X Terminal Tutorials - Super User.

Один из лучших способов изучения языка сценариев - это изменение существующих сценариев. Посмотрите на такие вещи, как:

Несколько книг со свободно загружаемыми примерами кода:

0

Я думаю, что для вас достаточно простого использования порядка 20-25 команд, а базовая архитектура Linux обязательна. В зависимости от вашего типа работы вы можете начать изучать только следующие команды bash:

vi, ls, find, sed, awk, grep, cat, запуск и завершение работы службы, netstat, nmap, traceroute, ping, mv, cp, rm и т. д.

Это наиболее распространенные команды, которые используются в bash.

Кроме того, вы можете следовать этому руководству:

http://www.faqs.org/docs/bashman/bashref_toc.html

http://blog.emson.co.uk/2009/06/18-useful-bash-scripts-for-web-developers/

Также вам необходимо изучить базовые сценарии оболочки для автоматизации некоторых процессов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .