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