Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - [6]

Шрифт
Интервал

>Аналогично можно открыть доступ к своей библиотеке сценариев командной оболочке. Для этого в своем домашнем каталоге создайте папку, куда будут помещаться разрабатываемые сценарии. Затем добавьте ее в переменную PATH в сценарии входа, чтобы упростить вызов сценариев из нее.

Чтобы выяснить путь к домашнему каталогу, дайте команду echo $HOME, которая выведет в окне терминала полный путь. Перейдите в указанный каталог и создайте папку для разрабатываемых сценариев (мы рекомендуем назвать ее scripts). Затем добавьте эту папку в свой сценарий входа, для чего откройте файл сценария в текстовом редакторе и добавьте в начало файла следующую строку, заменив /path/to/scripts/ на путь к папке с вашими сценариями:

>export PATH="/path/to/scripts/:$PATH"

Затем вы сможете запустить любой сценарий из этой папки как обычную команду.

Запуск сценариев командной оболочки

К настоящему моменту мы уже воспользовались некоторыми командами, такими как echo, which и cat. Но мы использовали их по отдельности, а не вместе, то есть не в составе сценария. Давайте напишем сценарий, который выполнит их все последовательно, как показано в листинге 0.4. Этот сценарий выведет Hello World, затем путь к сценарию neqn, который по умолчанию должен быть доступен в оболочке bash. Затем использует этот путь для вывода содержимого сценария neqn на экран. (На данный момент содержимое neqn для нас не важно; мы просто выбрали первый попавшийся сценарий для примера.) Этот пример наглядно демонстрирует использование сценария для выполнения группы команд по порядку, в данном случае, чтобы увидеть полный путь к сценарию и содержимое сценария.

Листинг 0.4. Содержимое нашего первого сценария командной оболочки

>echo "Hello World"

>echo $(which neqn)

>cat $(which neqn)

Откройте текстовый редактор (в Linux, например, большой популярностью пользуются редакторы Vim и gedit, а в OS X — TextEdit) и введите содержимое листинга 0.4. Затем сохраните сценарий с именем intro в своем каталоге для разрабатываемых сценариев. Сценарии командной оболочки не требуют специального расширения файлов, так что сохраните файл с именем без расширения (или, если пожелаете, добавьте расширение .sh, но в этом нет необходимости). Первая строка в сценарии вызывает команду echo, чтобы просто вывести текст Hello World. Вторая строка чуть сложнее; она использует команду which для поиска файла сценария neqn и затем с помощью echo выводит найденный путь на экран. Чтобы выполнить такую связку команд, где одна передается другой в виде аргумента, bash использует подоболочку, в которой выполняет вторую команду и сохраняет ее вывод для передачи первой. В нашем примере подоболочка выполнит команду which, которая вернет полный путь к сценарию neqn. Затем этот путь будет передан как аргумент команде echo, которая просто выведет его на экран. Наконец, тот же трюк с подоболочкой используется для передачи пути к сценарию neqn команде cat, которая выведет содержимое сценария neqn.

Сохраните файл и запустите сценарий в окне терминала. Вы должны увидеть результат, показанный в листинге 0.5.

Листинг 0.5. Результат запуска нашего первого сценария командной оболочки

>··$ sh 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

>··$

Запуск сценария производится с помощью команды sh, которой имя сценария intro передается как аргумент. Команда sh обойдет все строки в файле и выполнит их, как если бы это были команды bash, введенные в окне терминала. Как показано в листинге 0.5, сначала на экран выводится строка Hello World , затем путь к файлу neqn

. В заключение выводится содержимое файла neqn
; это исходный код короткого сценария командной оболочки neqn, хранящегося на вашем жестком диске (в OS X, по крайней мере, в Linux содержимое этого сценария может немного отличаться).

Упрощение способа вызова сценариев

Для запуска сценариев не обязательно использовать команду sh. Если добавить еще одну строку в сценарий intro и изменить его разрешения в файловой системе, его можно будет запускать непосредственно, без команды sh, как любые другие команды. Откройте сценарий intro в текстовом редакторе и измените его, как показано ниже:

