Для запуска сценариев не обязательно использовать команду sh. Если добавить еще одну строку в сценарий intro и изменить его разрешения в файловой системе, его можно будет запускать непосредственно, без команды sh, как любые другие команды. Откройте сценарий intro в текстовом редакторе и измените его, как показано ниже:
··echo "Hello World"
··echo $(which neqn)
··cat $(which neqn)
Мы добавили единственную строку в самое начало файла, ссылающуюся на путь в файловой системе
После добавления строки нам еще необходимо установить права доступа к файлу, разрешающие выполнять его как обычную программу. Для этого в окне терминала выполните команды, показанные в листинге 0.6.
Листинг 0.6. Изменение прав доступа к файлу сценария intro, разрешающих его выполнение
··Hello World
··/usr/bin/neqn
··#!/bin/sh
··# Присутствие этого сценария не должно расцениваться как наличие поддержки
··# GNU eqn и groff −Tascii|-Tlatin1 |-Tutf8 |-Tcp1047
··GROFF_RUNTIME="${GROFF_BIN_PATH=/usr/bin}:"
··PATH="$GROFF_RUNTIME$PATH"
··export PATH
··exec eqn −Tascii ${1+"$@"}
··# eof
··$
Для изменения прав доступа мы использовали команду chmod
Мы привели лишь простой пример, чтобы показать, как запускать сценарии командной оболочки и как использовать сценарии для запуска других сценариев. Во многих сценариях в этой книге мы задействуем именно такой метод, и вы еще не раз увидите строки shebang в будущем.
Почему именно сценарии командной оболочки?
Кого-то из вас может беспокоить вопрос: почему для создания сценариев предпочтительнее использовать язык командной оболочки bash вместо более новых и мощных языков, таких как Ruby и Go. Да, эти языки гарантируют переносимость между разными типами систем, но они не устанавливаются по умолчанию. Причина проста: на любой машине с операционной системой Unix имеется командная оболочка, и на подавляющем большинстве из них используется оболочка bash. Как отмечалось в начале главы, компания Microsoft недавно выпустила для Windows 10 ту же самую командную оболочку bash, которая имеется во всех основных дистрибутивах Linux и OS X. То есть теперь сценарии командной оболочки стали еще более переносимыми с минимумом усилий с вашей стороны. Кроме того, сценарии на языке командной оболочки позволяют быстрее и проще решать задачи обслуживания и администрирования системы, чем сценарии на других языках. Оболочка bash все еще далека от идеала, но в этой книге вы узнаете, как смягчить некоторые ее недостатки.
В листинге 0.7 приводится пример маленького, удобного и полностью переносимого сценария командной оболочки (фактически, это однострочная команда на bash!). Сценарий определяет общее количество страниц во всех документах OpenOffice, находящихся в указанной папке, и может пригодиться писателям.
Листинг 0.7. Сценарий для определения общего количества страниц во всех документах OpenOffice в указанной папке
#!/bin/bash
echo "$(exiftool *.odt | grep Page-count | cut −d":" −f2 | tr '\n' '+')""0" | bc
Не будем обсуждать тонкости работы этого сценария — в конце концов, мы только в самом начале пути. Но в общих чертах отметим, что он извлекает информацию о количестве страниц из каждого документа, выстраивает строку из полученных чисел, перемежая их операторами сложения, и передает ее калькулятору командной строки для вычисления суммы. На все про все оказалось достаточно одной строки кода. В книге вы найдете еще множество таких же потрясающих сценариев, как этот, и после некоторой практики он покажется вам невероятно простым!
За дело