Вы должны знать, что в отличие от других языков сценариев или языков программирования сценарии оболочки в значительной степени зависят от приложений командной строки, предоставляемых вам операционной системой. Это означает, что, поскольку 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 - лучший выбор. Как только у вас появится реальная логика программирования (что-либо, включающее много объектов или чисел), вам, вероятно, следует поискать другие языки сценариев.