next up previous contents
Next: Переменные оболочки и окружение Up: Настройка оболочки Previous: Настройка оболочки

Скрипты командной оболочки

      Допустим, что вам часто приходится выполнять некоторую последовательность команд, и вы хотите сократить время ввода команд, сгруппировав их в одну "команду". Например, для объединения файлов chapter1, chapter2 и chapter3 в файл с именем book, выдачи количества строк и печати этого файла будет использоваться последовательность из трех команд:
/home/larry\# \tinput{cat chapter1 chapter2 chapter3 $>$ book} \\
/home/larry\# \tinput{wc -l book} \\
/home/larry\# \tinput{lp book}

Вместо того, чтобы вводить эти три команды с клавиатуры, их можно объединить в скрипт командной оболочки (shell script). Скрипт, который будет исполнять эти три команды, будет выглядеть примерно так:

\begin{verbatim}
#!/bin/sh
# Скрипт для создания и печати книги
cat chapter1 chapter2 chapter3 > book
wc -l book
lp book
Скрипты командной оболочки являются обычными текстовыми файлами; их можно создавать текстовыми редакторами, такими как emacs или vi, последний из которых описан в разд. 3.13.

Рассмотрим этот скрипт. Первая строка "#!/bin/sh" идентифицирует этот файл как скрипт и сообщает командной оболочке, как его исполнять. Эта строка сообщает оболочке, что этот файл надо передать на исполнение программе /bin/sh, т.е. самой программной оболочке. Данная строка будет важной потому, что в большинстве систем Linux файл /bin/sh содержит оболочку типа Bourne shell, например, bash, и данная строка принуждает работающую в системе оболочку выполнять этот скрипт, используя синтаксис, принятый в оболочке Bourne shell (а не синтаксис на основе языка C, к примеру). Даже если в качестве стартовой оболочки (login shell) используется tcsh, с данной строкой этот скрипт будет выполняться оболочкой Bourne shell.

  Вторая строка является комментарием (comment). Комментарии начинаются символом "#" и продолжаются до конца строки. Командная оболочка комментарии игнорирует. Обычно комментарии используются для того, чтобы указывать назначение скрипта и делать его более понятным.

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

    Для скриптов существенными являются права доступа. Если вы создаете скрипт командной оболочки, вам надо обеспечить, чтобы у вас были права на его исполнение. Когда создаются текстовые файлы, обычно по умолчанию право на исполнение файлу не дается, и это право надо назначить файлу явно. Процедура установки и изменения прав доступа изложена в разд. 3.10. Для краткости мы укажем, что в данном случае, если скрипт записан в файл makebook, можно использовать команду

/home/larry\# \tinput{chmod u+x makebook}
Эта команда даст вам право на исполнение скрипта в файле makebook.

Теперь для исполнения всех команд скрипта достаточно одной команды

/home/larry\# \tinput{makebook}


next up previous contents
Next: Переменные оболочки и окружение Up: Настройка оболочки Previous: Настройка оболочки

root
Sun Aug 29 12:01:30 MSD 1999