>··#!/bin/bash

>··echo "Hello World"

>··echo $(which neqn)

>··cat $(which neqn)

Мы добавили единственную строку в самое начало файла, ссылающуюся на путь в файловой системе /bin/bash

. Эта строка называется shebang[1]. С ее помощью командная оболочка определяет, какую программу запустить для интерпретации сценария. Здесь в качестве интерпретатора мы указали bash. Вы можете встретить другие строки shebang, например, в сценариях на языке Perl (#!/usr/bin/perl) или Ruby (#!/usr/bin/env ruby).

После добавления строки нам еще необходимо установить права доступа к файлу, разрешающие выполнять его как обычную программу. Для этого в окне терминала выполните команды, показанные в листинге 0.6.

Листинг 0.6.


Рекомендуем почитать
Виртуальные  машины: несколько компьютеров в  одном

Применение виртуальных машин дает различным категориям пользователей — от начинающих до IT-специалистов — множество преимуществ. Это и повышенная безопасность работы, и простота развертывания новых платформ, и снижение стоимости владения. И потому не случайно сегодня виртуальные машины переживают второе рождение.В книге рассмотрены три наиболее популярных на сегодняшний день инструмента, предназначенных для создания виртуальных машин и управления ими: Virtual PC 2004 компании Microsoft, VMware Workstation от компании VMware и относительно «свежий» продукт — Parallels Workstation, созданный в компании Parallels.


Недокументированные и малоизвестные возможности Windows XP

Книга содержит подробные сведения о таких недокументированных или малоизвестных возможностях Windows XP, как принципы работы с программами rundll32.exe и regsvr32.exe, написание скриптов сервера сценариев Windows и создание INF-файлов. В ней приведено описание оснасток, изложены принципы работы с консолью управления mmc.exe и параметрами реестра, которые изменяются с ее помощью. Кроме того, рассмотрено большое количество средств, позволяющих выполнить тонкую настройку Windows XP.Эта книга предназначена для опытных пользователей и администраторов, которым интересно узнать о нестандартных возможностях Windows.


Тонкости реестра Windows Vista. Трюки и эффекты

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


Отладка систем реального времени

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


Iptables Tutorial 1.1.19

Iptables Tutorial 1.1.19Автор: (C) Oskar AndreassonCopyright (C) 2001-2002 by Oskar AndreassonПеревод: (C) Андрей КиселевПоследнюю версию документа можно получить по адресу: http://iptables-tutorial.frozentux.netfb2-документ отформатирован с использованием большого количества тегов и . Чтобы в «читалке» (в частности, Haali Reader) текст выглядел «красиво», настройте свойства соотвествующих стилей (emphasis и strong), изменив, например, их цвета или начертания. (прим. автора fb2-документа)


Свободные программы и системы в школе

Курс лекций, включенных в брошюру, знакомит читателя с популярными свободными программами и системами, полезными при преподавании информатики в средней школе. В обзор вошли основы открытых операционных систем, сведения о пакете «офисных» программ OpenOffice.org, коммуникационном пакете Mozilla, графическом редакторе GIMP, современных графических средах GNOME и KDE и других программах.Для преподавателей информатики и методистов, а также для студентов и аспирантов соответствующих специальностей.© 2002-3, Максим Отставнов.© 2002, Андрей Добровольский (раздел 3.1).Использован текст лекций, публиковавшихся автором в приложении к газете «Первое сентября» «Информатика» (http://inf.1september.ru) в 2002-3 г., материалы брошюры «Прикладные свободные программы в школе» (М.: 2003 г.), а также фрагменты статей, ранее публиковавшихся в журналах «Компьютерра» и «Домашний компьютер».Материалы, представленные в этой книге, также доступны в Интернет на странице www.otstavnov.com/fsft на условиях Свободной лицензии ГНУ на документацию (GNU FDL)